android java.lang.AssertionError : java. lang.NoSuchMethodException - Proguard

标签 android twitter crash android-proguard

在已发布的应用程序版本中,我的应用程序因此错误而崩溃。 它在 Debug模式下工作正常

Process: com.app, PID: 13162
        java.lang.AssertionError: java.lang.NoSuchMethodException: <init> [interface twitter4j.conf.Configuration, interface twitter4j.a.b]
                at twitter4j.n.<clinit>(Unknown Source)
                at com.app.activities.RegistrationActivity.g(Unknown Source)
                at com.app.activities.RegistrationActivity.onCreate(Unknown Source)
                at android.app.Activity.performCreate(Activity.java:6289)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
                at android.app.ActivityThread.access$900(ActivityThread.java:177)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:145)
                at android.app.ActivityThread.main(ActivityThread.java:5942)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
         Caused by: java.lang.NoSuchMethodException: <init> [interface twitter4j.conf.Configuration, interface twitter4j.a.b]
                at java.lang.Class.getConstructor(Class.java:531)
                at java.lang.Class.getDeclaredConstructor(Class.java:510)
                at twitter4j.n.<clinit>(Unknown Source)
                at com.app.activities.RegistrationActivity.g(Unknown Source)
                at com.app.activities.RegistrationActivity.onCreate(Unknown Source)
                at android.app.Activity.performCreate(Activity.java:6289)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2758)
                at android.app.ActivityThread.access$900(ActivityThread.java:177)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1448)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:145)
                at android.app.ActivityThread.main(ActivityThread.java:5942)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

这个错误好像是proguard文件引起的

这里是proguard-rules.pro如下-

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/adisoft2/android/android-sdk-linux/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# 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 *;
#}
#-injars      bin/classes
#-injars      libs
#-outjars     bin/classes-processed.jar
#-libraryjars /usr/local/java/android-sdk/platforms/android-9/android.jar
-keep class twitter4j.conf.**
-keep class twitter4j.TwitterImpl
-keep class twitter4j.conf.PropertyConfigurationFactory
-dontwarn com.squareup.okhttp.**
-dontwarn com.google.appengine.api.urlfetch.**
-dontwarn rx.**
-dontwarn retrofit.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
    @retrofit.http.* <methods>;
}
-dontwarn twitter4j.**
-dontwarn com.google.android.gms.**
-dontwarn okio.**


# This is a configuration file for ProGuard.
# http://proguard.sourceforge.net/index.html#manual/usage.html
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
# Optimization is turned off by default. Dex does not like code run
# through the ProGuard optimize and preverify steps (and performs some
# of these optimizations on its own).
-dontoptimize
-dontpreverify
# Note that if you want to enable optimization, you cannot just
# include optimization flags in your own project configuration file;
# instead you will need to point to the
# "proguard-android-optimize.txt" file instead of this one from your
# project.properties file.
-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames class * {
    native <methods>;
}
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
   void set*(***);
   *** get*();
}
# We want to keep methods in Activity that could be used in the XML attribute onClick
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
    public static <fields>;
}
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
-dontwarn android.support.**

请让我知道,我做错了什么,以及如何解决。

最佳答案

在 proguard-rules.pro 中添加这个对我有用。

-keep class twitter4j.** { *; }

关于android java.lang.AssertionError : java. lang.NoSuchMethodException - Proguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743243/

相关文章:

java - 应用程序关闭时,服务中的 BroadcastReceiver 无法正常工作

ios - 如果某些数据为 NSNull,如何正确解析 JSON 数据

ios - Twitter 未授权我的 iOS 应用

ios - 自 iOS 12.2 更新以来,应用程序崩溃没有崩溃报告

android - React Native PanResponder 限制X位置

java - 忽略调试库中的 java 代码

android - 如何从android xml设置android按钮背景颜色(正常+按下)

python - 在 Twitter OAuth POST 请求上获取 401

python-3.x - 无法在Mac 10.14.3中安装python 3.7包Fiona,lxml,pandas,Pillow

android - 我的带有标签的滑动 View 的 Android 计算器应用程序崩溃了