无法获取提供者:ClassNotFoundException

And*_*cko 5 android proguard android-contentprovider

我有MyContentProvider我的应用程序,当我开发和调试模式下运行,工作正常。

<provider android:name=".MyContentProvider"
        android:authorities="com.contactcities"
        android:exported="false">
</provider>
Run Code Online (Sandbox Code Playgroud)

但是当我导出应用程序,下载并运行它时,它立即崩溃:

10-10 18:24:37.682 E/AndroidRuntime(10428): FATAL EXCEPTION: main
10-10 18:24:37.682 E/AndroidRuntime(10428): java.lang.RuntimeException: Unable to get provider com.contactcities.MyContentProvider: java.lang.ClassNotFoundException: com.contactcities.MyContentProvider in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/data/app/com.contactcities-1.apk]
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.app.ActivityThread.installProvider(ActivityThread.java:4509)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.app.ActivityThread.installContentProviders(ActivityThread.java:4281)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4237)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.app.ActivityThread.access$3000(ActivityThread.java:125)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 18:24:37.682 E/AndroidRuntime(10428): at android.os.Looper.loop(Looper.java:123)
Run Code Online (Sandbox Code Playgroud)

我可以在我所有的设备上重现它,2.2、4.0、4.1

我今天已经阅读了许多主题。他们中的一些人为此指责 ProGuard。我试过添加

-keep public class com.contactcities.MyContentProvider
Run Code Online (Sandbox Code Playgroud)

但没有运气。

当我禁用 proguard 时,通过不放入proguard.config=proguard.cfg我的project.properties. 它仍然在发布版本中给出相同的错误。调试又好了。也许像那样禁用 proguard 还不够?

也许暗示是它在这次崩溃中引用了 maps.jar。我不知道为什么会这样

in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar
Run Code Online (Sandbox Code Playgroud)

任何线索将不胜感激

And*_*cko 4

啊,我以为我尝试过,但似乎我没有。

Project->clean成功了

脸掌