我們註冊一個廣播接收器來接收包安裝或卸載事件。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做了些什麼。