2

我已输入并重proguard.config=proguard.cfg命名keepclasseswithmembernameskeepclasseswithmembers,它已成功导出已签名.apk的 .
如何确定 proguard 是否成功混淆了代码?

我错过了什么还是去市场好?

该线程不应仅限于源代码建议。任何和所有关于将应用程序发布到 android 市场的建议不仅会受到我的赞赏,而且任何其他可能会将他们的第一个应用程序发布到市场并在 SO 上研究这个主题的新手都会很感激。

4

4 回答 4

6

查看proguard文件夹:您将看到文件,如mapping.txt,等。此外,如果您查看文件夹dump.txt,您将看到名称和名称。usage.txtlogcatClassMethodobfuscated

在此处输入图像描述

有关更多详细信息,请访问此处

另一种核心方法是使用dex2jarjava decompiler反编译你的应用程序,看看你会成功多少。如果obfuscation进展顺利,你会发现这是不可能的。

于 2012-11-28T14:49:47.997 回答
3

当您在发布模式下构建应用程序时,ProGuard 将运行。如果生成以下文件,您可以告诉它成功混淆了代码

  • 转储文件
  • 映射.txt
  • 种子.txt
  • 用法.txt

这些文件的位置是:

<project_root>/bin/proguard if you are using Ant.
<project_root>/proguard if you are using Eclipse.

有关更多详细信息并了解这些文件的内容,请查看http://developer.android.com/tools/help/proguard.html

于 2012-11-28T14:46:20.067 回答
0

将 apk 转换为 jar 并解压。如果您看到文件名未更改,则 proguard 不会影响代码

祝你好运

于 2012-11-28T14:45:34.453 回答
0

使用这个 gradle 任务。这个 gradle 任务将允许您自动检测 Binoy Babu 和monkybonk05 提到的文件。这不需要目视检查。如果文件不存在,您的构建将失败。通常在应用程序的发布版本上完成

tasks.whenTaskAdded { task ->
    if (task.name == 'assembleFlavorRelease') {
        task.finalizedBy checkProguardFlavor
    }
}
task checkProguardFlavor << {
    assert file("./build/outputs/mapping/Flavor/release/dump.txt").exists()
    assert file("./build/outputs/mapping/Flavor/release/mapping.txt").exists()
}
于 2015-10-05T23:14:27.123 回答