android - ProGuard 使我的应用程序崩溃

标签 android actionbarsherlock obfuscation proguard holoeverywhere

我刚刚完成了我的应用程序,所以我想用 ProGuard 对其进行混淆。 该应用程序使用 holoeverywhere 和 Action Bar Sherlock 库,因此我尝试将其告知 ProGuard。 我使用的是 Eclipse,这是 project.properties 文件:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available         properties: sdk.dir, user.home):
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-19
android.library.reference.1=..\\HoloEverywhere Addon Preferences

我没有添加任何内容,也没有删除任何内容。

这是我的 proguard-project.txt:

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-keep class com.actionbarsherlock.** 
-keep class org.holoeverywhere.**
-libraryjars adt-bundle-windows-x86_64-20130917\sdk\platforms\android-19\android.jar
-libraryjars actionbarsherlock\libs\android-support-v4.jar
-libraryjars HoloEverywhere Addon Preferences\bin\holoeverywhere addon preferences.jar
-libraryjars HoloEverywhere Library\bin\holoeverywhere library.jar
-libraryjars actionbarsherlock\bin\actionbarsherlock.jar

如果有帮助,这是我的依赖项的屏幕: enter image description here

导出应用程序时,我没有收到错误或警告,但当我将其安装到 Android 手机上时,打开它,它崩溃了。 这是堆栈跟踪:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.project/com.my.project.FirstPage}: java.lang.RuntimeException: java.lang.NoSuchMethodException: AddonSherlock$HoloActionBarSherlockCompat(Activity,int)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: AddonSherlock$HoloActionBarSherlockCompat(Activity,int)
at com.actionbarsherlock.ActionBarSherlock.a(Unknown Source)
at org.holoeverywhere.addon.AddonSherlock$AddonSherlockA.c(Unknown Source)
at org.holoeverywhere.addon.AddonSherlock$AddonSherlockA.a(Unknown Source)
at android.support.v4.app.aw.a(Unknown Source)
at android.support.v4.app.aw.a(Unknown Source)
at org.holoeverywhere.addon.IAddonBasicAttacher.a(Unknown Source)
at org.holoeverywhere.app.Activity.a(Unknown Source)
at android.support.v4.app._HoloActivity.a(Unknown Source)
at android.support.v4.app._HoloActivity.setContentView(Unknown Source)
at com.my.project.FirstPage.onCreate(Unknown Source)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Caused by: java.lang.NoSuchMethodException: AddonSherlock$HoloActionBarSherlockCompat(Activity,int)
at java.lang.Class.getMatchingConstructor(Class.java:643)
at java.lang.Class.getConstructor(Class.java:472)
... 23 more

如何修复它?

最佳答案

-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }

关于android - ProGuard 使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21859896/

相关文章:

android - FFMPEG 中需要哪些参数才能将 (HLS) 流式传输到现代 Android 设备?

android - OpenTok Android Lib 如何以圆形显示发布者 View (相机预览)

android - ActionBar 挡住了 listview 的第一行

android - 如何为 Sherlock fragment 创建对话 fragment ?

android - 如果它包含一个在混淆器中带有注释的字段,如何保持类的成员不受影响

c# - 如何在 .NET 应用程序中隐藏加密 key ?

android - 在订阅 observable 之后执行操作

javascript - 使用按钮关闭平板电脑上的网络应用程序

android - 在实现 Holo Everywhere 和 Sherlock ActionBar 后将 Buttons 和 EditText 主题设置为 Holo?

c - "Simplify"到一行