Моя активность «использовала», когда при запуске Service
ставится пользовательский (сериализуемый) класс. Но пару версия назад я удалил (и удалил класс) и прямо поместил примитивы в пакет.Служба Android не может запускаться из-за исключения ClassNotFoundException из класса, который больше не существует.
А теперь ... мой журнал ACRA полностью забит этой ошибкой аварии в onStartCommand
, когда на линии читается расслоение.
java.lang.RuntimeException: Unable to start service [email protected] with Intent { act=ACTION_START flg=0x4 cmp=com.xxx/.MyService (has extras) }: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.xxx.MyBundle)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3045)
at android.app.ActivityThread.access$2200(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1454)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.xxx.MyBundle)
at android.os.Parcel.readSerializable(Parcel.java:2491)
at android.os.Parcel.readValue(Parcel.java:2294)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2592)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.get(BaseBundle.java:281)
at com.xxx.MyService.onStartCommand(MyService.java:190)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3028)
....
... 14 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxx.MyBundle" on path: DexPathList[[zip file "/data/app/com.xxx-2/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx-2/lib/arm, /data/app/com.xxx-2/base.apk!/lib/armeabi-v7a, /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)
Я не понимаю, что я получаю ошибку, зная, что com.xxx.MyBundle
даже не существует больше в проекте!
Обратите внимание, что я вижу эту ошибку в моих журналах сбоев. Я не могу воспроизвести это локально, вероятно, потому, что я удалил и повторно установил приложение много раз, и это, вероятно, устраняет проблему.
Проблема здесь в том, что тысячи людей, которые, вероятно, работают с ошибкой, не могут просто сказать всем «удалить-переустановить». Я хотел бы найти причину этого и possibily исправить это с новым обновлением без необходимости вручную удалить приложение и переустановить ..
EDIT
Это история события
v1: Я помещал сериализуемую класс в пачке при запуске службы (я забыл установить serialVersionUID), и я видел много ошибок сериализации при запуске службы, как несовпадения версий, когда desializing .. типичная ошибка при забытии s .
v3: Я отказался и удалил com.xx.MyBundle и не создал com.xx.MyBundle2 (без кости .. и это, когда я начал видеть в журнале, что ClassNotFoundException)
v4: I Удалить com.xx.MyBundle2 и вместо того, чтобы помещать сериализуемый класс в пакет, я прямо ставил свои примитивы
Итак, вы видите, что это не вопрос обслуживания или нет. Даже когда мои пользователи обновляют с v3 до v4, я бы ожидал, что эта ошибка исчезнет, но нет ... Я все еще вижу ClassNotFoundExcpetionn in v4
Но .. когда пользователь обновляет apk от v1, v2, v3 до v4 ... служба автоматически убивается Android no? Служба полностью уничтожена, когда андроид обновляет apk, поэтому он не может работать правильно? – Johny19
Big up for you Reaz ..! в «сомнении» я установил v1 и начал службу. И я тогда оставил службу запущенной и обновляющейся до версии v4 ... сервис действительно убит ... но угадайте, что? когда я запускаю службу при сбое B4 BAM, точно такая же ошибка имеет в моем сообщении – Johny19
Рад узнать, что помогло. Ура !! –