Android Gradle 构建生成的 apk 包含混淆和非混淆类

标签 android build gradle proguard android-build

在构建我的 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/

相关文章:

gradle - 如何在gradle的配置中使用当前版本

希伯来语的android-TextToSpeech

Android View 可见性消失

java - GCM 推送通知,消息从移动设备推送到 GCM 服务器

java - 使用 contrib 模块和 Java 包装器构建 OpenCV

android - 在最新检查期间,无法捕获任务 ':app:transformClassesWithDexBuilderForDebug'属性 '$1'的输入文件的快照。

android - android 中的 CountDownLatch 问题

node.js - Meteor 构建在部署到 Heroku 时中断

java - 在 netbeans 7.1.2 中构建项目时出现问题?

gradle - 如何在gradle中的Exec任务中使用项目中的变量值?