Android Gradle构建结果apk包含混淆和非混淆的类

时间:2013-07-22 08:25:00

标签: android build gradle proguard android-build

在构建我的android项目时,我已将以下内容添加到build.gradle文件中以启用proguard:

   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代码库的结果。 我们正在尝试创建一个基于gradle的构建流程,它与现有的基于Eclipse的构建并行。

如果一切顺利,我们打算将文件结构更改为更本机的gradle,并开始使用flavor和build-types来解决我们创建的许多库以适应缺乏风味等等。

以上项目E依赖于这样的一系列图书馆:

E - > D - > C - > B - >甲

e.g。 E项目取决于库D,它依赖于库C ......一直到A。

1 个答案:

答案 0 :(得分:7)

在研究之后,我发现如果你首先在没有启用proguard的情况下构建,然后在启用它的情况下构建它,这就是一个问题。这是由于dex的增量模式。

启用proguard后你可以做一个干净的构建,它会解决这个问题。

编辑:我之前曾表示你可以在dex中禁用增量模式,但事实证明这实际上没有帮助!