2013年4月17日星期三

接入微博weibo.sdk.android.sso.jar后功能正常,混淆打包过后调用崩溃的解决方案。

混淆后具体的报错日志如下

W/System.err(30242): java.io.FileNotFoundException: weibosdk_dialog_bg.9.png
W/System.err(30242):  at android.content.res.AssetManager.openAsset(Native Method)
W/System.err(30242):  at android.content.res.AssetManager.open(AssetManager.java:337)
W/System.err(30242):  at android.content.res.AssetManager.open(AssetManager.java:311)
W/System.err(30242):  at com.weibo.sdk.android.WeiboDialog.setUpWebView(WeiboDialog.java:128)
W/System.err(30242):  at com.weibo.sdk.android.WeiboDialog.onCreate(WeiboDialog.java:88)
W/System.err(30242):  at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
W/System.err(30242):  at android.app.Dialog.show(Dialog.java:225)
W/System.err(30242):  at com.weibo.sdk.android.Weibo.startDialog(Weibo.java:129)
W/System.err(30242):  at com.weibo.sdk.android.Weibo.startAuthDialog(Weibo.java:71)
W/System.err(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:122)
W/System.err(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:106)

W/System.err(30242):  at android.view.View.performClick(View.java:2486)
W/System.err(30242):  at android.view.View$PerformClick.run(View.java:9130)
W/System.err(30242):  at android.os.Handler.handleCallback(Handler.java:587)
W/System.err(30242):  at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err(30242):  at android.os.Looper.loop(Looper.java:130)
W/System.err(30242):  at android.app.ActivityThread.main(ActivityThread.java:3703)
W/System.err(30242):  at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(30242):  at java.lang.reflect.Method.invoke(Method.java:507)
W/System.err(30242):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
W/System.err(30242):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
W/System.err(30242):  at dalvik.system.NativeStart.main(Native Method)
/System.err(30242): java.io.FileNotFoundException: values/dimens.xml
W/System.err(30242):  at android.content.res.AssetManager.openAsset(Native Method)
W/System.err(30242):  at android.content.res.AssetManager.open(AssetManager.java:337)
W/System.err(30242):  at android.content.res.AssetManager.open(AssetManager.java:311)
W/System.err(30242):  at com.weibo.sdk.android.WeiboDialog.parseDimens(WeiboDialog.java:260)
W/System.err(30242):  at com.weibo.sdk.android.WeiboDialog.setUpWebView(WeiboDialog.java:163)
W/System.err(30242):  at com.weibo.sdk.android.WeiboDialog.onCreate(WeiboDialog.java:88)
W/System.err(30242):  at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
W/System.err(30242):  at android.app.Dialog.show(Dialog.java:225)
W/System.err(30242):  at com.weibo.sdk.android.Weibo.startDialog(Weibo.java:129)
W/System.err(30242):  at com.weibo.sdk.android.Weibo.startAuthDialog(Weibo.java:71)
W/System.err(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:122)
W/System.err(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:106)

W/System.err(30242):  at android.view.View.performClick(View.java:2486)
W/System.err(30242):  at android.view.View$PerformClick.run(View.java:9130)
W/System.err(30242):  at android.os.Handler.handleCallback(Handler.java:587)
W/System.err(30242):  at android.os.Handler.dispatchMessage(Handler.java:92)
W/System.err(30242):  at android.os.Looper.loop(Looper.java:130)
W/System.err(30242):  at android.app.ActivityThread.main(ActivityThread.java:3703)
W/System.err(30242):  at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(30242):  at java.lang.reflect.Method.invoke(Method.java:507)
W/System.err(30242):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
W/System.err(30242):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
W/System.err(30242):  at dalvik.system.NativeStart.main(Native Method)
D/AndroidRuntime(30242): Shutting down VM
W/dalvikvm(30242): threadid=1: thread exiting with uncaught exception (group=0x40015568)
E/AndroidRuntime(30242): FATAL EXCEPTION: main
E/AndroidRuntime(30242): android.content.res.Resources$NotFoundException: Resource ID #0x7f040000 type #0x3 is not valid
E/AndroidRuntime(30242):  at android.content.res.Resources.getDimensionPixelSize(Resources.java:531)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.WeiboDialog.setUpWebView(WeiboDialog.java:171)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.WeiboDialog.onCreate(WeiboDialog.java:88)
E/AndroidRuntime(30242):  at android.app.Dialog.dispatchOnCreate(Dialog.java:307)
E/AndroidRuntime(30242):  at android.app.Dialog.show(Dialog.java:225)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.Weibo.startDialog(Weibo.java:129)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.Weibo.startAuthDialog(Weibo.java:71)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:122)
E/AndroidRuntime(30242):  at com.weibo.sdk.android.sso.SsoHandler.authorize(SsoHandler.java:106)

E/AndroidRuntime(30242):  at android.view.View.performClick(View.java:2486)
E/AndroidRuntime(30242):  at android.view.View$PerformClick.run(View.java:9130)
E/AndroidRuntime(30242):  at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(30242):  at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(30242):  at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(30242):  at android.app.ActivityThread.main(ActivityThread.java:3703)
E/AndroidRuntime(30242):  at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(30242):  at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(30242):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime(30242):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime(30242):  at dalvik.system.NativeStart.main(Native Method)

先开始想了很多,尝试了很多方法去解决。比如想是不是混淆除了什么问题。昨天弄了一天都没弄好。
今天又开始仔细看这个报错日志,然后在官方的Demo中找到sdk源码,定位到报错的这两句。于是尝试把Demo中assets中的资源拷贝到我的项目的assets文件夹中,混淆打包过后,调用正常了,哈哈哈。

昨天查了N的资料和用三种方式联系了官方技术支持都无果,最后还是要靠自己啊 :)