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

Guy*_*Guy 6 android build proguard gradle android-build

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

   buildTypes {
     release {
        runProguard true
        proguardFile 'proguard-project.txt'
        proguardFile '../common/proguard-shared.txt'
        proguardFile getDefaultProguardFile('proguard-android.txt')
     }
   }
Run Code Online (Sandbox Code Playgroud)

一切都建立好但是当我反汇编生成的dex文件时,事实证明混淆和非混淆的文件都在那里.

例如,common.Base64和common.a都存在,第一个是非混淆的,而第二个是.

不确定它的相关性,但项目本身有一个非典型的结构.这是我们拥有超过40个Android应用程序的大型Android代码库的结果.我们正在尝试创建一个基于gradle的构建流程,它与现有的基于eclipse的构建并行.

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

上面的项目E依赖于这样的一系列库:

E - > D - > C - > B - > A.

例如,E项目取决于库D,它依赖于库C ...一直到A.

Xav*_*het 7

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

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

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

  • ```gradle clean assembleRelease```能为你工作吗? (2认同)