Android库项目-模糊处理

Android库项目-模糊处理,android,jar,obfuscation,android-library,Android,Jar,Obfuscation,Android Library,我正在准备重新分发Android库,它的代码必须被混淆。我读过一些关于这个主题的文章,我决定使用Android库项目。它将作为一个jar分发(在/bin目录中自动创建(我正在使用eclipse和最新的ADT)。所有资源(布局、绘图等)将在单独的包中分发,开发人员必须手动将其添加到项目中(与清单权限等相同).所以到目前为止,一切都正常-添加到我的clean项目中的jar做了它应该做的事情,它看到了添加到我的基础项目中的资源。但问题是当我想混淆这个库jar(在库项目的/bin目录中自动生成的那个)时

我正在准备重新分发Android库,它的代码必须被混淆。我读过一些关于这个主题的文章,我决定使用Android库项目。它将作为一个jar分发(在/bin目录中自动创建(我正在使用eclipse和最新的ADT)。所有资源(布局、绘图等)将在单独的包中分发,开发人员必须手动将其添加到项目中(与清单权限等相同).所以到目前为止,一切都正常-添加到我的clean项目中的jar做了它应该做的事情,它看到了添加到我的基础项目中的资源。但问题是当我想混淆这个库jar(在库项目的/bin目录中自动生成的那个)时。因为Eclipse只在常规Android项目中支持使用Proguard进行混淆(在构建APK时),它不为Android库项目提供模糊处理(jar没有模糊处理,即使在Project.properties文件中添加了行“proguard.config=proguard.cfg”)我认为模糊处理这样一个jar的最好方法是在Eclipse外部使用proguard,但我不知道为什么我总是得到“空输出jar”-即使在使用我在常规项目中经常使用的参数时,在我决定从中提取库之前。使用proguard 4.6、4.7、4.8进行了测试,效果相同。如果有人能向我展示proguard.conf示例,允许混淆android库项目,我将不胜感激(例如,基于facebook Android Library项目,可在此处下载:)。我们将感谢您的每一步指导


提前感谢!

“-dontshrink”将保留所有类。为了更具选择性,请使用各种“-keep”选项。

“在/bin目录中自动创建”--该JAR对分发不安全。为什么不?如果你的意思是它没有被混淆-我知道,这正是我想要做的。但没有被混淆,它工作正常。“为什么不?”--因为谷歌是这么说的。目前还不支持从Android库项目中创建可再发行的JAR。那个JAR是构建过程的副作用;谷歌并不打算支持重新分发。@commonware:谷歌也不支持非法活动,但它们仍然可以通过t他们提供的工具。你能澄清一下为什么这个jar“不适合分发”吗?如果未来的SDK更改使类似的过程无法进行,可能会找到另一种创建jar的方法,但我看不出当前方法会创建有缺陷或不安全的jar的原因。@commonware:另外,你写的内容似乎与此相反:(“(…)新的库项目功能可以将每个库项目生成它自己的JAR文件。)。当然,它没有“可再发行”这个词,但为什么不呢?谢谢。“-dontshrink”完成了这项工作,但我也会尝试调整“keep”选项。我得到了“找不到超级类或接口android.app.Fragment”,“找不到超类或接口android.app.ActionBar$TabListener”,“找不到引用的类a ndroid.app.ActionBar$Tab”像这么多警告。我在android 3.0及以上版本中使用带有片段的ActionBar。你能给我一些建议如何使用Proguard进行混淆吗?