react-native-update 10.59.2 → 10.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-CN.md +13 -7
- package/README.md +15 -6
- package/android/build.gradle +25 -33
- package/android/jni/Android.mk +18 -24
- package/android/jni/Application.mk +3 -1
- package/android/lib/arm64-v8a/librnpushy.so +0 -0
- package/android/lib/armeabi-v7a/librnpushy.so +0 -0
- package/android/lib/x86/librnpushy.so +0 -0
- package/android/lib/x86_64/librnpushy.so +0 -0
- package/android/proguard.pro +9 -7
- package/android/src/main/java/cn/reactnative/modules/update/ApkInstaller.java +3 -8
- package/android/src/main/java/cn/reactnative/modules/update/ArchiveLimits.java +24 -6
- package/android/src/main/java/cn/reactnative/modules/update/BundlePreparationResult.java +2 -0
- package/android/src/main/java/cn/reactnative/modules/update/BundledResourceCopier.java +50 -51
- package/android/src/main/java/cn/reactnative/modules/update/CleanupKeepNames.java +12 -13
- package/android/src/main/java/cn/reactnative/modules/update/CopyGroupResult.java +3 -0
- package/android/src/main/java/cn/reactnative/modules/update/CrashHold.java +22 -30
- package/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +284 -452
- package/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +8 -4
- package/android/src/main/java/cn/reactnative/modules/update/ErrorCodes.java +32 -3
- package/android/src/main/java/cn/reactnative/modules/update/FileOperationException.java +1 -1
- package/android/src/main/java/cn/reactnative/modules/update/FlowBridge.java +39 -8
- package/android/src/main/java/cn/reactnative/modules/update/HttpClients.java +63 -0
- package/android/src/main/java/cn/reactnative/modules/update/HttpUtils.java +0 -45
- package/android/src/main/java/cn/reactnative/modules/update/InstallRecord.java +68 -116
- package/android/src/main/java/cn/reactnative/modules/update/NativeCore.java +10 -2
- package/android/src/main/java/cn/reactnative/modules/update/PatchFailedException.java +1 -1
- package/android/src/main/java/cn/reactnative/modules/update/PushyRuntime.java +53 -62
- package/android/src/main/java/cn/reactnative/modules/update/ReactReloadManager.java +9 -24
- package/android/src/main/java/cn/reactnative/modules/update/ResumePlan.java +31 -0
- package/android/src/main/java/cn/reactnative/modules/update/SafeZipFile.java +42 -80
- package/android/src/main/java/cn/reactnative/modules/update/StateSerialRunner.java +22 -39
- package/android/src/main/java/cn/reactnative/modules/update/SyncCoordinator.java +474 -500
- package/android/src/main/java/cn/reactnative/modules/update/Texts.java +15 -1
- package/android/src/main/java/cn/reactnative/modules/update/Threads.java +44 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +265 -188
- package/android/src/main/java/cn/reactnative/modules/update/UpdateEventEmitter.java +1 -1
- package/android/src/main/java/cn/reactnative/modules/update/UpdateFileUtils.java +75 -17
- package/android/src/main/java/cn/reactnative/modules/update/{UpdateModuleImpl.java → UpdateModule.java} +114 -96
- package/android/src/main/java/cn/reactnative/modules/update/UpdatePackage.java +16 -19
- package/android/src/main/java/cn/reactnative/modules/update/VersionScopedKeys.java +64 -0
- package/android/src/oldarch/cn/reactnative/modules/update/NativePushySpec.java +71 -0
- package/cpp/android_jni/archive_limits_jni.cpp +83 -0
- package/cpp/android_jni/install_record_jni.cpp +89 -0
- package/cpp/android_jni/jni_log.h +30 -0
- package/cpp/android_jni/jni_natives.h +46 -0
- package/cpp/android_jni/jni_registration.cpp +146 -0
- package/cpp/android_jni/jni_util.h +160 -0
- package/cpp/android_jni/resume_plan_jni.cpp +58 -0
- package/cpp/android_jni/update_core_android.cpp +448 -0
- package/cpp/android_jni/update_flow_jni.cpp +150 -0
- package/{android/jni → cpp/hpatch}/hpatch.c +5 -5
- package/{android/jni → cpp/hpatch}/hpatch.h +4 -1
- package/cpp/patch_core/archive_limits.cpp +194 -0
- package/cpp/patch_core/archive_limits.h +101 -10
- package/cpp/patch_core/archive_patch_core.cpp +98 -15
- package/cpp/patch_core/archive_patch_core.h +51 -0
- package/cpp/patch_core/digest.h +5 -4
- package/cpp/patch_core/error_codes.h +15 -11
- package/cpp/patch_core/install_record.cpp +430 -0
- package/cpp/patch_core/install_record.h +165 -9
- package/cpp/patch_core/native_texts.h +102 -0
- package/cpp/patch_core/patch_core.cpp +62 -16
- package/cpp/patch_core/patch_core.h +27 -7
- package/cpp/patch_core/patch_manifest.cpp +201 -0
- package/cpp/patch_core/patch_manifest.h +74 -0
- package/cpp/patch_core/resume_plan.cpp +226 -0
- package/cpp/patch_core/resume_plan.h +88 -0
- package/cpp/patch_core/state_ops.h +5 -3
- package/cpp/update_flow_core/flow_json.cpp +82 -8
- package/cpp/update_flow_core/flow_json.h +21 -0
- package/cpp/update_flow_core/native_config.cpp +436 -0
- package/cpp/update_flow_core/native_config.h +84 -0
- package/cpp/update_flow_core/native_round.cpp +321 -0
- package/cpp/update_flow_core/native_round.h +94 -0
- package/cpp/update_flow_core/round_engine.cpp +456 -0
- package/cpp/update_flow_core/round_engine.h +106 -0
- package/cpp/update_flow_core/update_flow_core.cpp +5 -14
- package/cpp/update_flow_core/update_flow_core.h +2 -2
- package/harmony/hvigor-plugin.ts +11 -19
- package/harmony/pushy/src/main/cpp/CMakeLists.txt +19 -26
- package/harmony/pushy/src/main/cpp/PushyPackage.h +2 -2
- package/harmony/pushy/src/main/cpp/PushyTurboModule.cpp +57 -94
- package/harmony/pushy/src/main/cpp/pushy.cpp +817 -518
- package/harmony/pushy/src/main/ets/ArchiveLimits.ts +55 -75
- package/harmony/pushy/src/main/ets/DownloadTask.ts +279 -539
- package/harmony/pushy/src/main/ets/DownloadTaskParams.ts +6 -6
- package/harmony/pushy/src/main/ets/ErrorCodes.ts +3 -15
- package/harmony/pushy/src/main/ets/EventHub.ts +1 -1
- package/harmony/pushy/src/main/ets/InstallRecord.ts +54 -151
- package/harmony/pushy/src/main/ets/Logger.ts +20 -34
- package/harmony/pushy/src/main/ets/NativePatchCore.ts +150 -41
- package/harmony/pushy/src/main/ets/PushyConfiguration.ts +8 -85
- package/harmony/pushy/src/main/ets/PushyFileJSBundleProvider.ets +8 -3
- package/harmony/pushy/src/main/ets/PushyTurboModule.ts +11 -25
- package/harmony/pushy/src/main/ets/SaveFile.ts +99 -18
- package/harmony/pushy/src/main/ets/SyncCoordinator.ts +291 -543
- package/harmony/pushy/src/main/ets/Texts.ts +8 -7
- package/harmony/pushy/src/main/ets/UpdateContext.ts +245 -152
- package/harmony/pushy.har +0 -0
- package/ios/RCTPushy/RCTPushy+Launch.mm +190 -0
- package/ios/RCTPushy/RCTPushy.h +12 -0
- package/ios/RCTPushy/RCTPushy.mm +135 -2666
- package/ios/RCTPushy/RCTPushyCommon.h +28 -0
- package/ios/RCTPushy/RCTPushyConfiguration.h +0 -8
- package/ios/RCTPushy/RCTPushyConfiguration.mm +40 -123
- package/ios/RCTPushy/RCTPushyDownloader.mm +152 -198
- package/ios/RCTPushy/RCTPushyInstallRecord.mm +101 -0
- package/ios/RCTPushy/RCTPushyInstaller.mm +732 -0
- package/ios/RCTPushy/RCTPushyInternal.h +185 -0
- package/ios/RCTPushy/RCTPushyOrchestrator.mm +969 -0
- package/ios/RCTPushy/RCTPushyState.mm +382 -0
- package/package.json +46 -25
- package/react-native-update.podspec +73 -82
- package/src/client.ts +126 -1633
- package/src/clientActivation.ts +324 -0
- package/src/clientCheck.ts +405 -0
- package/src/clientDownload.ts +448 -0
- package/src/clientNativeConfig.ts +171 -0
- package/src/clientReporter.ts +398 -0
- package/src/clientState.ts +51 -0
- package/src/context.ts +1 -1
- package/src/core.ts +39 -10
- package/src/endpoint.ts +22 -8
- package/src/error.ts +18 -35
- package/src/i18n.ts +18 -83
- package/src/locales/en.ts +1 -5
- package/src/locales/zh.ts +1 -5
- package/src/provider.tsx +86 -67
- package/src/telemetry.ts +0 -13
- package/src/type.ts +0 -15
- package/src/updateFlowCore.ts +116 -10
- package/src/utils.ts +49 -42
- package/android/jni/HDiffPatch/.travis.yml +0 -33
- package/android/jni/HDiffPatch/CHANGELOG.md +0 -153
- package/android/jni/HDiffPatch/Makefile +0 -157
- package/android/jni/HDiffPatch/_atosize.h +0 -83
- package/android/jni/HDiffPatch/_clock_for_demo.h +0 -47
- package/android/jni/HDiffPatch/_dir_ignore.h +0 -191
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +0 -37
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +0 -7
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +0 -1
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +0 -1
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +0 -18
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +0 -20
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +0 -28
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +0 -8
- package/android/jni/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +0 -8
- package/android/jni/HDiffPatch/builds/codeblocks/HDiffZ.cbp +0 -219
- package/android/jni/HDiffPatch/builds/codeblocks/HPatchZ.cbp +0 -156
- package/android/jni/HDiffPatch/builds/codeblocks/unitTest.cbp +0 -65
- package/android/jni/HDiffPatch/builds/vc/HDiffPatch.sln +0 -105
- package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj +0 -237
- package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +0 -3
- package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj +0 -318
- package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +0 -3
- package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj +0 -182
- package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj.user +0 -3
- package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +0 -30
- package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +0 -408
- package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +0 -573
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +0 -396
- package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +0 -268
- package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +0 -361
- package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +0 -301
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +0 -411
- package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +0 -504
- package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- package/android/jni/HDiffPatch/checksum_plugin_demo.h +0 -344
- package/android/jni/HDiffPatch/compress_parallel.cpp +0 -166
- package/android/jni/HDiffPatch/compress_parallel.h +0 -59
- package/android/jni/HDiffPatch/compress_plugin_demo.h +0 -1152
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +0 -797
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +0 -65
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +0 -200
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +0 -178
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +0 -357
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +0 -87
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +0 -151
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +0 -770
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +0 -236
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +0 -47
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +0 -112
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +0 -53
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +0 -331
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +0 -144
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +0 -176
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +0 -84
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +0 -146
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +0 -61
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +0 -152
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +0 -76
- package/android/jni/HDiffPatch/hdiffz.cpp +0 -1570
- package/android/jni/HDiffPatch/hpatch_dir_listener.h +0 -290
- package/android/jni/HDiffPatch/hpatchz.c +0 -1221
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +0 -1025
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.h +0 -116
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +0 -72
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +0 -213
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +0 -63
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +0 -170
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +0 -86
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +0 -89
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +0 -13
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +0 -398
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +0 -194
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +0 -13
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +0 -204
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +0 -207
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +0 -815
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +0 -586
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +0 -381
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +0 -352
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +0 -137
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +0 -137
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +0 -70
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +0 -628
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +0 -87
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +0 -363
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +0 -139
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +0 -68
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +0 -115
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +0 -342
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +0 -94
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +0 -52
- package/android/jni/HDiffPatch/libParallel/parallel_channel.cpp +0 -174
- package/android/jni/HDiffPatch/libParallel/parallel_channel.h +0 -73
- package/android/jni/HDiffPatch/libParallel/parallel_import.cpp +0 -367
- package/android/jni/HDiffPatch/libParallel/parallel_import.h +0 -92
- package/android/jni/lzma/Asm/arm/7zCrcOpt.asm +0 -100
- package/android/jni/lzma/Asm/x86/7zAsm.asm +0 -147
- package/android/jni/lzma/Asm/x86/7zCrcOpt.asm +0 -147
- package/android/jni/lzma/Asm/x86/AesOpt.asm +0 -237
- package/android/jni/lzma/Asm/x86/LzmaDecOpt.asm +0 -1258
- package/android/jni/lzma/Asm/x86/XzCrc64Opt.asm +0 -205
- package/android/jni/lzma/C/7z.h +0 -202
- package/android/jni/lzma/C/7zAlloc.c +0 -80
- package/android/jni/lzma/C/7zAlloc.h +0 -19
- package/android/jni/lzma/C/7zArcIn.c +0 -1771
- package/android/jni/lzma/C/7zBuf.c +0 -36
- package/android/jni/lzma/C/7zBuf.h +0 -35
- package/android/jni/lzma/C/7zBuf2.c +0 -52
- package/android/jni/lzma/C/7zCrc.c +0 -128
- package/android/jni/lzma/C/7zCrc.h +0 -25
- package/android/jni/lzma/C/7zCrcOpt.c +0 -115
- package/android/jni/lzma/C/7zDec.c +0 -591
- package/android/jni/lzma/C/7zFile.c +0 -286
- package/android/jni/lzma/C/7zFile.h +0 -83
- package/android/jni/lzma/C/7zStream.c +0 -176
- package/android/jni/lzma/C/7zVersion.h +0 -27
- package/android/jni/lzma/C/7zVersion.rc +0 -55
- package/android/jni/lzma/C/Aes.c +0 -306
- package/android/jni/lzma/C/Aes.h +0 -38
- package/android/jni/lzma/C/AesOpt.c +0 -184
- package/android/jni/lzma/C/Alloc.c +0 -455
- package/android/jni/lzma/C/Alloc.h +0 -51
- package/android/jni/lzma/C/Bcj2.c +0 -257
- package/android/jni/lzma/C/Bcj2.h +0 -146
- package/android/jni/lzma/C/Bcj2Enc.c +0 -311
- package/android/jni/lzma/C/Bra.c +0 -230
- package/android/jni/lzma/C/Bra.h +0 -64
- package/android/jni/lzma/C/Bra86.c +0 -82
- package/android/jni/lzma/C/BraIA64.c +0 -53
- package/android/jni/lzma/C/CpuArch.c +0 -218
- package/android/jni/lzma/C/CpuArch.h +0 -336
- package/android/jni/lzma/C/Delta.c +0 -64
- package/android/jni/lzma/C/Delta.h +0 -19
- package/android/jni/lzma/C/DllSecur.c +0 -108
- package/android/jni/lzma/C/DllSecur.h +0 -20
- package/android/jni/lzma/C/LzFind.c +0 -1127
- package/android/jni/lzma/C/LzFind.h +0 -121
- package/android/jni/lzma/C/LzFindMt.c +0 -853
- package/android/jni/lzma/C/LzFindMt.h +0 -101
- package/android/jni/lzma/C/LzHash.h +0 -57
- package/android/jni/lzma/C/Lzma2DecMt.c +0 -1082
- package/android/jni/lzma/C/Lzma2DecMt.h +0 -79
- package/android/jni/lzma/C/Lzma2Enc.c +0 -803
- package/android/jni/lzma/C/Lzma2Enc.h +0 -55
- package/android/jni/lzma/C/Lzma86.h +0 -111
- package/android/jni/lzma/C/Lzma86Dec.c +0 -54
- package/android/jni/lzma/C/Lzma86Enc.c +0 -106
- package/android/jni/lzma/C/LzmaEnc.c +0 -2976
- package/android/jni/lzma/C/LzmaEnc.h +0 -76
- package/android/jni/lzma/C/LzmaLib.c +0 -40
- package/android/jni/lzma/C/LzmaLib.h +0 -131
- package/android/jni/lzma/C/MtCoder.c +0 -601
- package/android/jni/lzma/C/MtCoder.h +0 -141
- package/android/jni/lzma/C/MtDec.c +0 -1138
- package/android/jni/lzma/C/MtDec.h +0 -201
- package/android/jni/lzma/C/Ppmd.h +0 -85
- package/android/jni/lzma/C/Ppmd7.c +0 -712
- package/android/jni/lzma/C/Ppmd7.h +0 -142
- package/android/jni/lzma/C/Ppmd7Dec.c +0 -191
- package/android/jni/lzma/C/Ppmd7Enc.c +0 -187
- package/android/jni/lzma/C/RotateDefs.h +0 -30
- package/android/jni/lzma/C/Sha256.c +0 -248
- package/android/jni/lzma/C/Sha256.h +0 -26
- package/android/jni/lzma/C/Sort.c +0 -141
- package/android/jni/lzma/C/Sort.h +0 -18
- package/android/jni/lzma/C/Threads.c +0 -95
- package/android/jni/lzma/C/Threads.h +0 -70
- package/android/jni/lzma/C/ThreadsP.c +0 -396
- package/android/jni/lzma/C/ThreadsP.h +0 -31
- package/android/jni/lzma/C/Util/7z/7z.dsp +0 -241
- package/android/jni/lzma/C/Util/7z/7z.dsw +0 -29
- package/android/jni/lzma/C/Util/7z/7zMain.c +0 -686
- package/android/jni/lzma/C/Util/7z/Precomp.c +0 -4
- package/android/jni/lzma/C/Util/7z/Precomp.h +0 -10
- package/android/jni/lzma/C/Util/7z/makefile +0 -40
- package/android/jni/lzma/C/Util/7z/makefile.gcc +0 -75
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.c +0 -258
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsp +0 -168
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsw +0 -29
- package/android/jni/lzma/C/Util/Lzma/makefile +0 -28
- package/android/jni/lzma/C/Util/Lzma/makefile.gcc +0 -44
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.def +0 -4
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsp +0 -178
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsw +0 -29
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLibExports.c +0 -14
- package/android/jni/lzma/C/Util/LzmaLib/makefile +0 -34
- package/android/jni/lzma/C/Util/LzmaLib/resource.rc +0 -3
- package/android/jni/lzma/C/Util/SfxSetup/Precomp.c +0 -4
- package/android/jni/lzma/C/Util/SfxSetup/Precomp.h +0 -10
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.c +0 -640
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsp +0 -231
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsw +0 -29
- package/android/jni/lzma/C/Util/SfxSetup/makefile +0 -37
- package/android/jni/lzma/C/Util/SfxSetup/makefile_con +0 -38
- package/android/jni/lzma/C/Util/SfxSetup/resource.rc +0 -5
- package/android/jni/lzma/C/Util/SfxSetup/setup.ico +0 -0
- package/android/jni/lzma/C/Xz.c +0 -90
- package/android/jni/lzma/C/Xz.h +0 -460
- package/android/jni/lzma/C/XzCrc64.c +0 -86
- package/android/jni/lzma/C/XzCrc64.h +0 -26
- package/android/jni/lzma/C/XzCrc64Opt.c +0 -69
- package/android/jni/lzma/C/XzDec.c +0 -2766
- package/android/jni/lzma/C/XzEnc.c +0 -1329
- package/android/jni/lzma/C/XzEnc.h +0 -60
- package/android/jni/lzma/C/XzIn.c +0 -319
- package/android/jni/lzma/CPP/7zip/7zip.mak +0 -240
- package/android/jni/lzma/CPP/7zip/Aes.mak +0 -7
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +0 -76
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +0 -569
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.h +0 -70
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +0 -678
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.h +0 -92
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +0 -423
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +0 -139
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +0 -61
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +0 -763
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.h +0 -181
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +0 -942
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +0 -19
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.h +0 -148
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.cpp +0 -1666
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.h +0 -445
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zItem.h +0 -202
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.cpp +0 -901
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.h +0 -335
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +0 -174
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.h +0 -22
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +0 -21
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +0 -22
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +0 -35
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +0 -2500
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.h +0 -139
- package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Archive/Archive.def +0 -12
- package/android/jni/lzma/CPP/7zip/Archive/Archive2.def +0 -19
- package/android/jni/lzma/CPP/7zip/Archive/ArchiveExports.cpp +0 -151
- package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +0 -1125
- package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +0 -447
- package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +0 -17
- package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +0 -25
- package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +0 -232
- package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.h +0 -110
- package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +0 -46
- package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +0 -67
- package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +0 -88
- package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +0 -28
- package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +0 -191
- package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.h +0 -89
- package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +0 -18
- package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +0 -37
- package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.h +0 -6
- package/android/jni/lzma/CPP/7zip/Archive/Common/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Archive/DllExports2.cpp +0 -122
- package/android/jni/lzma/CPP/7zip/Archive/IArchive.h +0 -608
- package/android/jni/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Archive/LzmaHandler.cpp +0 -629
- package/android/jni/lzma/CPP/7zip/Archive/SplitHandler.cpp +0 -359
- package/android/jni/lzma/CPP/7zip/Archive/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Archive/XzHandler.cpp +0 -1308
- package/android/jni/lzma/CPP/7zip/Archive/XzHandler.h +0 -11
- package/android/jni/lzma/CPP/7zip/Asm.mak +0 -9
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +0 -1910
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/makefile +0 -154
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +0 -7
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +0 -96
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +0 -5
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/makefile +0 -116
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +0 -5
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +0 -799
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +0 -477
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile +0 -59
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +0 -195
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +0 -715
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +0 -912
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +0 -482
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/makefile +0 -134
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +0 -5
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +0 -246
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +0 -86
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +0 -137
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +0 -11
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +0 -803
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +0 -364
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +0 -13
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/makefile +0 -117
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +0 -6
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +0 -16
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +0 -988
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +0 -241
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +0 -14
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/makefile +0 -153
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.h +0 -1
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +0 -50
- package/android/jni/lzma/CPP/7zip/Common/CWrappers.cpp +0 -250
- package/android/jni/lzma/CPP/7zip/Common/CWrappers.h +0 -120
- package/android/jni/lzma/CPP/7zip/Common/CreateCoder.cpp +0 -536
- package/android/jni/lzma/CPP/7zip/Common/CreateCoder.h +0 -192
- package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +0 -46
- package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.h +0 -10
- package/android/jni/lzma/CPP/7zip/Common/FileStreams.cpp +0 -475
- package/android/jni/lzma/CPP/7zip/Common/FileStreams.h +0 -166
- package/android/jni/lzma/CPP/7zip/Common/FilterCoder.cpp +0 -435
- package/android/jni/lzma/CPP/7zip/Common/FilterCoder.h +0 -205
- package/android/jni/lzma/CPP/7zip/Common/InBuffer.cpp +0 -163
- package/android/jni/lzma/CPP/7zip/Common/InBuffer.h +0 -92
- package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +0 -127
- package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.h +0 -48
- package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.cpp +0 -367
- package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.h +0 -252
- package/android/jni/lzma/CPP/7zip/Common/LockedStream.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Common/LockedStream.h +0 -6
- package/android/jni/lzma/CPP/7zip/Common/MethodId.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/Common/MethodId.h +0 -10
- package/android/jni/lzma/CPP/7zip/Common/MethodProps.cpp +0 -509
- package/android/jni/lzma/CPP/7zip/Common/MethodProps.h +0 -264
- package/android/jni/lzma/CPP/7zip/Common/OffsetStream.cpp +0 -39
- package/android/jni/lzma/CPP/7zip/Common/OffsetStream.h +0 -26
- package/android/jni/lzma/CPP/7zip/Common/OutBuffer.cpp +0 -111
- package/android/jni/lzma/CPP/7zip/Common/OutBuffer.h +0 -66
- package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.cpp +0 -51
- package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.h +0 -35
- package/android/jni/lzma/CPP/7zip/Common/PropId.cpp +0 -108
- package/android/jni/lzma/CPP/7zip/Common/RegisterArc.h +0 -78
- package/android/jni/lzma/CPP/7zip/Common/RegisterCodec.h +0 -106
- package/android/jni/lzma/CPP/7zip/Common/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Common/StreamBinder.cpp +0 -156
- package/android/jni/lzma/CPP/7zip/Common/StreamBinder.h +0 -60
- package/android/jni/lzma/CPP/7zip/Common/StreamObjects.cpp +0 -285
- package/android/jni/lzma/CPP/7zip/Common/StreamObjects.h +0 -157
- package/android/jni/lzma/CPP/7zip/Common/StreamUtils.cpp +0 -56
- package/android/jni/lzma/CPP/7zip/Common/StreamUtils.h +0 -13
- package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.cpp +0 -57
- package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.h +0 -26
- package/android/jni/lzma/CPP/7zip/Common/VirtThread.cpp +0 -48
- package/android/jni/lzma/CPP/7zip/Common/VirtThread.h +0 -24
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +0 -666
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.h +0 -120
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Register.cpp +0 -24
- package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.cpp +0 -24
- package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.h +0 -31
- package/android/jni/lzma/CPP/7zip/Compress/BcjRegister.cpp +0 -17
- package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.cpp +0 -23
- package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.h +0 -35
- package/android/jni/lzma/CPP/7zip/Compress/BranchRegister.cpp +0 -41
- package/android/jni/lzma/CPP/7zip/Compress/ByteSwap.cpp +0 -92
- package/android/jni/lzma/CPP/7zip/Compress/CodecExports.cpp +0 -344
- package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.cpp +0 -120
- package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.h +0 -49
- package/android/jni/lzma/CPP/7zip/Compress/CopyRegister.cpp +0 -15
- package/android/jni/lzma/CPP/7zip/Compress/DeltaFilter.cpp +0 -128
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +0 -265
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.h +0 -96
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +0 -122
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.h +0 -42
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Register.cpp +0 -22
- package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +0 -343
- package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.h +0 -113
- package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +0 -182
- package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.h +0 -46
- package/android/jni/lzma/CPP/7zip/Compress/LzmaRegister.cpp +0 -22
- package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +0 -170
- package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.h +0 -86
- package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +0 -152
- package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.h +0 -58
- package/android/jni/lzma/CPP/7zip/Compress/PpmdRegister.cpp +0 -22
- package/android/jni/lzma/CPP/7zip/Compress/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.cpp +0 -150
- package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.h +0 -92
- package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.cpp +0 -245
- package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.h +0 -46
- package/android/jni/lzma/CPP/7zip/Crc.mak +0 -8
- package/android/jni/lzma/CPP/7zip/Crc64.mak +0 -8
- package/android/jni/lzma/CPP/7zip/Crypto/7zAes.cpp +0 -280
- package/android/jni/lzma/CPP/7zip/Crypto/7zAes.h +0 -118
- package/android/jni/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +0 -17
- package/android/jni/lzma/CPP/7zip/Crypto/MyAes.cpp +0 -112
- package/android/jni/lzma/CPP/7zip/Crypto/MyAes.h +0 -57
- package/android/jni/lzma/CPP/7zip/Crypto/MyAesReg.cpp +0 -16
- package/android/jni/lzma/CPP/7zip/Crypto/RandGen.cpp +0 -233
- package/android/jni/lzma/CPP/7zip/Crypto/RandGen.h +0 -40
- package/android/jni/lzma/CPP/7zip/Crypto/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/GuiCommon.rc +0 -84
- package/android/jni/lzma/CPP/7zip/Guid.txt +0 -220
- package/android/jni/lzma/CPP/7zip/ICoder.h +0 -399
- package/android/jni/lzma/CPP/7zip/IDecl.h +0 -28
- package/android/jni/lzma/CPP/7zip/IPassword.h +0 -23
- package/android/jni/lzma/CPP/7zip/IProgress.h +0 -19
- package/android/jni/lzma/CPP/7zip/IStream.h +0 -127
- package/android/jni/lzma/CPP/7zip/LzmaDec.mak +0 -5
- package/android/jni/lzma/CPP/7zip/MyVersion.h +0 -2
- package/android/jni/lzma/CPP/7zip/MyVersionInfo.rc +0 -2
- package/android/jni/lzma/CPP/7zip/PropID.h +0 -127
- package/android/jni/lzma/CPP/7zip/SubBuild.mak +0 -3
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +0 -993
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +0 -235
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +0 -29
- package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/UI/Client7z/makefile +0 -28
- package/android/jni/lzma/CPP/7zip/UI/Client7z/resource.rc +0 -3
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +0 -1295
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +0 -136
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +0 -1715
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +0 -403
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +0 -155
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.h +0 -10
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +0 -161
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +0 -112
- package/android/jni/lzma/CPP/7zip/UI/Common/Bench.cpp +0 -3618
- package/android/jni/lzma/CPP/7zip/UI/Common/Bench.h +0 -77
- package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.cpp +0 -37
- package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.h +0 -11
- package/android/jni/lzma/CPP/7zip/UI/Common/DirItem.h +0 -190
- package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +0 -1096
- package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.h +0 -42
- package/android/jni/lzma/CPP/7zip/UI/Common/ExitCode.h +0 -27
- package/android/jni/lzma/CPP/7zip/UI/Common/Extract.cpp +0 -482
- package/android/jni/lzma/CPP/7zip/UI/Common/Extract.h +0 -94
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractMode.h +0 -34
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +0 -280
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +0 -31
- package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.cpp +0 -347
- package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.h +0 -110
- package/android/jni/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +0 -114
- package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +0 -1074
- package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.h +0 -424
- package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +0 -3553
- package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.h +0 -436
- package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +0 -668
- package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.h +0 -18
- package/android/jni/lzma/CPP/7zip/UI/Common/Property.h +0 -14
- package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.cpp +0 -80
- package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.h +0 -10
- package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.cpp +0 -25
- package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.h +0 -10
- package/android/jni/lzma/CPP/7zip/UI/Common/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.cpp +0 -19
- package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.h +0 -16
- package/android/jni/lzma/CPP/7zip/UI/Common/Update.cpp +0 -1704
- package/android/jni/lzma/CPP/7zip/UI/Common/Update.h +0 -200
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +0 -64
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.h +0 -66
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +0 -771
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.h +0 -162
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +0 -233
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.h +0 -27
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +0 -70
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.h +0 -55
- package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.cpp +0 -94
- package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.h +0 -26
- package/android/jni/lzma/CPP/7zip/UI/Common/ZipRegistry.h +0 -130
- package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.cpp +0 -41
- package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.h +0 -14
- package/android/jni/lzma/CPP/7zip/UI/Console/Console.mak +0 -43
- package/android/jni/lzma/CPP/7zip/UI/Console/Console.manifest +0 -13
- package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +0 -69
- package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.h +0 -33
- package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +0 -825
- package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +0 -164
- package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.cpp +0 -367
- package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.h +0 -48
- package/android/jni/lzma/CPP/7zip/UI/Console/List.cpp +0 -1359
- package/android/jni/lzma/CPP/7zip/UI/Console/List.h +0 -27
- package/android/jni/lzma/CPP/7zip/UI/Console/Main.cpp +0 -1154
- package/android/jni/lzma/CPP/7zip/UI/Console/MainAr.cpp +0 -175
- package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +0 -115
- package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +0 -66
- package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +0 -183
- package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.h +0 -62
- package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.cpp +0 -3
- package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +0 -702
- package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +0 -124
- package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +0 -110
- package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.h +0 -27
- package/android/jni/lzma/CPP/7zip/UI/Console/makefile +0 -64
- package/android/jni/lzma/CPP/7zip/UI/Console/resource.rc +0 -7
- package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +0 -37
- package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.h +0 -16
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +0 -1025
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +0 -21
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +0 -9
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +0 -64
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +0 -28
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +0 -4
- package/android/jni/lzma/CPP/7zip/UI/FileManager/DialogSize.h +0 -16
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +0 -1037
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +0 -328
- package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +0 -28
- package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +0 -14
- package/android/jni/lzma/CPP/7zip/UI/FileManager/LangUtils.h +0 -40
- package/android/jni/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +0 -76
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +0 -122
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +0 -69
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +0 -91
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +0 -17
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +0 -58
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +0 -28
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +0 -14
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +0 -5
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +0 -196
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +0 -170
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +0 -12
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +0 -1337
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +0 -351
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +0 -40
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +0 -48
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +0 -80
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +0 -3
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +0 -23
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.h +0 -10
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +0 -95
- package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +0 -255
- package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +0 -62
- package/android/jni/lzma/CPP/7zip/UI/FileManager/resource.h +0 -177
- package/android/jni/lzma/CPP/7zip/UI/FileManager/resourceGui.h +0 -15
- package/android/jni/lzma/CPP/7zip/UI/GUI/Extract.rc +0 -59
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +0 -418
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +0 -113
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +0 -98
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +0 -24
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +0 -280
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +0 -38
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractRes.h +0 -51
- package/android/jni/lzma/CPP/7zip/UI/GUI/HashGUI.h +0 -27
- package/android/jni/lzma/CPP/7zip/UI/GUI/resource2.h +0 -2
- package/android/jni/lzma/CPP/Build.mak +0 -156
- package/android/jni/lzma/CPP/Common/AutoPtr.h +0 -35
- package/android/jni/lzma/CPP/Common/CRC.cpp +0 -7
- package/android/jni/lzma/CPP/Common/C_FileIO.cpp +0 -92
- package/android/jni/lzma/CPP/Common/C_FileIO.h +0 -53
- package/android/jni/lzma/CPP/Common/ComTry.h +0 -21
- package/android/jni/lzma/CPP/Common/CommandLineParser.cpp +0 -197
- package/android/jni/lzma/CPP/Common/CommandLineParser.h +0 -63
- package/android/jni/lzma/CPP/Common/Common.h +0 -43
- package/android/jni/lzma/CPP/Common/CrcReg.cpp +0 -98
- package/android/jni/lzma/CPP/Common/Defs.h +0 -15
- package/android/jni/lzma/CPP/Common/DynamicBuffer.h +0 -64
- package/android/jni/lzma/CPP/Common/IntToString.cpp +0 -193
- package/android/jni/lzma/CPP/Common/IntToString.h +0 -28
- package/android/jni/lzma/CPP/Common/Lang.h +0 -23
- package/android/jni/lzma/CPP/Common/ListFileUtils.cpp +0 -132
- package/android/jni/lzma/CPP/Common/ListFileUtils.h +0 -18
- package/android/jni/lzma/CPP/Common/MyBuffer.h +0 -259
- package/android/jni/lzma/CPP/Common/MyBuffer2.h +0 -100
- package/android/jni/lzma/CPP/Common/MyCom.h +0 -277
- package/android/jni/lzma/CPP/Common/MyException.h +0 -14
- package/android/jni/lzma/CPP/Common/MyGuidDef.h +0 -54
- package/android/jni/lzma/CPP/Common/MyInitGuid.h +0 -45
- package/android/jni/lzma/CPP/Common/MyLinux.h +0 -42
- package/android/jni/lzma/CPP/Common/MyString.cpp +0 -1659
- package/android/jni/lzma/CPP/Common/MyString.h +0 -868
- package/android/jni/lzma/CPP/Common/MyTypes.h +0 -35
- package/android/jni/lzma/CPP/Common/MyUnknown.h +0 -17
- package/android/jni/lzma/CPP/Common/MyVector.cpp +0 -3
- package/android/jni/lzma/CPP/Common/MyVector.h +0 -634
- package/android/jni/lzma/CPP/Common/MyWindows.cpp +0 -145
- package/android/jni/lzma/CPP/Common/MyWindows.h +0 -231
- package/android/jni/lzma/CPP/Common/NewHandler.cpp +0 -163
- package/android/jni/lzma/CPP/Common/NewHandler.h +0 -88
- package/android/jni/lzma/CPP/Common/Sha256Reg.cpp +0 -40
- package/android/jni/lzma/CPP/Common/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/Common/StdInStream.cpp +0 -89
- package/android/jni/lzma/CPP/Common/StdInStream.h +0 -38
- package/android/jni/lzma/CPP/Common/StdOutStream.cpp +0 -163
- package/android/jni/lzma/CPP/Common/StdOutStream.h +0 -71
- package/android/jni/lzma/CPP/Common/StringConvert.cpp +0 -319
- package/android/jni/lzma/CPP/Common/StringConvert.h +0 -88
- package/android/jni/lzma/CPP/Common/StringToInt.cpp +0 -144
- package/android/jni/lzma/CPP/Common/StringToInt.h +0 -21
- package/android/jni/lzma/CPP/Common/TextConfig.cpp +0 -124
- package/android/jni/lzma/CPP/Common/TextConfig.h +0 -19
- package/android/jni/lzma/CPP/Common/UTFConvert.cpp +0 -288
- package/android/jni/lzma/CPP/Common/UTFConvert.h +0 -12
- package/android/jni/lzma/CPP/Common/Wildcard.cpp +0 -676
- package/android/jni/lzma/CPP/Common/Wildcard.h +0 -149
- package/android/jni/lzma/CPP/Common/XzCrc64Init.cpp +0 -7
- package/android/jni/lzma/CPP/Common/XzCrc64Reg.cpp +0 -42
- package/android/jni/lzma/CPP/Windows/COM.h +0 -70
- package/android/jni/lzma/CPP/Windows/CommonDialog.cpp +0 -185
- package/android/jni/lzma/CPP/Windows/CommonDialog.h +0 -23
- package/android/jni/lzma/CPP/Windows/Control/ComboBox.cpp +0 -66
- package/android/jni/lzma/CPP/Windows/Control/ComboBox.h +0 -65
- package/android/jni/lzma/CPP/Windows/Control/CommandBar.h +0 -52
- package/android/jni/lzma/CPP/Windows/Control/Dialog.cpp +0 -251
- package/android/jni/lzma/CPP/Windows/Control/Dialog.h +0 -170
- package/android/jni/lzma/CPP/Windows/Control/Edit.h +0 -19
- package/android/jni/lzma/CPP/Windows/Control/ImageList.cpp +0 -10
- package/android/jni/lzma/CPP/Windows/Control/ImageList.h +0 -87
- package/android/jni/lzma/CPP/Windows/Control/ListView.cpp +0 -155
- package/android/jni/lzma/CPP/Windows/Control/ListView.h +0 -146
- package/android/jni/lzma/CPP/Windows/Control/ProgressBar.h +0 -35
- package/android/jni/lzma/CPP/Windows/Control/PropertyPage.cpp +0 -143
- package/android/jni/lzma/CPP/Windows/Control/PropertyPage.h +0 -50
- package/android/jni/lzma/CPP/Windows/Control/ReBar.h +0 -34
- package/android/jni/lzma/CPP/Windows/Control/Static.h +0 -28
- package/android/jni/lzma/CPP/Windows/Control/StatusBar.h +0 -42
- package/android/jni/lzma/CPP/Windows/Control/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/Windows/Control/ToolBar.h +0 -43
- package/android/jni/lzma/CPP/Windows/Control/Trackbar.h +0 -27
- package/android/jni/lzma/CPP/Windows/Control/Window2.cpp +0 -200
- package/android/jni/lzma/CPP/Windows/Control/Window2.h +0 -51
- package/android/jni/lzma/CPP/Windows/DLL.cpp +0 -109
- package/android/jni/lzma/CPP/Windows/DLL.h +0 -58
- package/android/jni/lzma/CPP/Windows/Defs.h +0 -17
- package/android/jni/lzma/CPP/Windows/ErrorMsg.cpp +0 -66
- package/android/jni/lzma/CPP/Windows/ErrorMsg.h +0 -15
- package/android/jni/lzma/CPP/Windows/FileDir.cpp +0 -714
- package/android/jni/lzma/CPP/Windows/FileDir.h +0 -117
- package/android/jni/lzma/CPP/Windows/FileFind.cpp +0 -749
- package/android/jni/lzma/CPP/Windows/FileFind.h +0 -161
- package/android/jni/lzma/CPP/Windows/FileIO.cpp +0 -432
- package/android/jni/lzma/CPP/Windows/FileIO.h +0 -212
- package/android/jni/lzma/CPP/Windows/FileLink.cpp +0 -440
- package/android/jni/lzma/CPP/Windows/FileMapping.cpp +0 -12
- package/android/jni/lzma/CPP/Windows/FileMapping.h +0 -66
- package/android/jni/lzma/CPP/Windows/FileName.cpp +0 -839
- package/android/jni/lzma/CPP/Windows/FileName.h +0 -115
- package/android/jni/lzma/CPP/Windows/FileSystem.cpp +0 -131
- package/android/jni/lzma/CPP/Windows/FileSystem.h +0 -27
- package/android/jni/lzma/CPP/Windows/Handle.h +0 -37
- package/android/jni/lzma/CPP/Windows/MemoryLock.cpp +0 -112
- package/android/jni/lzma/CPP/Windows/MemoryLock.h +0 -40
- package/android/jni/lzma/CPP/Windows/NtCheck.h +0 -46
- package/android/jni/lzma/CPP/Windows/PropVariant.cpp +0 -347
- package/android/jni/lzma/CPP/Windows/PropVariant.h +0 -114
- package/android/jni/lzma/CPP/Windows/PropVariantConv.cpp +0 -138
- package/android/jni/lzma/CPP/Windows/PropVariantConv.h +0 -37
- package/android/jni/lzma/CPP/Windows/Registry.cpp +0 -390
- package/android/jni/lzma/CPP/Windows/Registry.h +0 -84
- package/android/jni/lzma/CPP/Windows/ResourceString.cpp +0 -103
- package/android/jni/lzma/CPP/Windows/ResourceString.h +0 -16
- package/android/jni/lzma/CPP/Windows/SecurityUtils.cpp +0 -181
- package/android/jni/lzma/CPP/Windows/SecurityUtils.h +0 -167
- package/android/jni/lzma/CPP/Windows/Shell.cpp +0 -358
- package/android/jni/lzma/CPP/Windows/Shell.h +0 -94
- package/android/jni/lzma/CPP/Windows/StdAfx.h +0 -8
- package/android/jni/lzma/CPP/Windows/Synchronization.cpp +0 -10
- package/android/jni/lzma/CPP/Windows/Synchronization.h +0 -164
- package/android/jni/lzma/CPP/Windows/System.cpp +0 -142
- package/android/jni/lzma/CPP/Windows/System.h +0 -40
- package/android/jni/lzma/CPP/Windows/Thread.h +0 -38
- package/android/jni/lzma/CPP/Windows/TimeUtils.cpp +0 -213
- package/android/jni/lzma/CPP/Windows/TimeUtils.h +0 -32
- package/android/jni/lzma/CPP/Windows/Window.cpp +0 -179
- package/android/jni/lzma/CPP/Windows/Window.h +0 -284
- package/android/jni/lzma/CS/7zip/Common/CRC.cs +0 -55
- package/android/jni/lzma/CS/7zip/Common/CommandLineParser.cs +0 -274
- package/android/jni/lzma/CS/7zip/Common/InBuffer.cs +0 -72
- package/android/jni/lzma/CS/7zip/Common/OutBuffer.cs +0 -47
- package/android/jni/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +0 -24
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +0 -367
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +0 -132
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +0 -110
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +0 -76
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +0 -398
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +0 -1480
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +0 -364
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +0 -90
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +0 -20
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +0 -340
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +0 -29
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +0 -70
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +0 -42
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +0 -234
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +0 -117
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +0 -157
- package/android/jni/lzma/CS/7zip/ICoder.cs +0 -157
- package/android/jni/lzma/DOC/7zC.txt +0 -187
- package/android/jni/lzma/DOC/7zFormat.txt +0 -469
- package/android/jni/lzma/DOC/Methods.txt +0 -173
- package/android/jni/lzma/DOC/installer.txt +0 -166
- package/android/jni/lzma/DOC/lzma-history.txt +0 -446
- package/android/jni/lzma/DOC/lzma-specification.txt +0 -1176
- package/android/jni/lzma/DOC/lzma.txt +0 -328
- package/android/jni/lzma/Java/SevenZip/CRC.java +0 -52
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/BinTree.java +0 -382
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/InWindow.java +0 -131
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +0 -85
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Base.java +0 -88
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +0 -329
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +0 -1416
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +0 -55
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +0 -99
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +0 -88
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +0 -151
- package/android/jni/lzma/Java/SevenZip/ICodeProgress.java +0 -6
- package/android/jni/lzma/Java/SevenZip/LzmaAlone.java +0 -253
- package/android/jni/lzma/Java/SevenZip/LzmaBench.java +0 -392
- package/android/jni/lzma/bin/7zS2.sfx +0 -0
- package/android/jni/lzma/bin/7zS2con.sfx +0 -0
- package/android/jni/lzma/bin/7zSD.sfx +0 -0
- package/android/jni/lzma/bin/7zdec.exe +0 -0
- package/android/jni/lzma/bin/7zr.exe +0 -0
- package/android/jni/lzma/bin/installer/config.txt +0 -5
- package/android/jni/lzma/bin/installer/cr.bat +0 -5
- package/android/jni/lzma/bin/lzma.exe +0 -0
- package/android/jni/lzma/bin/x64/7zr.exe +0 -0
- package/android/src/main/java/cn/reactnative/modules/update/ArchivePatchPlanResult.java +0 -6
- package/android/src/main/java/cn/reactnative/modules/update/PushyConfiguration.java +0 -104
- package/android/src/main/java/cn/reactnative/modules/update/UiThreadRunner.java +0 -37
- package/android/src/newarch/cn/reactnative/modules/update/UpdateModule.java +0 -121
- package/android/src/oldarch/cn/reactnative/modules/update/UpdateModule.java +0 -125
- package/cpp/patch_core/jni_natives.h +0 -27
- package/cpp/patch_core/jni_registration.cpp +0 -103
- package/cpp/patch_core/jni_util.h +0 -60
- package/cpp/patch_core/patch_core_android.cpp +0 -97
- package/cpp/patch_core/update_core_android.cpp +0 -485
- package/cpp/update_flow_core/update_flow_jni.cpp +0 -150
|
@@ -4,7 +4,12 @@ import common from '@ohos.app.ability.common';
|
|
|
4
4
|
import { zlib } from '@kit.BasicServicesKit';
|
|
5
5
|
import { EventHub } from './EventHub';
|
|
6
6
|
import { DownloadTaskParams } from './DownloadTaskParams';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
saveFileToSandbox,
|
|
9
|
+
unlinkIfExists,
|
|
10
|
+
withRawFd,
|
|
11
|
+
writeFully,
|
|
12
|
+
} from './SaveFile';
|
|
8
13
|
import { util } from '@kit.ArkTS';
|
|
9
14
|
import NativePatchCore, {
|
|
10
15
|
ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
|
|
@@ -16,16 +21,16 @@ import logger from './Logger';
|
|
|
16
21
|
import {
|
|
17
22
|
MAX_ARCHIVE_BYTES,
|
|
18
23
|
MAX_MANIFEST_BYTES,
|
|
19
|
-
|
|
24
|
+
checkExtractedDirectory,
|
|
25
|
+
checkOriginalSize,
|
|
20
26
|
checkUncompressedSize,
|
|
21
27
|
ensureFreeSpace,
|
|
22
|
-
measureExtractedDirectory,
|
|
23
28
|
} from './ArchiveLimits';
|
|
24
29
|
import {
|
|
25
30
|
HARMONY_BUNDLE_FILE_NAME,
|
|
26
|
-
|
|
31
|
+
promoteStaging,
|
|
32
|
+
sealInstallRecord,
|
|
27
33
|
stagingDirectoryFor,
|
|
28
|
-
writeInstallRecord,
|
|
29
34
|
} from './InstallRecord';
|
|
30
35
|
import {
|
|
31
36
|
ERROR_DOWNLOAD_FAILED,
|
|
@@ -38,141 +43,45 @@ import {
|
|
|
38
43
|
} from './ErrorCodes';
|
|
39
44
|
import { BUNDLE_DELTA_ENTRY } from './Texts';
|
|
40
45
|
|
|
46
|
+
// 连接超时,与 Android DownloadTask 的 connectTimeout(15s)一致。
|
|
47
|
+
const CONNECT_TIMEOUT_MS = 15000;
|
|
41
48
|
const TAG = 'DownloadTask';
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
copyTos: string[];
|
|
46
|
-
// 与 copyFroms/copyTos 逐位对齐的 copiesCrc(CLI >= 2.21.2 的 pdiff
|
|
47
|
-
// manifest 携带,键是 to);无声明时为 null。拷贝前用它校验包内资源内容,
|
|
48
|
-
// 不符则整次 patch 失败落 full——重打包二进制不能静默拷出漂移的资源。
|
|
49
|
-
copyCrcs: (number | null)[];
|
|
50
|
-
deletes: string[];
|
|
51
|
-
// __diff.json 中对应 bundle patch 条目的 hbcTransform 元数据(原始 JSON
|
|
52
|
-
// 字符串);为空时 native 走现状路径
|
|
53
|
-
hbcTransformMeta: string;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function parseManifestToArrays(
|
|
57
|
-
manifest: Record<string, any>,
|
|
58
|
-
normalizeResourceCopies: boolean,
|
|
59
|
-
): PatchManifestArrays {
|
|
60
|
-
const copyFroms: string[] = [];
|
|
61
|
-
const copyTos: string[] = [];
|
|
62
|
-
const copyCrcs: (number | null)[] = [];
|
|
63
|
-
const deletesValue = manifest.deletes;
|
|
64
|
-
const deletes = Array.isArray(deletesValue)
|
|
65
|
-
? deletesValue.map(item => String(item))
|
|
66
|
-
: deletesValue && typeof deletesValue === 'object'
|
|
67
|
-
? Object.keys(deletesValue)
|
|
68
|
-
: [];
|
|
69
|
-
|
|
70
|
-
const copies = (manifest.copies || {}) as Record<string, string>;
|
|
71
|
-
const copiesCrcValue = manifest.copiesCrc;
|
|
72
|
-
const copiesCrc =
|
|
73
|
-
copiesCrcValue && typeof copiesCrcValue === 'object'
|
|
74
|
-
? (copiesCrcValue as Record<string, number>)
|
|
75
|
-
: ({} as Record<string, number>);
|
|
76
|
-
for (const to of Object.keys(copies)) {
|
|
77
|
-
const rawFrom = copies[to];
|
|
78
|
-
let from = String(rawFrom || '');
|
|
79
|
-
if (normalizeResourceCopies) {
|
|
80
|
-
from = from.replace('resources/rawfile/', '');
|
|
81
|
-
if (!from) {
|
|
82
|
-
from = to;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
copyFroms.push(from);
|
|
86
|
-
copyTos.push(to);
|
|
87
|
-
const crc = copiesCrc[to];
|
|
88
|
-
copyCrcs.push(typeof crc === 'number' && Number.isFinite(crc) ? crc : null);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const hbcTransform = manifest.hbcTransform as
|
|
92
|
-
| Record<string, object>
|
|
93
|
-
| undefined;
|
|
94
|
-
const hbcTransformEntry =
|
|
95
|
-
hbcTransform && typeof hbcTransform === 'object'
|
|
96
|
-
? hbcTransform[BUNDLE_DELTA_ENTRY]
|
|
97
|
-
: undefined;
|
|
98
|
-
const hbcTransformMeta =
|
|
99
|
-
hbcTransformEntry && typeof hbcTransformEntry === 'object'
|
|
100
|
-
? JSON.stringify(hbcTransformEntry)
|
|
101
|
-
: '';
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
copyFroms,
|
|
105
|
-
copyTos,
|
|
106
|
-
copyCrcs,
|
|
107
|
-
deletes,
|
|
108
|
-
hbcTransformMeta,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
|
|
50
|
+
// staging 目录里的条目名 + __diff.json 原文:由原生内核统一校验与解析
|
|
51
|
+
// (cpp/patch_core/patch_manifest.h),这里不解析 manifest。
|
|
112
52
|
interface DeltaInputs {
|
|
113
53
|
entryNames: string[];
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function toArrayBufferSlice(
|
|
118
|
-
payload: Uint8Array,
|
|
119
|
-
offset: number,
|
|
120
|
-
length: number,
|
|
121
|
-
): ArrayBuffer {
|
|
122
|
-
return (payload.buffer as ArrayBuffer).slice(
|
|
123
|
-
payload.byteOffset + offset,
|
|
124
|
-
payload.byteOffset + offset + length,
|
|
125
|
-
);
|
|
54
|
+
manifestJson: string;
|
|
126
55
|
}
|
|
127
56
|
|
|
57
|
+
// 包内 rawfile 在 HAP 中的路径前缀:pdiff 的拷贝源按 HAP 路径命名,
|
|
58
|
+
// resourceManager 按去掉前缀后的路径读取。原生解析时只剥开头一次。
|
|
59
|
+
const RAWFILE_COPY_SOURCE_PREFIX = 'resources/rawfile/';
|
|
128
60
|
const DIFF_MANIFEST_ENTRY = '__diff.json';
|
|
129
|
-
const TEMP_ORIGIN_BUNDLE_ENTRY =
|
|
130
|
-
const FILE_COPY_BUFFER_SIZE = 64 * 1024;
|
|
61
|
+
const TEMP_ORIGIN_BUNDLE_ENTRY = `.origin.${HARMONY_BUNDLE_FILE_NAME}`;
|
|
131
62
|
const DOWNLOAD_CALL_TIMEOUT_MS = 10 * 60 * 1000;
|
|
132
63
|
|
|
133
64
|
// 断点续传 sidecar(NATIVE_CHECKUPDATE_DESIGN §11.4):记录 partial 属于
|
|
134
65
|
// 哪个 url、验证器与总长。归档与 sidecar 同生共死;有归档无 sidecar(或
|
|
135
|
-
// url 不符)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
66
|
+
// url 不符)一律视为不可信,删掉重来。续传的所有判定(读 sidecar、发不发
|
|
67
|
+
// Range、响应怎么处理、写什么 sidecar)都在共享内核
|
|
68
|
+
// cpp/patch_core/resume_plan.h,与 Android/iOS 同一份实现,这里只做 IO。
|
|
69
|
+
const MAX_SIDECAR_BYTES = 64 * 1024;
|
|
70
|
+
|
|
71
|
+
interface ResumeRequestPlan {
|
|
72
|
+
action: string;
|
|
140
73
|
total?: number;
|
|
74
|
+
offset?: number;
|
|
75
|
+
headers?: Record<string, string>;
|
|
141
76
|
}
|
|
142
77
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
): number {
|
|
151
|
-
if (!header.startsWith('bytes ')) {
|
|
152
|
-
return -1;
|
|
153
|
-
}
|
|
154
|
-
const range = header.substring('bytes '.length).trim();
|
|
155
|
-
const slash = range.indexOf('/');
|
|
156
|
-
const dash = range.indexOf('-');
|
|
157
|
-
if (slash < 0 || dash < 0 || dash > slash) {
|
|
158
|
-
return -1;
|
|
159
|
-
}
|
|
160
|
-
const start = parseInt(range.substring(0, dash).trim(), 10);
|
|
161
|
-
const end = parseInt(range.substring(dash + 1, slash).trim(), 10);
|
|
162
|
-
if (
|
|
163
|
-
Number.isNaN(start) ||
|
|
164
|
-
Number.isNaN(end) ||
|
|
165
|
-
start !== expectedStart ||
|
|
166
|
-
end < start
|
|
167
|
-
) {
|
|
168
|
-
return -1;
|
|
169
|
-
}
|
|
170
|
-
const totalPart = range.substring(slash + 1).trim();
|
|
171
|
-
if (totalPart === '*') {
|
|
172
|
-
return 0;
|
|
173
|
-
}
|
|
174
|
-
const total = parseInt(totalPart, 10);
|
|
175
|
-
return Number.isNaN(total) || total <= end ? -1 : total;
|
|
78
|
+
interface ResumeResponseDecision {
|
|
79
|
+
action: string;
|
|
80
|
+
total?: number;
|
|
81
|
+
append?: boolean;
|
|
82
|
+
base?: number;
|
|
83
|
+
encoded?: boolean;
|
|
84
|
+
persistSidecar?: boolean;
|
|
176
85
|
}
|
|
177
86
|
|
|
178
87
|
export class DownloadTask {
|
|
@@ -194,23 +103,12 @@ export class DownloadTask {
|
|
|
194
103
|
|
|
195
104
|
private async promoteStaging(params: DownloadTaskParams): Promise<void> {
|
|
196
105
|
const work = this.stagingDirectory(params);
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
throw createPushyError(
|
|
200
|
-
ERROR_DELTA_FAILED,
|
|
201
|
-
`bundle missing after install: ${bundlePath}`,
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
// 整 bundle 几十 MB:摘要在 native 工作线程算,不冻结 UI 线程。
|
|
205
|
-
const bundleSha256 = await NativePatchCore.sha256HexFileAsync(bundlePath);
|
|
206
|
-
await writeInstallRecord(
|
|
207
|
-
work,
|
|
208
|
-
buildInstallRecord(params.hash, bundleSha256, this.artifactSha256),
|
|
209
|
-
);
|
|
106
|
+
// 整 bundle 几十 MB:摘要与记录写入在 native 工作线程完成,不冻结 UI 线程。
|
|
107
|
+
await sealInstallRecord(work, params.hash, this.artifactSha256);
|
|
210
108
|
if (fileIo.accessSync(params.unzipDirectory)) {
|
|
211
109
|
await this.removeDirectory(params.unzipDirectory);
|
|
212
110
|
}
|
|
213
|
-
await
|
|
111
|
+
await promoteStaging(work, params.unzipDirectory);
|
|
214
112
|
}
|
|
215
113
|
|
|
216
114
|
constructor(context: common.Context) {
|
|
@@ -222,33 +120,33 @@ export class DownloadTask {
|
|
|
222
120
|
return `${targetFile}.resume`;
|
|
223
121
|
}
|
|
224
122
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
): Promise<ResumeMeta | null> {
|
|
123
|
+
// sidecar 原文;不存在、超过 sidecar 应有的大小或读失败时为 ""
|
|
124
|
+
// (共享内核把这些都当作“没有可信的 partial”)。
|
|
125
|
+
private async readSidecarText(targetFile: string): Promise<string> {
|
|
229
126
|
const sidecar = this.resumeSidecarPath(targetFile);
|
|
230
|
-
if (!fileIo.accessSync(sidecar)) {
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
127
|
try {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
128
|
+
if (!fileIo.accessSync(sidecar)) {
|
|
129
|
+
return '';
|
|
130
|
+
}
|
|
131
|
+
const stat = await fileIo.stat(sidecar);
|
|
132
|
+
if (stat.size > MAX_SIDECAR_BYTES) {
|
|
133
|
+
return '';
|
|
239
134
|
}
|
|
135
|
+
return new util.TextDecoder().decodeToString(
|
|
136
|
+
new Uint8Array(await this.readFileContent(sidecar)),
|
|
137
|
+
);
|
|
240
138
|
} catch (e) {
|
|
241
139
|
// 坏 sidecar 只意味着“无法续传”。
|
|
140
|
+
return '';
|
|
242
141
|
}
|
|
243
|
-
return null;
|
|
244
142
|
}
|
|
245
143
|
|
|
246
|
-
private async
|
|
144
|
+
private async writeSidecarText(
|
|
247
145
|
targetFile: string,
|
|
248
|
-
|
|
146
|
+
text: string,
|
|
249
147
|
): Promise<void> {
|
|
250
148
|
try {
|
|
251
|
-
const encoded = new util.TextEncoder().encodeInto(
|
|
149
|
+
const encoded = new util.TextEncoder().encodeInto(text);
|
|
252
150
|
await this.writeFileContent(this.resumeSidecarPath(targetFile), encoded);
|
|
253
151
|
} catch (e) {
|
|
254
152
|
// 非致命:没有 sidecar,下次从零开始。
|
|
@@ -258,10 +156,7 @@ export class DownloadTask {
|
|
|
258
156
|
|
|
259
157
|
private async deleteResumeSidecar(targetFile: string): Promise<void> {
|
|
260
158
|
try {
|
|
261
|
-
|
|
262
|
-
if (fileIo.accessSync(sidecar)) {
|
|
263
|
-
await fileIo.unlink(sidecar);
|
|
264
|
-
}
|
|
159
|
+
await unlinkIfExists(this.resumeSidecarPath(targetFile));
|
|
265
160
|
} catch (e) {
|
|
266
161
|
logger.error(TAG, `Failed to delete resume sidecar: ${getErrorMessage(e)}`);
|
|
267
162
|
}
|
|
@@ -270,9 +165,7 @@ export class DownloadTask {
|
|
|
270
165
|
// 归档连同 sidecar 一起删除(被消费或被判定有毒)。
|
|
271
166
|
private async deleteArchiveAndSidecar(targetFile: string): Promise<void> {
|
|
272
167
|
try {
|
|
273
|
-
|
|
274
|
-
await fileIo.unlink(targetFile);
|
|
275
|
-
}
|
|
168
|
+
await unlinkIfExists(targetFile);
|
|
276
169
|
} catch (e) {
|
|
277
170
|
logger.error(TAG, `Failed to delete archive: ${getErrorMessage(e)}`);
|
|
278
171
|
}
|
|
@@ -328,35 +221,37 @@ export class DownloadTask {
|
|
|
328
221
|
|
|
329
222
|
/**
|
|
330
223
|
* 解压前读取归档解压后的总字节数(zlib.getOriginalSize,API 12——RNOH 的
|
|
331
|
-
* 最低 API 已覆盖)
|
|
332
|
-
*
|
|
333
|
-
*
|
|
224
|
+
* 最低 API 已覆盖)。读不到就拒绝归档(checkOriginalSize):zlib.decompressFile
|
|
225
|
+
* 没有逐条钩子,不知道展开量就放行等于允许一个 20MB 的归档在
|
|
226
|
+
* checkExtractedDirectory 跑到之前先把磁盘写满。拒绝带专属错误细节
|
|
227
|
+
* (ORIGINAL_SIZE_UNAVAILABLE)并单独记日志,与"超限"拒绝可区分。
|
|
334
228
|
*/
|
|
335
229
|
private async readOriginalSize(archiveFile: string): Promise<number> {
|
|
336
230
|
let size: number | undefined;
|
|
231
|
+
let failure: string | undefined;
|
|
337
232
|
try {
|
|
338
233
|
size = await zlib.getOriginalSize(archiveFile);
|
|
339
234
|
} catch (e) {
|
|
340
|
-
|
|
341
|
-
ERROR_DELTA_FAILED,
|
|
342
|
-
`cannot determine archive expansion size: ${getErrorMessage(e)}`,
|
|
343
|
-
);
|
|
235
|
+
failure = getErrorMessage(e);
|
|
344
236
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
237
|
+
try {
|
|
238
|
+
return checkOriginalSize(size, failure);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
logger.error(
|
|
241
|
+
TAG,
|
|
242
|
+
`Refusing archive, expansion size unknown: ${getErrorMessage(error)}`,
|
|
349
243
|
);
|
|
244
|
+
throw error;
|
|
350
245
|
}
|
|
351
|
-
return size;
|
|
352
246
|
}
|
|
353
247
|
|
|
354
248
|
/**
|
|
355
249
|
* 解压 + 资源上限(cpp/patch_core/archive_limits.h)。zlib.decompressFile
|
|
356
250
|
* 没有逐条钩子:解压前用 getOriginalSize 把总解压量与整包压缩比挡在
|
|
357
251
|
* 上限内(20MB 归档 100:1 的 2GB 载荷不会先解出来再量),按已知解压量查
|
|
358
|
-
*
|
|
359
|
-
*
|
|
252
|
+
* 磁盘,解压量未知直接拒绝;解压后再逐条核对条目数/单条大小/总字节数,
|
|
253
|
+
* 拒绝任意深度的 `.pushy-` 保留条目与符号链接(规则见
|
|
254
|
+
* cpp/patch_core/archive_limits.h;超限即失败,staging 目录由失败清理删除)。
|
|
360
255
|
*/
|
|
361
256
|
private async extractArchive(
|
|
362
257
|
archiveFile: string,
|
|
@@ -371,13 +266,13 @@ export class DownloadTask {
|
|
|
371
266
|
}
|
|
372
267
|
const originalSize = await this.readOriginalSize(archiveFile);
|
|
373
268
|
checkUncompressedSize(archiveStat.size, originalSize);
|
|
374
|
-
await ensureFreeSpace(unzipDirectory, originalSize);
|
|
269
|
+
await ensureFreeSpace(unzipDirectory, originalSize, ERROR_DELTA_FAILED);
|
|
375
270
|
try {
|
|
376
271
|
await zlib.decompressFile(archiveFile, unzipDirectory);
|
|
377
272
|
} catch (e) {
|
|
378
273
|
throw toPushyError(e, ERROR_DELTA_FAILED);
|
|
379
274
|
}
|
|
380
|
-
await
|
|
275
|
+
await checkExtractedDirectory(unzipDirectory, archiveStat.size);
|
|
381
276
|
}
|
|
382
277
|
|
|
383
278
|
private async recreateDirectory(path: string): Promise<void> {
|
|
@@ -415,33 +310,26 @@ export class DownloadTask {
|
|
|
415
310
|
): Promise<void> {
|
|
416
311
|
const payload =
|
|
417
312
|
content instanceof Uint8Array ? content : new Uint8Array(content);
|
|
313
|
+
// writeFully writes from the start of its buffer: a view into a larger
|
|
314
|
+
// buffer at a non-zero offset needs its own copy.
|
|
315
|
+
const bytes =
|
|
316
|
+
payload.byteOffset === 0
|
|
317
|
+
? (payload.buffer as ArrayBuffer)
|
|
318
|
+
: (payload.buffer as ArrayBuffer).slice(
|
|
319
|
+
payload.byteOffset,
|
|
320
|
+
payload.byteOffset + payload.byteLength,
|
|
321
|
+
);
|
|
418
322
|
await this.ensureParentDirectory(targetFile);
|
|
419
|
-
|
|
420
|
-
await fileIo.unlink(targetFile);
|
|
421
|
-
}
|
|
323
|
+
await unlinkIfExists(targetFile);
|
|
422
324
|
|
|
423
|
-
|
|
325
|
+
const writer = await fileIo.open(
|
|
326
|
+
targetFile,
|
|
327
|
+
fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
|
|
328
|
+
);
|
|
424
329
|
try {
|
|
425
|
-
writer
|
|
426
|
-
targetFile,
|
|
427
|
-
fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
|
|
428
|
-
);
|
|
429
|
-
const chunkSize = FILE_COPY_BUFFER_SIZE;
|
|
430
|
-
let bytesWritten = 0;
|
|
431
|
-
|
|
432
|
-
while (bytesWritten < payload.byteLength) {
|
|
433
|
-
const chunkLength = Math.min(
|
|
434
|
-
chunkSize,
|
|
435
|
-
payload.byteLength - bytesWritten,
|
|
436
|
-
);
|
|
437
|
-
const chunk = toArrayBufferSlice(payload, bytesWritten, chunkLength);
|
|
438
|
-
await fileIo.write(writer.fd, chunk);
|
|
439
|
-
bytesWritten += chunkLength;
|
|
440
|
-
}
|
|
330
|
+
await writeFully(writer.fd, bytes, payload.byteLength);
|
|
441
331
|
} finally {
|
|
442
|
-
|
|
443
|
-
await fileIo.close(writer);
|
|
444
|
-
}
|
|
332
|
+
await fileIo.close(writer);
|
|
445
333
|
}
|
|
446
334
|
}
|
|
447
335
|
|
|
@@ -451,19 +339,11 @@ export class DownloadTask {
|
|
|
451
339
|
) as Record<string, any>;
|
|
452
340
|
}
|
|
453
341
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
normalizeResourceCopies: boolean,
|
|
457
|
-
): Promise<PatchManifestArrays> {
|
|
342
|
+
// __diff.json 原文;归档里没有时为空串(原生内核报 "diff.json not found")。
|
|
343
|
+
private async readManifestJson(directory: string): Promise<string> {
|
|
458
344
|
const manifestPath = `${directory}/${DIFF_MANIFEST_ENTRY}`;
|
|
459
345
|
if (!fileIo.accessSync(manifestPath)) {
|
|
460
|
-
return
|
|
461
|
-
copyFroms: [],
|
|
462
|
-
copyTos: [],
|
|
463
|
-
copyCrcs: [],
|
|
464
|
-
deletes: [],
|
|
465
|
-
hbcTransformMeta: '',
|
|
466
|
-
};
|
|
346
|
+
return '';
|
|
467
347
|
}
|
|
468
348
|
|
|
469
349
|
const manifestStat = await fileIo.stat(manifestPath);
|
|
@@ -473,34 +353,39 @@ export class DownloadTask {
|
|
|
473
353
|
`delta manifest too large: ${manifestStat.size} bytes`,
|
|
474
354
|
);
|
|
475
355
|
}
|
|
476
|
-
return
|
|
477
|
-
|
|
478
|
-
normalizeResourceCopies,
|
|
356
|
+
return new util.TextDecoder().decodeToString(
|
|
357
|
+
new Uint8Array(await this.readFileContent(manifestPath)),
|
|
479
358
|
);
|
|
480
359
|
}
|
|
481
360
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
361
|
+
/**
|
|
362
|
+
* pdiff:hpatch 需要文件源,先把二进制内嵌的 bundle 从 rawfile descriptor
|
|
363
|
+
* 异步流式拷到 staging 里的临时文件(不整包读进内存、不在 UI 线程同步
|
|
364
|
+
* IO),原生内核只重建 bundle,拷贝分组交回由 copyFromResource 完成。
|
|
365
|
+
*/
|
|
366
|
+
private async applyPatchFromEmbeddedBundle(
|
|
367
|
+
work: string,
|
|
368
|
+
inputs: DeltaInputs,
|
|
369
|
+
): Promise<CopyGroupResult[]> {
|
|
370
|
+
const originBundlePath = `${work}/${TEMP_ORIGIN_BUNDLE_ENTRY}`;
|
|
491
371
|
try {
|
|
492
|
-
await
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
372
|
+
await withRawFd(
|
|
373
|
+
this.context.resourceManager,
|
|
374
|
+
HARMONY_BUNDLE_FILE_NAME,
|
|
375
|
+
descriptor => saveFileToSandbox(descriptor, originBundlePath),
|
|
376
|
+
);
|
|
377
|
+
return await NativePatchCore.applyArchiveDelta({
|
|
378
|
+
archiveType: ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
|
|
379
|
+
entryNames: inputs.entryNames,
|
|
380
|
+
manifestJson: inputs.manifestJson,
|
|
381
|
+
bundleDeltaEntry: BUNDLE_DELTA_ENTRY,
|
|
382
|
+
copySourcePrefix: RAWFILE_COPY_SOURCE_PREFIX,
|
|
383
|
+
sourceRoot: work,
|
|
384
|
+
targetRoot: work,
|
|
499
385
|
originBundlePath,
|
|
500
|
-
bundleDeltaPath
|
|
501
|
-
bundleOutputPath:
|
|
502
|
-
|
|
503
|
-
bundleHbcTransformMeta: hbcTransformMeta,
|
|
386
|
+
bundleDeltaPath: `${work}/${BUNDLE_DELTA_ENTRY}`,
|
|
387
|
+
bundleOutputPath: `${work}/${HARMONY_BUNDLE_FILE_NAME}`,
|
|
388
|
+
hostCopiesResources: true,
|
|
504
389
|
});
|
|
505
390
|
} catch (error) {
|
|
506
391
|
throw createPushyError(
|
|
@@ -508,56 +393,18 @@ export class DownloadTask {
|
|
|
508
393
|
`Failed to process bundle delta: ${getErrorMessage(error)}`,
|
|
509
394
|
);
|
|
510
395
|
} finally {
|
|
511
|
-
|
|
512
|
-
await fileIo.unlink(originBundlePath);
|
|
513
|
-
}
|
|
396
|
+
await unlinkIfExists(originBundlePath);
|
|
514
397
|
}
|
|
515
398
|
}
|
|
516
399
|
|
|
400
|
+
// 沙箱内文件复制(同一 rawfile 落到多个目标时,首个之外的目标从首个复制)。
|
|
401
|
+
// fileIo.copyFile 在工作线程整文件复制并覆盖目标,无需逐块搬运。
|
|
517
402
|
private async copySandboxFile(
|
|
518
403
|
sourceFile: string,
|
|
519
404
|
targetFile: string,
|
|
520
405
|
): Promise<void> {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
const buffer = new ArrayBuffer(FILE_COPY_BUFFER_SIZE);
|
|
524
|
-
let offset = 0;
|
|
525
|
-
|
|
526
|
-
try {
|
|
527
|
-
reader = await fileIo.open(sourceFile, fileIo.OpenMode.READ_ONLY);
|
|
528
|
-
await this.ensureParentDirectory(targetFile);
|
|
529
|
-
if (fileIo.accessSync(targetFile)) {
|
|
530
|
-
await fileIo.unlink(targetFile);
|
|
531
|
-
}
|
|
532
|
-
writer = await fileIo.open(
|
|
533
|
-
targetFile,
|
|
534
|
-
fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
|
|
535
|
-
);
|
|
536
|
-
|
|
537
|
-
while (true) {
|
|
538
|
-
const readLength = await fileIo.read(reader.fd, buffer, {
|
|
539
|
-
offset,
|
|
540
|
-
length: FILE_COPY_BUFFER_SIZE,
|
|
541
|
-
});
|
|
542
|
-
if (readLength <= 0) {
|
|
543
|
-
break;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
await fileIo.write(writer.fd, buffer.slice(0, readLength));
|
|
547
|
-
offset += readLength;
|
|
548
|
-
|
|
549
|
-
if (readLength < FILE_COPY_BUFFER_SIZE) {
|
|
550
|
-
break;
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
} finally {
|
|
554
|
-
if (reader) {
|
|
555
|
-
await fileIo.close(reader);
|
|
556
|
-
}
|
|
557
|
-
if (writer) {
|
|
558
|
-
await fileIo.close(writer);
|
|
559
|
-
}
|
|
560
|
-
}
|
|
406
|
+
await this.ensureParentDirectory(targetFile);
|
|
407
|
+
await fileIo.copyFile(sourceFile, targetFile);
|
|
561
408
|
}
|
|
562
409
|
|
|
563
410
|
private async downloadFile(params: DownloadTaskParams): Promise<void> {
|
|
@@ -613,32 +460,36 @@ export class DownloadTask {
|
|
|
613
460
|
);
|
|
614
461
|
}
|
|
615
462
|
|
|
616
|
-
//
|
|
617
|
-
let
|
|
618
|
-
? await this.
|
|
619
|
-
:
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
}
|
|
463
|
+
// 续传状态盘点(共享内核决定):已收齐 / 带 Range 续传 / 从零开始。
|
|
464
|
+
let sidecarText = allowResume
|
|
465
|
+
? await this.readSidecarText(params.targetFile)
|
|
466
|
+
: '';
|
|
467
|
+
const partialSize = fileIo.accessSync(params.targetFile)
|
|
468
|
+
? (await fileIo.stat(params.targetFile)).size
|
|
469
|
+
: 0;
|
|
470
|
+
const plan = JSON.parse(
|
|
471
|
+
NativePatchCore.resumePlanRequest(sidecarText, params.url, partialSize),
|
|
472
|
+
) as ResumeRequestPlan;
|
|
473
|
+
if (plan.action === 'complete') {
|
|
474
|
+
// 上次尝试已收齐(进程死在下载结束与解压之间):无需再传。
|
|
475
|
+
httpRequest.destroy();
|
|
476
|
+
const knownTotal = plan.total ?? 0;
|
|
477
|
+
this.onProgressUpdate(knownTotal, knownTotal);
|
|
478
|
+
return 'done';
|
|
633
479
|
}
|
|
634
|
-
|
|
480
|
+
let resumeOffset = 0;
|
|
481
|
+
let resumeHeaders: Record<string, string> = {};
|
|
482
|
+
if (plan.action === 'resume') {
|
|
483
|
+
resumeOffset = plan.offset ?? 0;
|
|
484
|
+
resumeHeaders = plan.headers ?? {};
|
|
485
|
+
} else {
|
|
635
486
|
if (fileIo.accessSync(params.targetFile)) {
|
|
636
487
|
await fileIo.unlink(params.targetFile);
|
|
637
488
|
} else {
|
|
638
489
|
await this.ensureParentDirectory(params.targetFile);
|
|
639
490
|
}
|
|
640
491
|
await this.deleteResumeSidecar(params.targetFile);
|
|
641
|
-
|
|
492
|
+
sidecarText = '';
|
|
642
493
|
}
|
|
643
494
|
|
|
644
495
|
// 响应体在状态码判定前一律只进内存缓冲:416/5xx 的错误体若被追加进
|
|
@@ -651,6 +502,17 @@ export class DownloadTask {
|
|
|
651
502
|
authorize = resolve;
|
|
652
503
|
});
|
|
653
504
|
|
|
505
|
+
// 本 url 的 sidecar 原文:验证器优先取本次响应头,缺失时沿用上次的;
|
|
506
|
+
// 总长未知(0)时不写(共享内核)。
|
|
507
|
+
const sidecarFor = (total: number): string =>
|
|
508
|
+
NativePatchCore.resumeSidecar(
|
|
509
|
+
params.url,
|
|
510
|
+
etagHeader,
|
|
511
|
+
lastModifiedHeader,
|
|
512
|
+
sidecarText,
|
|
513
|
+
total,
|
|
514
|
+
);
|
|
515
|
+
|
|
654
516
|
const reportProgress = () => {
|
|
655
517
|
const overall = baseOffset + received;
|
|
656
518
|
const overallTotal = totalAll > 0
|
|
@@ -684,31 +546,35 @@ export class DownloadTask {
|
|
|
684
546
|
received += data.byteLength;
|
|
685
547
|
if (!writeError && baseOffset + received > MAX_ARCHIVE_BYTES) {
|
|
686
548
|
// 未知长度/分块传输的兜底:超过上限即停写,请求在下面结算时失败。
|
|
549
|
+
// 下载阶段:与 Android/iOS 一样归为 DOWNLOAD_FAILED。
|
|
687
550
|
writeError = createPushyError(
|
|
688
|
-
|
|
551
|
+
ERROR_DOWNLOAD_FAILED,
|
|
689
552
|
`archive too large: exceeded ${MAX_ARCHIVE_BYTES}`,
|
|
690
553
|
);
|
|
691
554
|
}
|
|
692
|
-
//
|
|
693
|
-
//
|
|
694
|
-
//
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
const reserve = Math.max(
|
|
699
|
-
UNKNOWN_LENGTH_FREE_SPACE_PROBE_BYTES,
|
|
555
|
+
// 未知长度:响应到达时只能预留安全余量,任何会写过已预留位置的写入
|
|
556
|
+
// 之前都要探测(archive_limits::PlanUnknownLengthFreeSpaceProbe)。
|
|
557
|
+
// 失败保留 partial 供下次续传。
|
|
558
|
+
const plan = NativePatchCore.planFreeSpaceProbe(
|
|
559
|
+
totalAll,
|
|
560
|
+
received - data.byteLength,
|
|
700
561
|
data.byteLength,
|
|
562
|
+
freeSpaceReservedUntil,
|
|
701
563
|
);
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
564
|
+
freeSpaceReservedUntil = plan.reservedUntil;
|
|
565
|
+
const probeFreeSpace = plan.probe;
|
|
566
|
+
const reserve = plan.reserve;
|
|
705
567
|
writeQueue = writeQueue.then(async () => {
|
|
706
568
|
if (!writer || writeError) {
|
|
707
569
|
return;
|
|
708
570
|
}
|
|
709
571
|
try {
|
|
710
572
|
if (probeFreeSpace) {
|
|
711
|
-
await ensureFreeSpace(
|
|
573
|
+
await ensureFreeSpace(
|
|
574
|
+
params.targetFile,
|
|
575
|
+
reserve,
|
|
576
|
+
ERROR_DOWNLOAD_FAILED,
|
|
577
|
+
);
|
|
712
578
|
}
|
|
713
579
|
await fileIo.write(writer.fd, data);
|
|
714
580
|
} catch (error) {
|
|
@@ -838,17 +704,10 @@ export class DownloadTask {
|
|
|
838
704
|
const requestHeader: Record<string, string> = {
|
|
839
705
|
'Content-Type': 'application/octet-stream',
|
|
840
706
|
};
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
requestHeader[
|
|
845
|
-
requestHeader.Range = `bytes=${resumeOffset}-`;
|
|
846
|
-
const validator = resumeMeta?.etag || resumeMeta?.lastModified;
|
|
847
|
-
if (validator) {
|
|
848
|
-
// 带验证器时文件已变更的服务端会退回完整 200,而不是把不匹配
|
|
849
|
-
// 的字节接上来。
|
|
850
|
-
requestHeader['If-Range'] = validator;
|
|
851
|
-
}
|
|
707
|
+
// 续传请求的 Range / Accept-Encoding: identity / If-Range(共享内核
|
|
708
|
+
// 给出);全新下载不带,保留平台默认的压缩处理。
|
|
709
|
+
for (const name of Object.keys(resumeHeaders)) {
|
|
710
|
+
requestHeader[name] = resumeHeaders[name];
|
|
852
711
|
}
|
|
853
712
|
|
|
854
713
|
const remainingMs = Math.max(1, deadlineUptimeMs - monotonicNowMs());
|
|
@@ -863,44 +722,20 @@ export class DownloadTask {
|
|
|
863
722
|
}, remainingMs);
|
|
864
723
|
});
|
|
865
724
|
// netstack 把 readTimeout 交给 libcurl 的 CURLOPT_TIMEOUT_MS(整次传输
|
|
866
|
-
// 总时长)而非空闲超时:固定 60s
|
|
867
|
-
//
|
|
868
|
-
//
|
|
725
|
+
// 总时长)而非空闲超时:固定 60s 会让慢网上的大全量包次次失败。所以
|
|
726
|
+
// readTimeout 取剩余 deadline,卡死由下面的 60s 不活动看门狗负责——
|
|
727
|
+
// 两种语义下都正确。connectTimeout 没有这个问题,与 Android 一样
|
|
728
|
+
// 15s:连不上的镜像不该吃掉整个阶段预算,下一个镜像还要用。
|
|
869
729
|
const responseCode = await Promise.race([
|
|
870
730
|
httpRequest.requestInStream(params.url, {
|
|
871
731
|
method: http.RequestMethod.GET,
|
|
872
732
|
readTimeout: remainingMs,
|
|
873
|
-
connectTimeout: remainingMs,
|
|
733
|
+
connectTimeout: Math.min(CONNECT_TIMEOUT_MS, remainingMs),
|
|
874
734
|
header: requestHeader,
|
|
875
735
|
}),
|
|
876
736
|
deadlinePromise,
|
|
877
737
|
]);
|
|
878
738
|
|
|
879
|
-
if (responseCode === 416) {
|
|
880
|
-
discardBody = true;
|
|
881
|
-
pendingChunks = null;
|
|
882
|
-
const knownTotal = resumeMeta?.total ?? 0;
|
|
883
|
-
if (knownTotal > 0 && fileIo.accessSync(params.targetFile)) {
|
|
884
|
-
const stat = await fileIo.stat(params.targetFile);
|
|
885
|
-
if (stat.size === knownTotal) {
|
|
886
|
-
// partial 实际上就是完整文件。
|
|
887
|
-
this.onProgressUpdate(knownTotal, knownTotal);
|
|
888
|
-
return 'done';
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
return 'staleRange';
|
|
892
|
-
}
|
|
893
|
-
if (responseCode > 299) {
|
|
894
|
-
// 响应体从未落盘,partial + sidecar 原样保留——那就是续传状态。
|
|
895
|
-
discardBody = true;
|
|
896
|
-
pendingChunks = null;
|
|
897
|
-
throw createPushyError(
|
|
898
|
-
ERROR_DOWNLOAD_FAILED,
|
|
899
|
-
`Server error: ${responseCode}`,
|
|
900
|
-
);
|
|
901
|
-
}
|
|
902
|
-
|
|
903
|
-
let encodedBody = false;
|
|
904
739
|
if (resumeOffset > 0 && responseCode === 206) {
|
|
905
740
|
// Content-Range 只能从 headersReceive 拿到,而它与 promise 的先后
|
|
906
741
|
// 顺序不保证——等头到达(dataEnd 前必到,兜底 5s)再判定。
|
|
@@ -912,33 +747,57 @@ export class DownloadTask {
|
|
|
912
747
|
}),
|
|
913
748
|
]);
|
|
914
749
|
clearTimeout(headersTimer);
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
750
|
+
}
|
|
751
|
+
// 这个响应怎么处理由共享内核决定(与 Android/iOS 同一份)。
|
|
752
|
+
const partialNow = fileIo.accessSync(params.targetFile)
|
|
753
|
+
? (await fileIo.stat(params.targetFile)).size
|
|
754
|
+
: 0;
|
|
755
|
+
const decision = JSON.parse(
|
|
756
|
+
NativePatchCore.resumeClassifyResponse(
|
|
757
|
+
responseCode,
|
|
758
|
+
resumeOffset,
|
|
759
|
+
contentRangeHeader,
|
|
760
|
+
contentEncodingHeader,
|
|
761
|
+
contentLength > 0 ? contentLength : -1,
|
|
762
|
+
sidecarText,
|
|
763
|
+
params.url,
|
|
764
|
+
partialNow,
|
|
765
|
+
),
|
|
766
|
+
) as ResumeResponseDecision;
|
|
767
|
+
if (decision.action !== 'write') {
|
|
768
|
+
// 响应体从未落盘,partial + sidecar 原样保留,除非下面判定要重来。
|
|
769
|
+
discardBody = true;
|
|
770
|
+
pendingChunks = null;
|
|
771
|
+
}
|
|
772
|
+
if (decision.action === 'complete') {
|
|
773
|
+
// 416 且 partial 实际上就是完整文件。
|
|
774
|
+
const knownTotal = decision.total ?? 0;
|
|
775
|
+
this.onProgressUpdate(knownTotal, knownTotal);
|
|
776
|
+
return 'done';
|
|
777
|
+
}
|
|
778
|
+
if (decision.action === 'restart') {
|
|
779
|
+
// 过期的 416、编码过的 range 字节、或 Content-Range 缺失/畸形/
|
|
780
|
+
// 起点不符:追加不可信。按“partial 已过期”处理(删掉、干净地
|
|
781
|
+
// 重来一次),而不是抛错——抛错会保留 partial,之后每次都撞同一堵墙。
|
|
782
|
+
return 'staleRange';
|
|
783
|
+
}
|
|
784
|
+
if (decision.action !== 'write') {
|
|
785
|
+
// 其余非 2xx:partial + sidecar 原样保留——那就是续传状态。
|
|
786
|
+
throw createPushyError(
|
|
787
|
+
ERROR_DOWNLOAD_FAILED,
|
|
788
|
+
`Server error: ${responseCode}`,
|
|
789
|
+
);
|
|
790
|
+
}
|
|
791
|
+
baseOffset = decision.base ?? 0;
|
|
792
|
+
totalAll = decision.total ?? 0;
|
|
793
|
+
if (decision.append) {
|
|
931
794
|
writer = await fileIo.open(
|
|
932
795
|
params.targetFile,
|
|
933
796
|
fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.APPEND,
|
|
934
797
|
);
|
|
935
798
|
} else {
|
|
936
799
|
// 服务端忽略了 Range(或本就没发):从零开始。
|
|
937
|
-
|
|
938
|
-
await fileIo.unlink(params.targetFile);
|
|
939
|
-
}
|
|
940
|
-
baseOffset = 0;
|
|
941
|
-
totalAll = contentLength > 0 ? contentLength : 0;
|
|
800
|
+
await unlinkIfExists(params.targetFile);
|
|
942
801
|
writer = await fileIo.open(
|
|
943
802
|
params.targetFile,
|
|
944
803
|
fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY,
|
|
@@ -946,7 +805,7 @@ export class DownloadTask {
|
|
|
946
805
|
}
|
|
947
806
|
if (totalAll > MAX_ARCHIVE_BYTES) {
|
|
948
807
|
writeError = createPushyError(
|
|
949
|
-
|
|
808
|
+
ERROR_DOWNLOAD_FAILED,
|
|
950
809
|
`archive too large: ${totalAll} bytes`,
|
|
951
810
|
);
|
|
952
811
|
throw writeError;
|
|
@@ -954,21 +813,15 @@ export class DownloadTask {
|
|
|
954
813
|
await ensureFreeSpace(
|
|
955
814
|
params.targetFile,
|
|
956
815
|
totalAll > 0 ? totalAll - baseOffset : 0,
|
|
816
|
+
ERROR_DOWNLOAD_FAILED,
|
|
957
817
|
);
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
}
|
|
965
|
-
if (lastModified) {
|
|
966
|
-
meta.lastModified = lastModified;
|
|
967
|
-
}
|
|
968
|
-
if (totalAll > 0) {
|
|
969
|
-
meta.total = totalAll;
|
|
818
|
+
if (decision.persistSidecar) {
|
|
819
|
+
// 先落 sidecar 再放行写入,流中崩溃才有得续。
|
|
820
|
+
await this.writeSidecarText(params.targetFile, sidecarFor(totalAll));
|
|
821
|
+
} else {
|
|
822
|
+
// 编码传输不可续传:偏移会落在编码后的表示上。
|
|
823
|
+
await this.deleteResumeSidecar(params.targetFile);
|
|
970
824
|
}
|
|
971
|
-
await this.writeResumeMeta(params.targetFile, meta);
|
|
972
825
|
|
|
973
826
|
// 鉴权通过:回放缓冲,之后的数据直写。
|
|
974
827
|
const buffered = pendingChunks ?? [];
|
|
@@ -1010,15 +863,7 @@ export class DownloadTask {
|
|
|
1010
863
|
}
|
|
1011
864
|
// 用最终观测值刷新 sidecar:首次写入可能因头部竞态缺 total/验证器,
|
|
1012
865
|
// 补齐后“下载完、解压前死”的窗口才能被 complete 检测覆盖。
|
|
1013
|
-
|
|
1014
|
-
if (etagHeader || resumeMeta?.etag) {
|
|
1015
|
-
finalMeta.etag = etagHeader || resumeMeta?.etag;
|
|
1016
|
-
}
|
|
1017
|
-
if (lastModifiedHeader || resumeMeta?.lastModified) {
|
|
1018
|
-
finalMeta.lastModified =
|
|
1019
|
-
lastModifiedHeader || resumeMeta?.lastModified;
|
|
1020
|
-
}
|
|
1021
|
-
await this.writeResumeMeta(params.targetFile, finalMeta);
|
|
866
|
+
await this.writeSidecarText(params.targetFile, sidecarFor(stats.size));
|
|
1022
867
|
} else {
|
|
1023
868
|
// 编码传输不可续传:盘上是解码后的字节,编码域的长度与偏移都失效。
|
|
1024
869
|
await this.deleteResumeSidecar(params.targetFile);
|
|
@@ -1074,16 +919,12 @@ export class DownloadTask {
|
|
|
1074
919
|
return work;
|
|
1075
920
|
}
|
|
1076
921
|
|
|
1077
|
-
|
|
1078
|
-
private async readDeltaInputs(
|
|
1079
|
-
work: string,
|
|
1080
|
-
normalizeResourceCopies: boolean,
|
|
1081
|
-
): Promise<DeltaInputs> {
|
|
922
|
+
private async readDeltaInputs(work: string): Promise<DeltaInputs> {
|
|
1082
923
|
const results = await Promise.all([
|
|
1083
924
|
this.listEntryNames(work),
|
|
1084
|
-
this.
|
|
925
|
+
this.readManifestJson(work),
|
|
1085
926
|
]);
|
|
1086
|
-
return { entryNames: results[0],
|
|
927
|
+
return { entryNames: results[0], manifestJson: results[1] };
|
|
1087
928
|
}
|
|
1088
929
|
|
|
1089
930
|
private async doFullPatch(params: DownloadTaskParams): Promise<void> {
|
|
@@ -1093,78 +934,27 @@ export class DownloadTask {
|
|
|
1093
934
|
|
|
1094
935
|
private async doPatchFromApp(params: DownloadTaskParams): Promise<void> {
|
|
1095
936
|
const work = await this.downloadAndExtract(params);
|
|
1096
|
-
const
|
|
1097
|
-
const manifestArrays = inputs.manifestArrays;
|
|
1098
|
-
|
|
1099
|
-
NativePatchCore.buildArchivePlan(
|
|
1100
|
-
ARCHIVE_PATCH_TYPE_FROM_PACKAGE,
|
|
1101
|
-
inputs.entryNames,
|
|
1102
|
-
manifestArrays.copyFroms,
|
|
1103
|
-
manifestArrays.copyTos,
|
|
1104
|
-
manifestArrays.deletes,
|
|
1105
|
-
BUNDLE_DELTA_ENTRY,
|
|
1106
|
-
);
|
|
1107
|
-
|
|
1108
|
-
const bundleDeltaPath = `${work}/${BUNDLE_DELTA_ENTRY}`;
|
|
1109
|
-
if (!fileIo.accessSync(bundleDeltaPath)) {
|
|
1110
|
-
throw createPushyError(ERROR_DELTA_FAILED, 'bundle delta not found');
|
|
1111
|
-
}
|
|
1112
|
-
const resourceManager = this.context.resourceManager;
|
|
1113
|
-
const originContent = await resourceManager.getRawFileContent(
|
|
1114
|
-
'bundle.harmony.js',
|
|
1115
|
-
);
|
|
1116
|
-
await this.applyBundlePatchFromFileSource(
|
|
1117
|
-
originContent.buffer as ArrayBuffer,
|
|
937
|
+
const copyGroups = await this.applyPatchFromEmbeddedBundle(
|
|
1118
938
|
work,
|
|
1119
|
-
|
|
1120
|
-
`${work}/${HARMONY_BUNDLE_FILE_NAME}`,
|
|
1121
|
-
manifestArrays.hbcTransformMeta,
|
|
1122
|
-
);
|
|
1123
|
-
// 组按 from 聚合;同一 from 的内容必然一致,所以每组一个 CRC 即可
|
|
1124
|
-
// (与 manifest 逐位对齐的 copyCrcs 里取第一个非空值)。
|
|
1125
|
-
const crcByFrom = new Map<string, number>();
|
|
1126
|
-
manifestArrays.copyFroms.forEach((from, index) => {
|
|
1127
|
-
const crc = manifestArrays.copyCrcs[index];
|
|
1128
|
-
if (crc !== null && !crcByFrom.has(from)) {
|
|
1129
|
-
crcByFrom.set(from, crc);
|
|
1130
|
-
}
|
|
1131
|
-
});
|
|
1132
|
-
await this.copyFromResource(
|
|
1133
|
-
NativePatchCore.buildCopyGroups(
|
|
1134
|
-
manifestArrays.copyFroms,
|
|
1135
|
-
manifestArrays.copyTos,
|
|
1136
|
-
),
|
|
1137
|
-
work,
|
|
1138
|
-
crcByFrom,
|
|
939
|
+
await this.readDeltaInputs(work),
|
|
1139
940
|
);
|
|
941
|
+
await this.copyFromResource(copyGroups, work);
|
|
1140
942
|
await this.deleteArchiveAndSidecar(params.targetFile);
|
|
1141
943
|
}
|
|
1142
944
|
|
|
1143
945
|
private async doPatchFromPpk(params: DownloadTaskParams): Promise<void> {
|
|
1144
946
|
const work = await this.downloadAndExtract(params);
|
|
1145
|
-
const inputs = await this.readDeltaInputs(work
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
manifestArrays.copyFroms,
|
|
1152
|
-
manifestArrays.copyTos,
|
|
1153
|
-
manifestArrays.deletes,
|
|
1154
|
-
BUNDLE_DELTA_ENTRY,
|
|
1155
|
-
);
|
|
1156
|
-
await NativePatchCore.applyDeltaFromSource({
|
|
1157
|
-
copyFroms: manifestArrays.copyFroms,
|
|
1158
|
-
copyTos: manifestArrays.copyTos,
|
|
1159
|
-
deletes: manifestArrays.deletes,
|
|
947
|
+
const inputs = await this.readDeltaInputs(work);
|
|
948
|
+
await NativePatchCore.applyArchiveDelta({
|
|
949
|
+
archiveType: ARCHIVE_PATCH_TYPE_FROM_PPK,
|
|
950
|
+
entryNames: inputs.entryNames,
|
|
951
|
+
manifestJson: inputs.manifestJson,
|
|
952
|
+
bundleDeltaEntry: BUNDLE_DELTA_ENTRY,
|
|
1160
953
|
sourceRoot: params.originDirectory,
|
|
1161
954
|
targetRoot: work,
|
|
1162
|
-
originBundlePath: `${params.originDirectory}
|
|
955
|
+
originBundlePath: `${params.originDirectory}/${HARMONY_BUNDLE_FILE_NAME}`,
|
|
1163
956
|
bundleDeltaPath: `${work}/${BUNDLE_DELTA_ENTRY}`,
|
|
1164
957
|
bundleOutputPath: `${work}/${HARMONY_BUNDLE_FILE_NAME}`,
|
|
1165
|
-
mergeSourceSubdir: plan.mergeSourceSubdir,
|
|
1166
|
-
enableMerge: plan.enableMerge,
|
|
1167
|
-
bundleHbcTransformMeta: manifestArrays.hbcTransformMeta,
|
|
1168
958
|
});
|
|
1169
959
|
logger.info(TAG, 'Delta from PPK completed');
|
|
1170
960
|
await this.deleteArchiveAndSidecar(params.targetFile);
|
|
@@ -1173,7 +963,6 @@ export class DownloadTask {
|
|
|
1173
963
|
private async copyFromResource(
|
|
1174
964
|
copyGroups: CopyGroupResult[],
|
|
1175
965
|
targetRoot: string,
|
|
1176
|
-
crcByFrom?: Map<string, number>,
|
|
1177
966
|
): Promise<void> {
|
|
1178
967
|
let currentFrom = '';
|
|
1179
968
|
try {
|
|
@@ -1185,7 +974,7 @@ export class DownloadTask {
|
|
|
1185
974
|
if (targets.length === 0) {
|
|
1186
975
|
continue;
|
|
1187
976
|
}
|
|
1188
|
-
const expectedCrc =
|
|
977
|
+
const expectedCrc = group.expectedCrc;
|
|
1189
978
|
|
|
1190
979
|
if (currentFrom.startsWith('resources/base/media/')) {
|
|
1191
980
|
// Strip only the final extension: 'icon.round.png' -> 'icon.round',
|
|
@@ -1218,28 +1007,15 @@ export class DownloadTask {
|
|
|
1218
1007
|
continue;
|
|
1219
1008
|
}
|
|
1220
1009
|
|
|
1221
|
-
const
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
await Promise.all(
|
|
1231
|
-
restTargets.map(target => this.copySandboxFile(firstTarget, target)),
|
|
1232
|
-
);
|
|
1233
|
-
} finally {
|
|
1234
|
-
try {
|
|
1235
|
-
await resourceManager.closeRawFd(currentFrom);
|
|
1236
|
-
} catch (closeError) {
|
|
1237
|
-
logger.error(
|
|
1238
|
-
TAG,
|
|
1239
|
-
`Failed to close raw fd for ${currentFrom}: ${getErrorMessage(closeError)}`,
|
|
1240
|
-
);
|
|
1241
|
-
}
|
|
1242
|
-
}
|
|
1010
|
+
const firstTarget = targets[0];
|
|
1011
|
+
const restTargets = targets.slice(1);
|
|
1012
|
+
await this.ensureParentDirectories(targets);
|
|
1013
|
+
await withRawFd(resourceManager, currentFrom, descriptor =>
|
|
1014
|
+
saveFileToSandbox(descriptor, firstTarget),
|
|
1015
|
+
);
|
|
1016
|
+
await Promise.all(
|
|
1017
|
+
restTargets.map(target => this.copySandboxFile(firstTarget, target)),
|
|
1018
|
+
);
|
|
1243
1019
|
}
|
|
1244
1020
|
} catch (error) {
|
|
1245
1021
|
const coded = toPushyError(error, ERROR_DELTA_FAILED);
|
|
@@ -1282,25 +1058,7 @@ export class DownloadTask {
|
|
|
1282
1058
|
}
|
|
1283
1059
|
}
|
|
1284
1060
|
|
|
1285
|
-
private async doCleanUp(params: DownloadTaskParams): Promise<void> {
|
|
1286
|
-
try {
|
|
1287
|
-
await NativePatchCore.cleanupOldEntries(
|
|
1288
|
-
params.unzipDirectory,
|
|
1289
|
-
[params.hash, params.originHash].filter(name => !!name),
|
|
1290
|
-
3,
|
|
1291
|
-
);
|
|
1292
|
-
} catch (error) {
|
|
1293
|
-
const message = `Cleanup failed: ${getErrorMessage(error)}`;
|
|
1294
|
-
logger.error(TAG, message);
|
|
1295
|
-
throw createPushyError(ERROR_FILE_OPERATION_FAILED, message);
|
|
1296
|
-
}
|
|
1297
|
-
}
|
|
1298
|
-
|
|
1299
1061
|
public async execute(params: DownloadTaskParams): Promise<void> {
|
|
1300
|
-
const isPatchTask =
|
|
1301
|
-
params.type === DownloadTaskParams.TASK_TYPE_PATCH_FULL ||
|
|
1302
|
-
params.type === DownloadTaskParams.TASK_TYPE_PATCH_FROM_APP ||
|
|
1303
|
-
params.type === DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK;
|
|
1304
1062
|
try {
|
|
1305
1063
|
switch (params.type) {
|
|
1306
1064
|
case DownloadTaskParams.TASK_TYPE_PATCH_FULL:
|
|
@@ -1312,24 +1070,13 @@ export class DownloadTask {
|
|
|
1312
1070
|
case DownloadTaskParams.TASK_TYPE_PATCH_FROM_PPK:
|
|
1313
1071
|
await this.doPatchFromPpk(params);
|
|
1314
1072
|
break;
|
|
1315
|
-
case DownloadTaskParams.TASK_TYPE_CLEANUP:
|
|
1316
|
-
await this.doCleanUp(params);
|
|
1317
|
-
break;
|
|
1318
|
-
case DownloadTaskParams.TASK_TYPE_PLAIN_DOWNLOAD:
|
|
1319
|
-
await this.downloadFile(params);
|
|
1320
|
-
// 文件在完成时即是最终产物——残留的 sidecar 会让下次同 URL 的
|
|
1321
|
-
// 下载不发请求直接返回这份旧字节。
|
|
1322
|
-
await this.deleteResumeSidecar(params.targetFile);
|
|
1323
|
-
break;
|
|
1324
1073
|
default:
|
|
1325
1074
|
throw createPushyError(
|
|
1326
1075
|
ERROR_INVALID_OPTIONS,
|
|
1327
1076
|
`Unknown task type: ${params.type}`,
|
|
1328
1077
|
);
|
|
1329
1078
|
}
|
|
1330
|
-
|
|
1331
|
-
await this.promoteStaging(params);
|
|
1332
|
-
}
|
|
1079
|
+
await this.promoteStaging(params);
|
|
1333
1080
|
} catch (rawError) {
|
|
1334
1081
|
// 稳定错误码:下载阶段的失败是 DOWNLOAD_FAILED;归档收齐之后的失败
|
|
1335
1082
|
// (解压/hpatch/资源拷贝含 copiesCrc 校验/完成记录)一律 PATCH_FAILED,
|
|
@@ -1340,29 +1087,22 @@ export class DownloadTask {
|
|
|
1340
1087
|
this.downloadPhaseCompleted ? ERROR_DELTA_FAILED : ERROR_DOWNLOAD_FAILED,
|
|
1341
1088
|
);
|
|
1342
1089
|
logger.error(TAG, `Task execution failed: ${error.message}`);
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
if (this.downloadPhaseCompleted) {
|
|
1354
|
-
// 收齐后才失败的是解压/patch 失败:归档有毒,续传只会撞上
|
|
1355
|
-
// 同一个失败。下载阶段的失败则保留 partial + sidecar——那
|
|
1356
|
-
// 就是续传状态。
|
|
1357
|
-
await this.deleteArchiveAndSidecar(params.targetFile);
|
|
1358
|
-
}
|
|
1359
|
-
}
|
|
1360
|
-
} catch (cleanupError) {
|
|
1361
|
-
logger.error(
|
|
1362
|
-
TAG,
|
|
1363
|
-
`Cleanup after error failed: ${getErrorMessage(cleanupError)}`,
|
|
1364
|
-
);
|
|
1090
|
+
try {
|
|
1091
|
+
// Only the staging directory is ours to drop: the final version
|
|
1092
|
+
// directory is never touched by a failed install, so a failed
|
|
1093
|
+
// duplicate task cannot remove an earlier task's install.
|
|
1094
|
+
await this.removeDirectory(this.stagingDirectory(params));
|
|
1095
|
+
if (this.downloadPhaseCompleted) {
|
|
1096
|
+
// 收齐后才失败的是解压/patch 失败:归档有毒,续传只会撞上
|
|
1097
|
+
// 同一个失败。下载阶段的失败则保留 partial + sidecar——那
|
|
1098
|
+
// 就是续传状态。
|
|
1099
|
+
await this.deleteArchiveAndSidecar(params.targetFile);
|
|
1365
1100
|
}
|
|
1101
|
+
} catch (cleanupError) {
|
|
1102
|
+
logger.error(
|
|
1103
|
+
TAG,
|
|
1104
|
+
`Cleanup after error failed: ${getErrorMessage(cleanupError)}`,
|
|
1105
|
+
);
|
|
1366
1106
|
}
|
|
1367
1107
|
throw error;
|
|
1368
1108
|
}
|