9

我添加proguard.config=proguard.cfg到我的 default.properties 文件并在我的项目根目录中有一个 proguard.cfg 文件。如果我现在在 Eclipse 中使用 Export as Android Application,我会收到以下错误:

[2011-01-27 11:11:37 - Application] Warning: class [classes/com/package.Class.class] unexpectedly contains class [com/package.Class]
[2011-01-27 11:11:37 - Application] Warning: class [classes/com/package.Class2.class] unexpectedly contains class [com/package.Class2]
[2011-01-27 11:11:37 - Application] Note: there were 145 duplicate class definitions.
[2011-01-27 11:11:37 - Application] Warning: there were 146 classes in incorrectly named files.
[2011-01-27 11:11:37 - Application]          You should make sure all file names correspond to their class names.
[2011-01-27 11:11:37 - Application]          The directory hierarchies must correspond to the package hierarchies.
[2011-01-27 11:11:37 - Application]          If you don't mind the mentioned classes not being written out,
[2011-01-27 11:11:37 - Application]          you could try your luck using the '-ignorewarnings' option.
[2011-01-27 11:11:37 - Application] java.io.IOException: Please correct the above warnings first.
[2011-01-27 11:11:37 - Application]     at proguard.InputReader.execute(InputReader.java:133)
[2011-01-27 11:11:37 - Application]     at proguard.ProGuard.readInput(ProGuard.java:195)
[2011-01-27 11:11:37 - Application]     at proguard.ProGuard.execute(ProGuard.java:78)
[2011-01-27 11:11:37 - Application]     at proguard.ProGuard.main(ProGuard.java:499)

似乎我的类以某种方式保存在一个类子文件夹中,但 Proguard 使用这个类子文件夹作为一个包。因此,Proguard 无法理解类的定义。

这是我的 SDK 设置的问题吗?还是我的 Proguard 配置中有错误导致此问题?

4

3 回答 3

1

我从去年五月对我有用的东西稍微改变了 proguard.cfg,现在它可以工作了:

-injars bin

-injars bin/classes

我还必须清理一点——删除 Junit(在这个项目中没有使用)和兼容性库(我可能已经忽略了,但选择完全放弃)。

于 2011-10-26T02:23:57.737 回答
0

获取混淆apk的步骤:

1) 从“http://sourceforge.net/projects/proguard/files/”下载最新的proguard。当前最新版本是proguard4.7

2) 将“C:\Program Files (x86)\Android\android-sdk\tools\proguard”的“bin”和“lib”文件夹替换为最新下载的proguard文件夹。

3) 检查 Eclipse 中的 SDK 位置是否有空格,然后转到窗口 > 首选项 > Android。如果有空格,则将其替换为:

    c:\Progra~2\android\android-sdk (for windows 64-bit)
    c:\Progra~1\android\android-sdk (for windows 32-bit)

4) 检查 proguard.cfg 文件是否在项目的根文件夹中,并在 android 项目的 project.properties 文件中添加“proguard.config=proguard.cfg”。

5) 现在导出您的项目以获得混淆的 apk。

我希望它会有所帮助。

于 2012-04-17T17:18:01.830 回答
0

现在很方便,我刚刚更新到新的 ddms Eclipse 插件版本:Android DDMS 9.0.0.v201101191456-93220 并将我的 SDK 更新到包含 Honeycomb 的新版本,问题似乎消失了。

于 2011-01-27T11:42:00.117 回答