6

在构建我的 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 都存在,第一个是非混淆的,而第二个是。

不确定它是否相关,但项目本身具有非典型结构。这是因为我们拥有庞大的 android 代码库,其中包含 40 多个 android 应用程序。我们正在尝试与现有的基于 eclipse 的构建并排创建一个基于 gradle 的构建流程。

如果一切顺利,我们打算将文件结构更改为更原生的 gradle,并开始使用风味和构建类型来淘汰我们创建的许多库,以适应缺乏风味等问题。

上面的项目 E 依赖于这样的库链:

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

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

4

1 回答 1

7

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

您可以在启用 proguard 后进行干净的构建,它会解决这个问题。

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

于 2013-07-22T21:35:35.740 回答