2

我正在为 Mac 使用 Eclipse。当我想导出已签名的 apk 时,我收到“Proguard 返回错误代码 1。请参阅控制台”错误。

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

    target=android-17 proguard.config=proguard-project.txt android.library.reference.1=../google-play-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.**

我可能做错了什么?

更新: 我已将文件名从“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.**

尽管如此...这是一个实际的解决方案吗?或者,我只是在隐藏问题?

其他警告仍然存在:

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.
4

1 回答 1

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 讨论:如何配置我的 proguard-project.txt 文件以仅删除日志以及如何自动生成 proguard-android.txt?

于 2015-07-14T13:30:39.383 回答