【发布时间】:2015-11-28 14:42:01
【问题描述】:
我的应用有 facebook 登录和 facebook 分享。我已经按照 facebook android SDK 文档中的说明配置了清单文件。
应用在发布和调试模式下正常运行。
在我使用 'minifyEnabled true' 创建发布 APK 后,应用程序在启动时崩溃并显示以下日志:
java.lang.RuntimeException: Unable to get provider com.facebook.FacebookContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.facebook.FacebookContentProvider" on path: DexPathList[[zip file "/data/app/com.pocketium.trollmonkey-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:5087)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4679)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4619)
at android.app.ActivityThread.access$1500(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
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:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.FacebookContentProvider" on path: DexPathList[[zip file "/data/app/com.pocketium.trollmonkey-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.ActivityThread.installProvider(ActivityThread.java:5072)
... 11 more
Suppressed: java.lang.ClassNotFoundException: com.facebook.FacebookContentProvider
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
我尝试禁用缩小和优化并添加了保留选项以保留 facebook 类,但应用程序仍然崩溃。我是安卓新手。在google上搜索了很多,但找不到解决方案。
2015 年 12 月 1 日更新
我尝试在 Linux 中启用 proguard 创建发布 APK。在我的 linux 机器上创建 apk 时没有问题。但是我在 Windows 机器中创建的 apk 以及 mac 在启动时崩溃了。在 linux 环境中构建时我没有更改任何代码。
PS:我尝试了在禁用 proguard 的情况下创建的 Dex 保护器和混淆发布 apk。 dexprotector 创建的 APK 运行正常。
【问题讨论】:
-
发布 proguard 配置文件
-
proguard-rules.pro 当前仅包含 -ignorewarnings 。
-
这是 gradle 文件 dropbox.com/s/l3ueqhd5u0tdpzb/gradle.txt?dl=0
标签: java android proguard dexprotector