这是我在Android Studio中的第一个项目,我的应用程序代码没有混淆。我在build.gradle文件中使用此配置:
我正在使用Build> Generate Signed APK ...检查Run Proguard。而且,当我使用Apk_OneClick.v4.2进行测试时,我的代码完全易于理解:
请帮我。 :(
您可能实际上并未通过签名向导签署APK的发布版本。您可以使用以下命令从命令行构建发布APK:
./gradlew assembleRelease
或者您可以从Build Variants视图中选择发布变体并从GUI构建它:
您可以为proguard实现配置build.gradle文件。它可以是模块级别或项目级别。
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以及其他版本的调试作为minifyEnabled true
。
将您的proguard-rules.txt文件复制到模块或项目文件夹的根目录中
$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt
您可以根据需要更改文件的名称。配置完成后,使用三个可用选项之一根据buildType生成构建
assembleRelease/assemble(#your_defined_buildtype)
Linux ./gradlew assembleRelease or assemble(#your_defined_buildtype)
Windows 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
注意:现在而不是
runProguard false
你需要使用
minifyEnabled false
尝试将'proguard-rules.txt'文件重命名为'proguard-android.txt'并删除gradle文件中对'proguard-rules.txt'的引用。 getDefaultProguardFile(...)
调用引用了一个不同的默认proguard文件,一个由Google提供,而不是在您的项目中。所以也删除它,这样gradle文件在这里读取:
buildTypes {
release {
runProguard true
proguardFile 'proguard-android.txt'
}
}
这里的其他答案是关于使用proguard的很好的参考。但是,我没有看到我讨论的一个问题,我遇到了一个令人费解的问题。生成一个签名版本.apk后,它会放在你的应用程序的/release
文件夹中,但我的应用程序有一个不在/release
文件夹中的apk。因此,我花了几个小时反编译错误的apk想知道为什么我的proguard更改没有影响。希望这有助于某人!