Answers:
您可能实际上并没有通过签名向导来签署APK的发布版本。您可以使用以下命令从命令行构建发行版APK:
./gradlew assembleRelease
或者,您可以从Build Variants视图中选择发布版本,然后从GUI进行构建:
您可以配置build.gradle文件以实现proguard。它可以在模块级别或项目级别。
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
所示配置是针对调试级别的,但是您可以在buildTypes内部编写自己的构建风格,如下所示:
myproductionbuild{
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
最好将调试与minifyEnabled false
productionbuild和其他build一起使用minifyEnabled true
。
将您的proguard-rules.txt文件复制到模块或项目文件夹的根目录中,例如
$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt
您可以根据需要更改文件名。配置后,根据buildType使用三个可用选项之一来生成您的构建
转到右侧面板中的gradle任务,并assembleRelease/assemble(#your_defined_buildtype)
在模块任务下搜索
转到左侧面板中的“ Build Variant”,然后从下拉列表中选择“ Build”
转到文件资源管理器中的项目根目录,然后打开cmd / terminal并运行
的Linux ./gradlew assembleRelease or assemble(#your_defined_buildtype)
视窗 gradlew assembleRelease or assemble(#your_defined_buildtype)
您可以在module / build目录中找到apk。
链接中提供了有关配置和proguard文件位置的更多信息
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard
尝试将您的“ proguard-rules.txt”文件重命名为“ proguard-android.txt”,并在gradle文件中删除对“ proguard-rules.txt”的引用。该getDefaultProguardFile(...)
调用引用了一个不同的默认proguard文件,该文件是Google提供的,而不是您项目中的默认文件。因此也将其删除,以便gradle文件如下所示:
buildTypes {
release {
runProguard true
proguardFile 'proguard-android.txt'
}
}
这是您需要在proguard-rules.pro中添加的一些最常见的Proguard规则在Android Sutdio文件中。
牛油刀
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
@butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
@butterknife.* <methods>;
}
翻新
-dontwarn retrofit.**
-keep class retrofit.** { *; }
-keepattributes Signature
-keepattributes Exceptions
OkHttp3
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-keep class sun.misc.Unsafe { *; }
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
格森
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
代码混淆
-keepclassmembers class com.yourname.models** { <fields>; }