android studio打包遇到的问题

在使用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//签名文件
    }
}

猜你喜欢

转载自blog.csdn.net/xiaoyi848699/article/details/79105216