2013-07-17 56 views
4

我們註冊一個廣播接收器來接收包安裝或卸載事件。getResources返回null

但有些用戶報告這樣的崩潰報告:

java.lang.RuntimeException: Unable to create application com.kc.security.MoSecurityApplication: java.lang.RuntimeException: getResources is null: dir - /data/app/com.cm.mg-1.apk, srcVal-1, srcVal-2 
at android.app.LoadedApk.makeApplication(LoadedApk.java:495) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2249) 
at android.app.ActivityThread.access$1600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.RuntimeException: getResources is null: dir - /data/app/com.cm.mg-1.apk, srcVal-1, srcVal-2 
at com.kc.security.b.ab.b(UpdateManager.java:69) 
at com.kc.security.b.ab.a(UpdateManager.java:112) 
at com.kc.security.MoSecurityApplication.onCreate(MoSecurityApplication.java:66) 
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969) 
at android.app.LoadedApk.makeApplication(LoadedApk.java:492) 
... 11 more 

這是不容易再出現這種崩潰。我們對這個問題有很多想法。我們收到一個
卸載事件,那麼應用上下文類調用它的onCreate方法,我們做了 一些初始工作,當我們調用getResouce()時,它返回null。當在框架代碼裏面深入地看 時,我們發現getReource通過sourceDir找到資源文件 字符串在ApplicationInfo中,並且String是「/data/app/com.cm.mg-1.apk」>它是原始的apk,並且它不再存在。

這可能發生在用戶更新我們的應用程序時。在某些方面,「/data/app/com.cm.mg-1.apk」已被刪除,並以「/data/app/com.cm.mg-2.apk」替換,但「sourceDir」字符串在ApplicationInfo中沒有更新。

我想知道當做更新時,android做了些什麼。

回答