我在我的应用程序上运行了proguard工具来进行混淆.我知道,当混淆发生时,proguard会缩小并优化应用程序.因此,在混淆应用程序正确打开后,然后当我尝试登录时崩溃.我得到的最好的是这个日志,因为我连接了设备.
10-03 11:12:47.384: E/AndroidRuntime(15058): FATAL EXCEPTION: AsyncTask #1
10-03 11:12:47.384: E/AndroidRuntime(15058): java.lang.RuntimeException: An error     occured while executing doInBackground()
10-03 11:12:47.384: E/AndroidRuntime(15058):    at     android.os.AsyncTask$3.done(AsyncTask.java:299)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at     java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.lang.Thread.run(Thread.java:856)
10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.winwin.a.d.c.doInBackground(UnkNown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.winwin.a.d.c.doInBackground(UnkNown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-03 11:12:47.384: E/AndroidRuntime(15058):    ... 4 more
10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.winwin.a.c.d.<clinit>(UnkNown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058):    ... 8 more
10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.b.a.c.ad.<clinit>(UnkNown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058):    ... 9 more
10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.NoSuchFieldError: ANY
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.lang.class.getDeclaredAnnotation(Native Method)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at java.lang.class.getAnnotation(Class.java:260)
10-03 11:12:47.384: E/AndroidRuntime(15058):    at com.b.a.c.f.ag.<clinit>(UnkNown Source)

我原以为这是因为proguard删除了一些它认为不必要的类或方法,因此导致了崩溃.我做的是这次我再次运行proguard包括

-dontobfuscate

所以我希望这个工具能够缩小和优化,但不要混淆,这样我就可以得到一个关于缺少什么的正确读数.但是,当我使用该工具生成apk时,这次它完全运行.问题是它没有被混淆.

所以我现在不知道该怎么做.

有没有人有任何想法?

*编辑*

这是我的配置文件

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:

-libraryjars libs/crashlytics.jar

-keep class com.facebook.** {
*;
}


-keepattributes Signature

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.broadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

keep all classes that might be used in XML layouts
-keep public class * extends android.view.View
-keep public class * extends android.app.Fragment
-keep public class * extends android.support.v4.Fragment

-keepattributes *Annotation*,EnclosingMethod

-keep class com.winwin.** { *; }
-keepnames class org.codehaus.jackson.** { *; }


-dontoptimize
-dontshrink

keep all public and protected methods that Could be used by java reflection
-keepclassmembernames class * {
 public protected <methods>;
}

-keepclasseswithmembernames class * {
native <methods>;
}

-keepclasseswithmembernames class * {
 public <init>(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembernames class * {
  public <init>(android.content.Context,android.util.AttributeSet,int);
}


-keepclassmembers enum * {
  public static **[] values();
  public static ** valueOf(java.lang.String);
 }

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

 -dontwarn **CompatHoneycomb
 -dontwarn org.htmlcleaner.*

 -dontwarn com.fasterxml.jackson.databind.ext.**

 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 *;
}

==========================

这是我的项目浏览器窗格

android-support-v7-appcompat /
ConverserSdk /
脸书/
google-play-services_lib /
图书馆 /
主要/
主页/
SlidingMenu

所以我的主要依赖于其他每个包.

解决方法

您需要保存一些类以免被混淆. Android项目的典型proguard配置文件如下所示.此链接应该有用: Proguard for Android
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.broadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * implements java.io.Serializable
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.ListFragment



-keep public class org.spongycastle.** {
  <fields>;
  <methods>;
}

-keep public class org.apache.** {
  <fields>;
  <methods>;
}

-ignorewarnings

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context,int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}


-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readobject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

在appuard混淆之后,Android应用程序崩溃了的更多相关文章

  1. android – 具有动态适配器更改的MultiAutoCompleteTextView

    我的Activity中有一个MultiAutoCompleteTextView小部件,它有一个ArrayAdapter由基于Web的呼叫的结果填充.当用户在textview中键入字符时,此适配器的列表应在后台更新.实现这个的最佳方法是什么?我已经尝试使用AsyncTask在后台下载字符串列表,但是从“非原始线程”调用了notifyDataSetChanged().而且,这似乎有点迂

  2. android – 基于JVM的语言,没有语言运行时

    ProGuard可以删除特定程序中未使用的部分运行时.如果速度和时间非常关键,另一种方法是使用NDK.

  3. Android studio – Faild to resolve:com.android.support:design:26.0.1错误

    我有一个错误叫:我的androidstudio版本是3.0beta1.我的gradle文件如下:我想把“设计”放到我的项目中,但我不能这样做.我该怎么做?解决方法尝试改变和或者不要更改为bulidToolsversion更改依赖项

  4. Android proguard问题:路径可能不是null或空字符串.路径=“空”

    在设置之前,每件事情都很好minifyEnabledtrue和shrinkResourcestrue设置这些值后,每当我运行项目时,我都会收到此错误:这个错误意味着什么错误:路径可能不是null或空字符串.路径=“空”这是build.gradle:我试着把每一个该死的东西都放在proguard.pro中:但仍然无法运行我的应用程序.我出错的任何帮助.解决方法两种解决方案>使用以下类路径.(当我使用

  5. android – Google Play服务和Firebase的ProGuard问题

    或者如何修复此firebase消息问题.更新#1应用程序现在随机崩溃与以下堆栈跟踪.解决方法当您忘记更新firebase依赖项时,通常会出现此错误.Firebase引用必须始终与google依赖项的版本相同.这会遇到你的错误:这解决了错误:希望它能解决你的问题

  6. 在appuard混淆之后,Android应用程序崩溃了

    我在我的应用程序上运行了proguard工具来进行混淆.我知道,当混淆发生时,proguard会缩小并优化应用程序.因此,在混淆应用程序正确打开后,然后当我尝试登录时崩溃.我得到的最好的是这个日志,因为我连接了设备.我原以为这是因为proguard删除了一些它认为不必要的类或方法,因此导致了崩溃.我做的是这次我再次运行proguard包括所以我希望这个工具能够缩小和优化,但不要混淆,这样我就可以得

  7. Android Studio 3.2上的AndroidX – 运行应用时的VerifyError

    将我的应用迁移到AndroidStudio3.2上的AndroidX库.在调试中运行时,一切都按预期工作但如果我生成一个签名的APK,使用Proguard进行模糊处理–我收到此错误:我已经尝试排除所有AndroidX库:但问题仍然存在,除非我基本上取消使用的混淆还尝试查看d.a类的映射文件,但它没有提示我问题的方向.Jetifier已启用我在这里错过了什么吗?这有可能是这个问题与androix.preference库有关吗?–>无效并重新启动

  8. android – 带有Unity3d的Proguard返回错误代码1

    我正在使用带有Unity3d的proguard4.11在我的项目中,我在我的libs文件夹中包含了unity-classes.jar当我生成apk时,它会给出以下异常我已经尝试过使用了在proguard-project.txt中,还是一样,如何解决?

  9. android – 用于更新小部件的AsyncTask – 如何在onPostExecute()中访问textviews?

    以下情况:我有一个app小部件,它从一个url轮询数据并用解析的html更新小部件.在预蜂窝装置上,这可以通过服务完成,而无需使用单独的螺纹.现在,在ICS上,这已经改变,并且ASyncThread是必要的.要访问我使用的Widget-Updater-Service中的TextViews但这似乎不适用于ASyncThread.可能是,当线程试图更改textview时,主服务已经终止了吗?解决这个问题的任何想法?

  10. Android,ProGuard和keepclasseswithmembernames

    ProGuard配置Android应用程序的常见模式是保留自定义view类,因为它们可能仅从布局XML而不是应用程序代码引用.在项目创建时,ADT因此将这些规则添加到项目的proguard.cfg中:我想这里的想法是说每当一个类定义一个可以被布局inflater调用的构造函数,然后保留它.但是,根据ProGuard文档,keepclasseswithmembernames限定符是keepclass

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部