【问题标题】:ProGuard does Not Allow My Signed APK to runProGuard 不允许我签名的 APK 运行
【发布时间】:2018-05-26 08:12:50
【问题描述】:

我在 google、stackoverflow 等上进行了大量搜索,但还没有找到完美的解决方案。实际上我想防止我的应用程序被逆向工程,为了实现这一点,我使用了 proguard 并为我的项目定义了一些规则。定义上述规则集后,我签名的 apk 不会超出启动画面。如果除了 Proguard 之外还有其他解决方案,也欢迎使用。

proguard-rules.pro

-keep public class com.bbpos.emvswipe.* {
 public *** get*();
 public void set*(***);
}


-keep public class com.bbpos.wisepad.* {
 public *** get*();
  public void set*(***);
}

-dontwarn com.bbpos.**

-keep class com.github.mikephil.charting.** { *; }
-dontwarn io.realm.**

-keep public class * extends org.xmlpull.v1.XmlPullParser
-dontwarn org.xmlpull.**

-keep public class                                                                  com.google.android.gms.cast.
framework.media.TracksChooserDialogFragment
-dontwarn com.google.android.gms.cast.framework.**

-keep class com.google.android.gms.internal.** { *; }
-dontwarn com.google.android.gms.internal.zznv

-keep class org.codehaus.jackson.map.ObjectMapper
-dontwarn org.codehaus.jackson.**

-keep class okhttp3.internal.huc.HttpURLConnectionImpl
-dontwarn okhttp3.**

-keep class java.nio.file.*
-dontwarn java.nio.file.*

-keep class org.codehaus.mojo.animal_sniffer.*
-dontwarn org.codehaus.mojo.animal_sniffer.*

-keep public class org.simpleframework.**{ *; }
-keep class org.simpleframework.xml.**{ *; }
-keep class org.simpleframework.xml.core.**{ *; }
-keep class org.simpleframework.xml.util.**{ *; }
-dontwarn org.simpleframework.xml.stream.**

日志猫

W/dalvikvm: Failed processing annotation value
W/System.err: java.lang.NoSuchFieldError: APP_PREFERENCE
W/System.err:     at java.lang.reflect.Field.getAnnotation(Native Method)
W/System.err:     at java.lang.reflect.Field.getAnnotation(Field.java:209)
W/System.err:     at cbm.a(Unknown Source)
W/System.err:     at cbk.i(Unknown Source)
W/System.err:     at com.sparken.echallan.activity.SplashActivity.onCreate(Unknown Source)
W/System.err:     at android.app.Activity.performCreate(Activity.java:5264)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
W/System.err: java.lang.NullPointerException
W/System.err:     at com.sparken.echallan.activity.SplashActivity.onCreate(Unknown Source)
W/System.err:     at android.app.Activity.performCreate(Activity.java:5264)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088)
W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2302)
W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)

【问题讨论】:

  • defined some set of rules to my project -> 如果不通过代码库,很难看出哪些文件受到了影响。我的第一个建议是禁用您添加的所有自定义规则,并为其 github 页面中指定的每个库仅添加标准 proguard 规则并检查生成的构建。之后继续进行进一步的定制。

标签: android reverse-engineering obfuscation


【解决方案1】:

尝试从您的 progaurd-rules 文件中删除所有出现的公共单词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多