徹底解決錯誤Duplicate files copied in APK xxx/xxx/xxx/LICENSE.txt

問題

在安卓gradle打包過程中
主工程與子工程在各自的libs目錄下放了相同的jar包。
使用Android Studio調試的時候會報錯
Duplicate files copied in APK xxx/xxx/xxx/LICENSE.txt
網上通常的做法是在build.gradle裏忽略掉這些文件

android {  
    packagingOptions {
        exclude 'META-INF/LICENSE.txt' 
    }  
}

然而我gradle命令編譯時候會出現下列錯誤
Duplicate zip entry [xxx.jar]

解決方法

出現這個問題的主要原因是,兩個工程都依賴了相同的包,回把兩個相同的jar都打入最終的apk,會曝出重複copy的錯誤
所以最好的方式就是依賴jar的時候 使用provided代替compile
單獨建立一個lib目錄,比如叫provided_libs



dependencies {
    provided fileTree(dir: 'provided_libs', include: ['*.jar'])
    provided files(‘path/xx.jar')
}

例如我把gson.jar放在provided_libs下可以
provided fileTree(dir: 'provided_libs', include: ['*.jar'])
或者
provided files(‘path/provided_libs/gson.jar')

provided與compile的區別

compile會把依賴的lib打包入最終的apk中,provided只是在編譯的時候依賴,不會把lib打入最終的apk中。 
發佈了30 篇原創文章 · 獲贊 62 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章