java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = d7.b) at android.os.Parcel.writeSerializable(Parcel.java:1843) at android.os.Parcel.writeValue(Parcel.java:1790) at android.os.Parcel.writeArrayMapInternal(Parcel.java:932) at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1588) at android.os.Bundle.writeToParcel(Bundle.java:1253) at android.os.Parcel.writeBundle(Parcel.java:1001) at android.content.Intent.writeToParcel(Intent.java:10858) at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:3880) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1738) at android.app.Activity.startActivityForResult(Activity.java:5412) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:2) at android.app.Activity.startActivityForResult(Activity.java:5337) at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:1) at android.app.Activity.startActivity(Activity.java:5819) at android.app.Activity.startActivity(Activity.java:5787) at c4.y.a(BaseNavigation.kt:8) at c4.b$a.l(BaseActivity.kt:3) at c4.b.O(Unknown Source:2) at c4.w$b.l(BaseFragment.kt:2) at c4.a.d(R8$$SyntheticClass:5) at d4.a.d(R8$$SyntheticClass:8) at androidx.lifecycle.LiveData.b(LiveData.java:6) at androidx.lifecycle.LiveData.c(LiveData.java:8) at androidx.lifecycle.x.l(MutableLiveData.java:4) at d4.b.l(SingleLiveEvent.kt:2) at androidx.lifecycle.LiveData$a.run(LiveData.java:5) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8673) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109) Caused by: java.io.NotSerializableException: com.google.gson.internal.s$a at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354) at android.os.Parcel.writeSerializable(Parcel.java:1838) ... 32 more
overridefunhashCode(): Int { var result = timeMillisGenerated?.hashCode() ?: 0 result = 31 * result + (type?.hashCode() ?: 0) result = 31 * result + (clipID?.hashCode() ?: 0) result = 31 * result + (originalDataList?.hashCode() ?: 0) result = 31 * result + (nonOriginalData?.hashCode() ?: 0) result = 31 * result + (custom_data?.hashCode() ?: 0) result = 31 * result + labelInfoList.hashCode() return result }
overridefuncompareTo(other: Any?): Int { if (other !is Clip) return1 return (clipID ?: "").compareTo(other.clipID ?: "") }
fun Clip.setIsFromSelf(flag: Boolean) { isFromSelf = flag }
fun Clip.getIsFromSelf(): Boolean { return isFromSelf }
record
通过GSON进行序列化
2023.9.7
69b6c8a70389bc0e6b1c013e6a5bd7d6667d9111
15db304d83582b514a82dde17fc6665d4543ab27
1 2 3 4 5
val clipString = gson.toJson(clip) pv.store(EXTRA_SEND_TO_CONTACT_CLIP, clipString)
val clipString = viewModel.pvStoreRepository.read(EXTRA_SEND_TO_CONTACT_CLIP) ?: "" val clip = viewModel.gson.fromJson(clipString, Clip::class.java)
接收IOS大拿分享的视频出现内部错误
偶现
错误日志
1 2 3 4 5 6 7 8 9
2023-09-0518:53:41.230 D/VideoFlowActivity: [main-1] handleShareEvent: accept=[true], eventId=[1276c0f077ef4756ad7a4073ab259134] 2023-09-0518:53:41.230 I/UserSdkNative: [DefaultDispatcher-worker-1-7942] nativeShareHandleEvent, ref=0x2af6 2023-09-0518:53:41.230 I/UserSdkNative: [Thread-9285-18158] [module/contact] HandleClipShareApply(1276c0f077ef4756ad7a4073ab259134, 1) 2023-09-0518:53:41.233 E/UserSdkNative: [Thread-9285-18158] [module/contact] HandleClipShareApply(1276c0f077ef4756ad7a4073ab259134, 1) failed, hmi.HandleClipShareApply failed, syncClipNonOriData failed, zip.OpenReader(/storage/emulated/0/Android/data/com.danale.edge/files/user_local/volume/id_6ul5lak8wzfe/temp/hmi/clips/zip/601964a6e3d84514a554263d37f01abc) failed, zip: not a valid zip file 2023-09-0518:53:41.233 D/UserSdkNative: [Thread-9285-18158] app_dip_fe_usr_sdk_general_json_callback, ctx 0x2af6 2023-09-0518:53:41.234 W/VideoFlowActivity: [DefaultDispatcher-worker-1-7942] handleShareEvent error, c7.b: Api request failed with code:-2; biz:0(hmi.HandleClipShareApply failed, syncClipNonOriData failed, zip.OpenReader(/storage/emulated/0/Android/data/com.danale.edge/files/user_local/volume/id_6ul5lak8wzfe/temp/hmi/clips/zip/601964a6e3d84514a554263d37f01abc) failed, zip: not a valid zip file) 2023-09-0518:53:41.234 E/VideoFlowActivity: [DefaultDispatcher-worker-1-7942] toastError exception c7.b: Api request failed with code:-2; biz:0(hmi.HandleClipShareApply failed, syncClipNonOriData failed, zip.OpenReader(/storage/emulated/0/Android/data/com.danale.edge/files/user_local/volume/id_6ul5lak8wzfe/temp/hmi/clips/zip/601964a6e3d84514a554263d37f01abc) failed, zip: not a valid zip file) at com.danale.edge.usersdk.jni.BaseJsonOperation$CallbackContext.nativeResponseCallback(BaseJsonOperation.kt:10)
主要错误:
1
Api request failed with code:-2; biz:0(hmi.HandleClipShareApply failed, syncClipNonOriData failed, zip.OpenReader(/storage/emulated/0/Android/data/com.danale.edge/files/user_local/volume/id_6ul5lak8wzfe/temp/hmi/clips/zip/601964a6e3d84514a554263d37f01abc) failed, zip: not a valid zip file)
2023-09-0522:33:13.945 I/FileUtil: [DefaultDispatcher-worker-8-1724] [S]saveVideo 2023-09-0522:33:13.948 E/FileUtil: [DefaultDispatcher-worker-8-1724] [S]clip type is not original data 2023-09-0522:33:14.077 E/BaseApplication: [DefaultDispatcher-worker-8-1724] uncaughtException, thread = Thread[DefaultDispatcher-worker-8,5,main] java.io.FileNotFoundException:/storage/emulated/0/Android/data/com.danale.edge/files/user_local/volume/id_6xur6vx43a5c/temp/hmi/clips/nod/42adff7f955c4d56af4c48f5cf5e7ac1/mp4_path: open failed: ENOENT (No such file or directory) at libcore.io.IoBridge.open(IoBridge.java:574) at java.io.FileInputStream.<init>(FileInputStream.java:160) at k6.b.c(FileUtil.kt:18) at com.danale.edge.ui.flow.VideoFlowViewModel.V(VideoFlowViewModel.kt:17) at u6.c$a.d(DownloadDialog.kt:4) at qh.a.o(ContinuationImpl.kt:3) at ei.q0.run(DispatchedTask.kt:18) at ji.g.run(LimitedDispatcher.kt:2) at li.j.run(Tasks.kt:1) at li.a$a.run(CoroutineScheduler.kt:14) Suppressed: ei.o0: [b2{Cancelling}@b8522be, Dispatchers.IO] Causedby: android.system.ErrnoException: open failed: ENOENT (No such file or directory) at libcore.io.Linux.open(NativeMethod) at libcore.io.ForwardingOs.open(ForwardingOs.java:563) at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274) at libcore.io.ForwardingOs.open(ForwardingOs.java:563) at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8274) at libcore.io.IoBridge.open(IoBridge.java:560) ... 9 more
(No such file or directory)
问题出现在:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
if (clip.type != Clip.CLIP_TYPE_ORIGINAL_DATA) { /** * FIXME: 目前不支持编辑已经是MP4的文件, 暂时全部返回原视频 * 收藏页 -> 添加拍摄者水印 * 非本人拍摄(app内分享) -> 添加拍摄者水印 * 已经有水印(识别视频) -> 直接保存原视频 * */ logger.e(TAG, "clip type is not original data") val nonOriMP4Path = clip.nonOriginalData?.get(Clip.NonOriginalData.KEY_MP4_PATH) returnif (nonOriMP4Path != null) { try { File(nonOriMP4Path) }catch (e: Exception){ null } } else { null } }
File(nonOriMP4Path)中的路径不存在,可能原因是
如果path存在缓存文件夹中,那么存在手动清除缓存导致文件夹不存在,(需要重新修改需求?)
如果存在file文件夹中,前面的逻辑可能存在问题
√ 日志导出方式修改
改为双击应用版本整个item导出日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
funshowLog(view: View) { val currentTime = System.currentTimeMillis() val clickDelay = currentTime - lastClickTime