【问题标题】:java.lang.NoSuchFieldError: PUBLIC_ONLY while using Box api in android in signed buildjava.lang.NoSuchFieldError: PUBLIC_ONLY 在签名构建中使用 android 中的 Box api
【发布时间】:2014-11-28 07:57:56
【问题描述】:

我开发了包含 Dropbox、Google drive 和 Box 云服务的 android 应用程序。我对其进行了测试,一切正常。之后我签署了它,我意识到调试 apk 大小为 8.5MB,而签名 apk 大小为 7MB。我仍然测试了完整的应用程序,其中除了 Box 云功能之外一切正常。我遇到了以下异常

        11-28 12:51:14.129: E/AndroidRuntime(2702): FATAL EXCEPTION: main
    11-28 12:51:14.129: E/AndroidRuntime(2702): Process: com.idealtech.mycoud, PID: 2702
    11-28 12:51:14.129: E/AndroidRuntime(2702): java.lang.NoSuchFieldError: PUBLIC_ONLY
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at java.lang.Class.getDeclaredAnnotation(Native Method)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at java.lang.Class.getAnnotation(Class.java:290)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.b.a.c.f.ae.<clinit>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.b.a.c.z.<clinit>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxjavalibv2.jsonparsing.BoxJSONParser.<init>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxjavalibv2.BoxClient.a(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxjavalibv2.BoxClient.<init>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxjavalibv2.BoxClient.<init>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxandroidlibv2.BoxAndroidClient.<init>(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxandroidlibv2.activities.OAuthActivity.a(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxandroidlibv2.activities.OAuthActivity.a(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.box.boxandroidlibv2.activities.OAuthActivity.onCreate(Unknown Source)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.Activity.performCreate(Activity.java:5248)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.ActivityThread.access$800(ActivityThread.java:139)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.os.Handler.dispatchMessage(Handler.java:102)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.os.Looper.loop(Looper.java:136)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at android.app.ActivityThread.main(ActivityThread.java:5086)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at java.lang.reflect.Method.invokeNative(Native Method)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at java.lang.reflect.Method.invoke(Method.java:515)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    11-28 12:51:14.129: E/AndroidRuntime(2702):     at dalvik.system.NativeStart.main(Native Method)

它没有得到它在调试中找到的库。我该怎么做才能解决这个问题? 请帮我。由于这个问题,我无法发布我的应用程序。 提前致谢。

【问题讨论】:

    标签: java android eclipse boxapiv2


    【解决方案1】:

    我在使用 proguard 编译杰克逊库时遇到了这个问题,我通过在 proguard 文件中添加以下行来修复它。

    -keepnames class com.fasterxml.jackson.** { 
    *; 
    }
    -keepnames interface com.fasterxml.jackson.** { 
        *; 
    }
    

    【讨论】:

    • 这有助于使我的崩溃应用程序不会崩溃(但可能仍然无法正常工作)。我使用 Spice 和 Retrofit。
    • 您找到解决方案了吗?因为我也有同样的痛苦。我正在使用 jackson 进行改造。接受的答案解决了错误和警告消息,但没有调用远程 Web 服务
    • 以上代码防止proguard避免jackson库不混淆。看来您的改造 proguard 设置是错误的。请检查改造官方proguard设置
    • 谢谢!几乎所有我为这个错误经历过的线程,我发现fastxml.jackson的使用给我带来了麻烦。在我的 proguard-rules.pro 中添加了 Android 应用程序项目结构中存在的行后,它对我有用。最初我将它添加到 proguard-android.txt 中,但没有成功。似乎这是解决此问题的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多