【问题标题】:ContentProvider classnotfound after using Proguard使用 Proguard 后未找到 ContentProvider 类
【发布时间】:2014-03-12 13:18:14
【问题描述】:

我在Manifest 中定义了这个提供程序。

    <provider
        android:name="com.jon.aqclient.sync.StubProvider"
        android:authorities="com.jon.aqclient.provider"
        android:exported="false"
        android:syncable="true" />

应用包是com.jon.aqclientclasssync包里面,所以classcom.jon.aqclient.sync.StubProvider里面。我的应用程序运行良好,但在第一次尝试 Proguardmavenizing项目后,它会因 classnotfoundexception 而崩溃。

我已经对项目进行了反maven化,我尝试使用-keep public class com.jon.aqclient.sync,现在在project.properties 文件中注释Proguard 行如下。

# 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

我已经清理了项目,但什么也没有。奇怪的是,如果我将Manifest 中的提供程序定义更改为StubProviderNew,而不进行任何其他更改,error 是相同的,classnotfoundexceptioncom.jon.aqclient.sync.StubProvider,而不是StubProviderNew

读取该类名的项目在哪里?我怎样才能完全清除这些?

请帮忙!

编辑:

堆栈跟踪:

03-12 15:04:56.259: E/AndroidRuntime(7506): FATAL EXCEPTION: main
03-12 15:04:56.259: E/AndroidRuntime(7506): java.lang.RuntimeException: Unable to get provider com.jon.aqclient.sync.StubProvider: java.lang.ClassNotFoundException: com.jon.aqclient.sync.StubProvider in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.jon.aqclient-2.apk]
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.installProvider(ActivityThread.java:3709)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.installContentProviders(ActivityThread.java:3461)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3417)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.access$2200(ActivityThread.java:123)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:977)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.os.Looper.loop(Looper.java:130)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.main(ActivityThread.java:3835)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at java.lang.reflect.Method.invokeNative(Native Method)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at java.lang.reflect.Method.invoke(Method.java:507)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at dalvik.system.NativeStart.main(Native Method)
03-12 15:04:56.259: E/AndroidRuntime(7506): Caused by: java.lang.ClassNotFoundException: com.jon.aqclient.sync.StubProvider in loader dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com.jon.aqclient-2.apk]
03-12 15:04:56.259: E/AndroidRuntime(7506):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
03-12 15:04:56.259: E/AndroidRuntime(7506):     at android.app.ActivityThread.installProvider(ActivityThread.java:3694)
03-12 15:04:56.259: E/AndroidRuntime(7506):     ... 12 more

【问题讨论】:

  • 尝试将 authority 属性更改为“com.jon.aqclient.StubProvider”
  • 您可能想要发布完整的堆栈跟踪。
  • 完成 CommonsWare,这是完整的堆栈跟踪。

标签: android maven proguard


【解决方案1】:

噗,我已经解决了。这是一个Maven的事情。我不知道是 Maven 还是 Proguard,但它是我在错误出现之前所做的主要更改。

Maven 将默认输出文件夹更改为 target/... 而不是 bo bin/classes... 所以设备找不到类。

为了解决这个问题,我必须转到 Project->Properties->Source 并在底部放置默认输出文件夹 {project}/bin/classes。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2012-09-16
    • 2014-06-23
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多