在使用许多外部库签名apk时,Proguard返回错误代码1错误

时间:2015-07-14 09:13:40

标签: java android eclipse android-proguard

我正在使用Eclipse for Mac。 当我想导出一个签名的apk时,我得到一个" Proguard返回错误代码1.请参阅console"错误。

  • 我的项目根文件夹中有这两个文件: " proguard的-android.txt"和" project.properties"
  • 在project.properties里面我有:

    目标=机器人-17 proguard.config = proguard的-project.txt android.library.reference.1 = .. /谷歌播放,services_lib android.library.reference.2 = .. / FacebookSDK

当我尝试创建一个签名的apk时,我得到的许多其他警告,我得到:

com.my.app.va.debug.ConfigureLog4j: can't find referenced class de.mindpipe.android.logging.log4j.LogConfigurator

com.my.app.va.debug.HockeyAppHelper: can't find referenced class net.hockeyapp.android.ExceptionHandler

我已将这些行放入" proguard-android.txt" ,但错误仍然存​​在:

-keep public class de.mindpipe.android.logging.**
-dontwarn de.mindpipe.android.logging.**
-keep public class net.hockeyapp.**
-dontwarn net.hockeyapp.**

我可能做错了什么?

更新 我更改了#34; proguard-android.txt"的文件名。到" proguard-project"并将此添加到我的Proguard,以及"引用的类"错误消息消失了:

-dontwarn de.mindpipe.android.**
-keep public class de.mindpipe.android.**

-dontwarn net.hockeyapp.android.**
-keep public class net.hockeyapp.android.**

Neverthless ......这是一个真正的解决方案吗?或者,我只是隐藏了这个问题吗?

其他警告仍然存在:

Warning: com.facebook.widget.UserSettingsFragment: can't find referenced method 'android.support.v4.app.FragmentActivity getActivity()' in class com.facebook.widget.UserSettingsFragment
Warning: there were 138 unresolved references to program class members.

1 个答案:

答案 0 :(得分:0)

如果使用Eclipse,则应在 project.properties 中定义proguard文件名;如果使用Gradle或Android Studio,则应在build.gradle中定义。

它通常包含 proguard.config = $ {sdk.dir} /tools/proguard/proguard-android.txt:proguard-project.txt

您还应该包含以下内容:

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 

http://developer.android.com/tools/help/proguard.html的更多官方信息。

其他一些相关的stackoverflow讨论:How to config my proguard-project.txt file to remove just LogsHow to automatically generate proguard-android.txt?