android studio打包遇到的問題
阿新 • • 發佈:2018-11-10
在使用android studio打包新增程式碼混淆過程中遇到的問題
Warning:Exception while processing task java.io.FileNotFoundException: F:\...\app\build\intermediates\proguard-rules\release\aapt_rules.txt (系統找不到指定的路徑。)
解決方案如下:只需要在選單欄選擇build --> Clean Project ,然後在build --> Make Project即可,然後就能在這個路徑下找到這個aapt_rules.txt檔案了,再次build apk就不會報錯了哦(注意:混淆的是release)
Warning:Exception while processing task java.io.IOException: The same input jar [...\app\libs\alipaySdk-20170725.jar] is specified twice.
解決方案如下:
開啟 proguard-rules.pro 或者是proguard.cfg
在所有的-libraryjars前插入# 成 #-libraryjars x.jar
造成這個的原因是
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
}
這個裡面已經把所有的jar 到引入了。所以在打包的時候就不需要再次在proguard-rules.pro 或者是proguard.cfg 中再次引入了。
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
解決方案如下:
在proguard-rules.pro檔案裡面加上一句:-ignorewarnings (最好把上面的Warning:Exception問題都解決掉,不然,可能會導致打包後無法正常使用,不需要匯入的jar去掉 對第三方jar 在proguard-rules.pro資料夾夾新增-keep 和-dontwarn,比如下面的:
-dontwarn javax.annotation.** -dontwarn javax.inject.** # OkHttp3 -dontwarn okhttp3.logging.** -keep class okhttp3.internal.**{*;} -dontwarn okio.** # Retrofit -dontwarn retrofit2.** -keep class retrofit2.** { *; } -keepattributes Signature -keepattributes Exceptions # RxJava RxAndroid -dontwarn sun.misc.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } # Gson -keep class com.google.gson.stream.** { *; } -keepattributes EnclosingMethod -keep class com.xy.example.data.entity.**{*;}#這是你定義的實體類(使用RxJava+retrofit必須加,不然無法解析資料)
)
簽名打包修改app下的build.gradle檔案
buildTypes { release { // 不顯示Log buildConfigField "boolean", "LOG_DEBUG", "false" //啟用multidex的支援 multiDexEnabled true minifyEnabled true//是否啟用混淆程式碼的功能 zipAlignEnabled true // Zipalign優化 壓縮對齊生成的apk包 shrinkResources true// 移除無用的resource檔案 //指定混淆規則,需要壓縮優化的混淆要把proguard-android.txt換成proguard-android.txt proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.myConfig//簽名檔案 } debug { minifyEnabled false zipAlignEnabled true // Zipalign優化 shrinkResources false // 移除無用的resource檔案 signingConfig signingConfigs.myConfig//簽名檔案 } }