这里的其他答案是关于使用proguard的很好的参考 . 但是,我没有't seen an issue discussed that I ran into that was a mind bender. After you generate a signed release .apk, it' s放在你的应用程序的 /release 文件夹中,但我的应用程序有一个不在 /release 文件夹中的apk . 因此,我花了几个小时反编译错误的apk想知道为什么我的proguard更改没有影响 . 希望这有助于某人!
5 回答
注意:现在而不是
你需要使用
尝试将'proguard-rules.txt'文件重命名为'proguard-android.txt',并删除gradle文件中对'proguard-rules.txt'的引用 .
getDefaultProguardFile(...)
调用引用了一个不同的默认proguard文件,一个由Google提供,而不是在您的项目中 . 所以也删除它,这样gradle文件在这里读取:您可能实际上并未通过签名向导签署APK的发布版本 . 您可以使用以下命令从命令行构建发布APK:
或者您可以从 Build Variants 视图中选择发布变体并从GUI构建它:
您可以为proguard实现配置build.gradle文件 . 它可以是模块级别或项目级别 .
显示的配置是针对调试级别的,但您可以在buildTypes中编写自己的构建样式,如下所示:
最好将
minifyEnabled false
和productionbuild以及其他构建的调试作为minifyEnabled true
.将您的proguard-rules.txt文件复制到模块或项目文件夹的根目录中
$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt
您可以根据需要更改文件的名称 . 配置完成后,使用三个可用选项之一根据buildType生成构建
转到右侧面板中的gradle任务,在模块任务下搜索
assembleRelease/assemble(#your_defined_buildtype)
转到左侧面板中的构建变量,然后从下拉列表中选择构建
转到文件资源管理器中的项目根目录,然后打开cmd / terminal并运行
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
这里的其他答案是关于使用proguard的很好的参考 . 但是,我没有't seen an issue discussed that I ran into that was a mind bender. After you generate a signed release .apk, it' s放在你的应用程序的
/release
文件夹中,但我的应用程序有一个不在/release
文件夹中的apk . 因此,我花了几个小时反编译错误的apk想知道为什么我的proguard更改没有影响 . 希望这有助于某人!