在构建我的 android 项目时,我在 build.gradle 文件中添加了以下内容以启用混淆器:
buildTypes {
release {
runProguard true
proguardFile 'proguard-project.txt'
proguardFile '../common/proguard-shared.txt'
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
一切都构建正常,但是当我反汇编生成的 dex 文件时,事实证明混淆文件和非混淆文件都在那里。
比如common.Base64和common.a都存在,第一个是非混淆的,第二个是。
不确定是否相关,但项目本身具有非典型结构。 这是因为我们拥有一个包含 40 多个 Android 应用程序的大型 Android 代码库。 我们正在尝试与现有的基于 eclipse 的构建并排创建基于 gradle 的构建流程。
如果一切顺利,我们打算将文件结构更改为更原生的 gradle,并开始使用风格和构建类型来摆脱我们创建的许多库,以适应缺乏风格等问题。
上面的项目 E 依赖于这样的库链:
E -> D -> C -> B -> A
例如E 项目依赖于库 D,而库 D 又依赖于库 C ... 一直到 A。
最佳答案
在调查之后,我发现如果您首先在没有启用混淆器的情况下构建然后在启用混淆器的情况下构建它,这是一个问题。这是由于dex的增量模式。
您可以在启用混淆器后进行干净构建,它会解决这个问题。
编辑:我之前指出您可以在 dex 中禁用增量模式,但事实证明这实际上没有帮助!
关于Android Gradle 构建生成的 apk 包含混淆和非混淆类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782912/