我正在尝试将我的库项目与其中一个应用程序集成,并获得以下异常,如下所示,
E/AndroidRuntime(21990): FATAL EXCEPTION: IntentService[SchedulingService]
E/AndroidRuntime(21990): Process: com.newton.message, PID: 21990
E/AndroidRuntime(21990): java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.app.library.database.a$a)
E/AndroidRuntime(21990): at android.os.Parcel.readSerializable(Parcel.java:2384)
E/AndroidRuntime(21990): at android.os.Parcel.readValue(Parcel.java:2203)
E/AndroidRuntime(21990): at android.os.Parcel.readArrayMapInternal(Parcel.java:2485)
E/AndroidRuntime(21990): at android.os.BaseBundle.unparcel(BaseBundle.java:221)
E/AndroidRuntime(21990): at android.os.Bundle.getParcelable(Bundle.java:755)
E/AndroidRuntime(21990): at android.content.Intent.getParcelableExtra(Intent.java:5214)
E/AndroidRuntime(21990): at com.app.library.AlarmSchedulingService.onHandleIntent(Unknown Source)
E/AndroidRuntime(21990): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
E/AndroidRuntime(21990): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(21990): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(21990): at android.os.HandlerThread.run(HandlerThread.java:61)
E/AndroidRuntime(21990): Caused by: java.lang.ClassNotFoundException: com.app.library.database.a$a
E/AndroidRuntime(21990): at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(21990): at java.lang.Class.forName(Class.java:309)
E/AndroidRuntime(21990): at android.os.Parcel$2.resolveClass(Parcel.java:2370)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readEnumDescInternal(ObjectInputStream.java:1551)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readEnumDesc(ObjectInputStream.java:1532)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1577)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:767)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
E/AndroidRuntime(21990): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
E/AndroidRuntime(21990): at android.os.Parcel.readSerializable(Parcel.java:2378)
E/AndroidRuntime(21990): ... 10 more
E/AndroidRuntime(21990): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.app.library.database.a$a" on path: DexPathList[[zip file "/data/app/com.cube26.osp.message-2/base.apk"],nativeLibraryDirectories=[/data/app/com.cube26.osp.message-2/lib/arm, /vendor/lib, /system/lib]]
E/AndroidRuntime(21990): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(21990): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E/AndroidRuntime(21990): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E/AndroidRuntime(21990): ... 20 more
E/AndroidRuntime(21990): Suppressed: java.lang.ClassNotFoundException: com.app.library.database.a$a
E/AndroidRuntime(21990): at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(21990): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E/AndroidRuntime(21990): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E/AndroidRuntime(21990): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E/AndroidRuntime(21990): ... 21 more
E/AndroidRuntime(21990): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
E/SQLiteLog(21767): (284) automatic index on view_events(_id)
图书馆使用情况:
我的应用程序中有一个AlarmScheduling任务,我将数据一天发布到服务器上。
用例:
我已经在Playstore中有一个应用程序,如果我尝试更新我的库并将其作为新版本发布,那么如果我更改了AlarmSchedulingTasks的系统时间,我就会遇到此崩溃。
如果我清除数据或重启设备,该应用程序正常运行。我也能够成功执行我的AlarmScheduling任务。
我尝试了什么:
我几乎尝试了SO中列出的所有可能的解决方案,如下所示:
Android Studio: ClassNotFoundException
Java.lang.ClassNotFoundException after Android studio update
java.lang.ClassNotFoundException: Didn't find class on path: dexpathlist
Android ClassNotFoundException: Didn't find class on path
Android ClassNotFoundException: Didn't find class on path
ClassNotFoundException after starting app
清单包名称合并问题。
在正确版本的Android studio中使用。 (即不稳定版的金丝雀频道)
Gradle构建版本与库和应用项目不匹配。
达到了计数限制的App方法。
创建多个dex时的Proguard构建问题。
还发现了一些奇怪而无用的解决方案,比如清理项目,将lib文件夹重命名为libs,删除.idea,Intellij相关文件夹。
多次出现库项目缓存。
具有可序列化或可分配意图的警报计划任务的行为。 (如果我清除数据,可能会出现问题但工作正常)
我尝试了一切,但无法解决这个问题。因此,我完全陷入困境,无法将下一个版本发布到游戏商店。任何类型的解决方案和提示对我都非常有帮助。提前致谢。我发布了我的代码供您参考,如下所示
AlarmSchedulingServiceTest.java
public class AlarmSchedulingServiceTest extends IntentService {
private DBAccess mDBAccess;
public AlarmSchedulingServiceTest() {
super("SchedulingService");
}
@Override
protected void onHandleIntent(Intent intent) {
CLog.i(Constants.LOG_TAG_LIBRARY," $$$ ALARM INITIATED $$$");
if(intent != null) {
Bundle bundle = intent.getParcelableExtra(Constants.BUNDLE.SEND_MODE);
int mode = bundle.getInt(Constants.INTENT.SEND_MODE);
sendData();
}
}
AlarmReceiver.java
public class AlarmReceiver {
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
private Intent mIntent;
public void setAlarm(Context context, int mode) {
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
mIntent = new Intent(context, AlarmSchedulingServiceTest.class);
Bundle bundle = new Bundle();
bundle.putInt(Constants.INTENT.SEND_MODE,mode);
mIntent.putExtra(Constants.BUNDLE.SEND_MODE, bundle);
alarmIntent = PendingIntent.getService(context, mode, mIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
(long) 1 * 24 * 60 * 60 * 1000),
(long) 1 * 24 * 60 * 60 * 1000), alarmIntent);
}
}