rn-update 1.0.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/LICENSE +22 -0
- package/README-CN.md +97 -0
- package/README.md +97 -0
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/android/build.gradle +253 -0
- package/android/jni/Android.mk +41 -0
- package/android/jni/Application.mk +20 -0
- package/android/jni/HDiffPatch/.travis.yml +33 -0
- package/android/jni/HDiffPatch/CHANGELOG.md +153 -0
- package/android/jni/HDiffPatch/LICENSE +48 -0
- package/android/jni/HDiffPatch/Makefile +157 -0
- package/android/jni/HDiffPatch/README.md +307 -0
- package/android/jni/HDiffPatch/_atosize.h +83 -0
- package/android/jni/HDiffPatch/_clock_for_demo.h +47 -0
- package/android/jni/HDiffPatch/_dir_ignore.h +191 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +37 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +7 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +1 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +1 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +18 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +20 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +28 -0
- package/android/jni/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +8 -0
- package/android/jni/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +8 -0
- package/android/jni/HDiffPatch/builds/codeblocks/HDiffZ.cbp +219 -0
- package/android/jni/HDiffPatch/builds/codeblocks/HPatchZ.cbp +156 -0
- package/android/jni/HDiffPatch/builds/codeblocks/unitTest.cbp +65 -0
- package/android/jni/HDiffPatch/builds/vc/HDiffPatch.sln +105 -0
- package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj +237 -0
- package/android/jni/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +3 -0
- package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj +318 -0
- package/android/jni/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +3 -0
- package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj +182 -0
- package/android/jni/HDiffPatch/builds/vc/unitTest.vcxproj.user +3 -0
- package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +30 -0
- package/android/jni/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +408 -0
- package/android/jni/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +573 -0
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +396 -0
- package/android/jni/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +268 -0
- package/android/jni/HDiffPatch/builds/xcode/lz4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +361 -0
- package/android/jni/HDiffPatch/builds/xcode/lzma.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +301 -0
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +411 -0
- package/android/jni/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +504 -0
- package/android/jni/HDiffPatch/builds/xcode/zstd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/android/jni/HDiffPatch/checksum_plugin_demo.h +344 -0
- package/android/jni/HDiffPatch/compress_parallel.cpp +166 -0
- package/android/jni/HDiffPatch/compress_parallel.h +59 -0
- package/android/jni/HDiffPatch/compress_plugin_demo.h +1152 -0
- package/android/jni/HDiffPatch/decompress_plugin_demo.h +995 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +797 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +65 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +200 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +178 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +357 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +87 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +151 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +770 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +236 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +47 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +112 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +53 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +61 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +331 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +144 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +176 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +84 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +146 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +61 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +152 -0
- package/android/jni/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +76 -0
- package/android/jni/HDiffPatch/file_for_patch.c +524 -0
- package/android/jni/HDiffPatch/file_for_patch.h +259 -0
- package/android/jni/HDiffPatch/hdiffz.cpp +1570 -0
- package/android/jni/HDiffPatch/hpatch_dir_listener.h +290 -0
- package/android/jni/HDiffPatch/hpatchz.c +1221 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +1025 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff.h +116 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +72 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +213 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +63 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +170 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +86 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +89 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c +13 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +398 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +194 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +13 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +204 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +207 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +815 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +586 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +381 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +352 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +137 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +137 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +70 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +628 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +87 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +363 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +139 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +68 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +115 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +342 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +94 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +52 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.c +2292 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch.h +215 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +165 -0
- package/android/jni/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +251 -0
- package/android/jni/HDiffPatch/libParallel/parallel_channel.cpp +174 -0
- package/android/jni/HDiffPatch/libParallel/parallel_channel.h +73 -0
- package/android/jni/HDiffPatch/libParallel/parallel_import.cpp +367 -0
- package/android/jni/HDiffPatch/libParallel/parallel_import.h +92 -0
- package/android/jni/hpatch.c +232 -0
- package/android/jni/hpatch.h +43 -0
- package/android/jni/lzma/Asm/arm/7zCrcOpt.asm +100 -0
- package/android/jni/lzma/Asm/x86/7zAsm.asm +147 -0
- package/android/jni/lzma/Asm/x86/7zCrcOpt.asm +147 -0
- package/android/jni/lzma/Asm/x86/AesOpt.asm +237 -0
- package/android/jni/lzma/Asm/x86/LzmaDecOpt.asm +1258 -0
- package/android/jni/lzma/Asm/x86/XzCrc64Opt.asm +205 -0
- package/android/jni/lzma/C/7z.h +202 -0
- package/android/jni/lzma/C/7zAlloc.c +80 -0
- package/android/jni/lzma/C/7zAlloc.h +19 -0
- package/android/jni/lzma/C/7zArcIn.c +1771 -0
- package/android/jni/lzma/C/7zBuf.c +36 -0
- package/android/jni/lzma/C/7zBuf.h +35 -0
- package/android/jni/lzma/C/7zBuf2.c +52 -0
- package/android/jni/lzma/C/7zCrc.c +128 -0
- package/android/jni/lzma/C/7zCrc.h +25 -0
- package/android/jni/lzma/C/7zCrcOpt.c +115 -0
- package/android/jni/lzma/C/7zDec.c +591 -0
- package/android/jni/lzma/C/7zFile.c +286 -0
- package/android/jni/lzma/C/7zFile.h +83 -0
- package/android/jni/lzma/C/7zStream.c +176 -0
- package/android/jni/lzma/C/7zTypes.h +375 -0
- package/android/jni/lzma/C/7zVersion.h +27 -0
- package/android/jni/lzma/C/7zVersion.rc +55 -0
- package/android/jni/lzma/C/Aes.c +306 -0
- package/android/jni/lzma/C/Aes.h +38 -0
- package/android/jni/lzma/C/AesOpt.c +184 -0
- package/android/jni/lzma/C/Alloc.c +455 -0
- package/android/jni/lzma/C/Alloc.h +51 -0
- package/android/jni/lzma/C/Bcj2.c +257 -0
- package/android/jni/lzma/C/Bcj2.h +146 -0
- package/android/jni/lzma/C/Bcj2Enc.c +311 -0
- package/android/jni/lzma/C/Bra.c +230 -0
- package/android/jni/lzma/C/Bra.h +64 -0
- package/android/jni/lzma/C/Bra86.c +82 -0
- package/android/jni/lzma/C/BraIA64.c +53 -0
- package/android/jni/lzma/C/Compiler.h +33 -0
- package/android/jni/lzma/C/CpuArch.c +218 -0
- package/android/jni/lzma/C/CpuArch.h +336 -0
- package/android/jni/lzma/C/Delta.c +64 -0
- package/android/jni/lzma/C/Delta.h +19 -0
- package/android/jni/lzma/C/DllSecur.c +108 -0
- package/android/jni/lzma/C/DllSecur.h +20 -0
- package/android/jni/lzma/C/LzFind.c +1127 -0
- package/android/jni/lzma/C/LzFind.h +121 -0
- package/android/jni/lzma/C/LzFindMt.c +853 -0
- package/android/jni/lzma/C/LzFindMt.h +101 -0
- package/android/jni/lzma/C/LzHash.h +57 -0
- package/android/jni/lzma/C/Lzma2Dec.c +488 -0
- package/android/jni/lzma/C/Lzma2Dec.h +120 -0
- package/android/jni/lzma/C/Lzma2DecMt.c +1082 -0
- package/android/jni/lzma/C/Lzma2DecMt.h +79 -0
- package/android/jni/lzma/C/Lzma2Enc.c +803 -0
- package/android/jni/lzma/C/Lzma2Enc.h +55 -0
- package/android/jni/lzma/C/Lzma86.h +111 -0
- package/android/jni/lzma/C/Lzma86Dec.c +54 -0
- package/android/jni/lzma/C/Lzma86Enc.c +106 -0
- package/android/jni/lzma/C/LzmaDec.c +1185 -0
- package/android/jni/lzma/C/LzmaDec.h +234 -0
- package/android/jni/lzma/C/LzmaEnc.c +2976 -0
- package/android/jni/lzma/C/LzmaEnc.h +76 -0
- package/android/jni/lzma/C/LzmaLib.c +40 -0
- package/android/jni/lzma/C/LzmaLib.h +131 -0
- package/android/jni/lzma/C/MtCoder.c +601 -0
- package/android/jni/lzma/C/MtCoder.h +141 -0
- package/android/jni/lzma/C/MtDec.c +1138 -0
- package/android/jni/lzma/C/MtDec.h +201 -0
- package/android/jni/lzma/C/Ppmd.h +85 -0
- package/android/jni/lzma/C/Ppmd7.c +712 -0
- package/android/jni/lzma/C/Ppmd7.h +142 -0
- package/android/jni/lzma/C/Ppmd7Dec.c +191 -0
- package/android/jni/lzma/C/Ppmd7Enc.c +187 -0
- package/android/jni/lzma/C/Precomp.h +10 -0
- package/android/jni/lzma/C/RotateDefs.h +30 -0
- package/android/jni/lzma/C/Sha256.c +248 -0
- package/android/jni/lzma/C/Sha256.h +26 -0
- package/android/jni/lzma/C/Sort.c +141 -0
- package/android/jni/lzma/C/Sort.h +18 -0
- package/android/jni/lzma/C/Threads.c +95 -0
- package/android/jni/lzma/C/Threads.h +70 -0
- package/android/jni/lzma/C/ThreadsP.c +396 -0
- package/android/jni/lzma/C/ThreadsP.h +31 -0
- package/android/jni/lzma/C/Util/7z/7z.dsp +241 -0
- package/android/jni/lzma/C/Util/7z/7z.dsw +29 -0
- package/android/jni/lzma/C/Util/7z/7zMain.c +686 -0
- package/android/jni/lzma/C/Util/7z/Precomp.c +4 -0
- package/android/jni/lzma/C/Util/7z/Precomp.h +10 -0
- package/android/jni/lzma/C/Util/7z/makefile +40 -0
- package/android/jni/lzma/C/Util/7z/makefile.gcc +75 -0
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.c +258 -0
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsp +168 -0
- package/android/jni/lzma/C/Util/Lzma/LzmaUtil.dsw +29 -0
- package/android/jni/lzma/C/Util/Lzma/makefile +28 -0
- package/android/jni/lzma/C/Util/Lzma/makefile.gcc +44 -0
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.def +4 -0
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsp +178 -0
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLib.dsw +29 -0
- package/android/jni/lzma/C/Util/LzmaLib/LzmaLibExports.c +14 -0
- package/android/jni/lzma/C/Util/LzmaLib/makefile +34 -0
- package/android/jni/lzma/C/Util/LzmaLib/resource.rc +3 -0
- package/android/jni/lzma/C/Util/SfxSetup/Precomp.c +4 -0
- package/android/jni/lzma/C/Util/SfxSetup/Precomp.h +10 -0
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.c +640 -0
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsp +231 -0
- package/android/jni/lzma/C/Util/SfxSetup/SfxSetup.dsw +29 -0
- package/android/jni/lzma/C/Util/SfxSetup/makefile +37 -0
- package/android/jni/lzma/C/Util/SfxSetup/makefile_con +38 -0
- package/android/jni/lzma/C/Util/SfxSetup/resource.rc +5 -0
- package/android/jni/lzma/C/Util/SfxSetup/setup.ico +0 -0
- package/android/jni/lzma/C/Xz.c +90 -0
- package/android/jni/lzma/C/Xz.h +460 -0
- package/android/jni/lzma/C/XzCrc64.c +86 -0
- package/android/jni/lzma/C/XzCrc64.h +26 -0
- package/android/jni/lzma/C/XzCrc64Opt.c +69 -0
- package/android/jni/lzma/C/XzDec.c +2766 -0
- package/android/jni/lzma/C/XzEnc.c +1329 -0
- package/android/jni/lzma/C/XzEnc.h +60 -0
- package/android/jni/lzma/C/XzIn.c +319 -0
- package/android/jni/lzma/CPP/7zip/7zip.mak +240 -0
- package/android/jni/lzma/CPP/7zip/Aes.mak +7 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +76 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +569 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zDecode.h +70 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +678 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zEncode.h +92 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +423 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +139 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +61 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +763 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandler.h +181 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +942 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zHeader.h +148 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.cpp +1666 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zIn.h +445 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zItem.h +202 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.cpp +901 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zOut.h +335 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +174 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zProperties.h +22 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +21 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +22 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +35 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +2500 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/7zUpdate.h +139 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Archive/7z/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Archive/Archive.def +12 -0
- package/android/jni/lzma/CPP/7zip/Archive/Archive2.def +19 -0
- package/android/jni/lzma/CPP/7zip/Archive/ArchiveExports.cpp +151 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +1125 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +25 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +232 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/HandlerOut.h +110 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +46 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +67 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +88 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +28 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +191 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/MultiStream.h +89 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +37 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
- package/android/jni/lzma/CPP/7zip/Archive/Common/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Archive/DllExports2.cpp +122 -0
- package/android/jni/lzma/CPP/7zip/Archive/IArchive.h +608 -0
- package/android/jni/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Archive/LzmaHandler.cpp +629 -0
- package/android/jni/lzma/CPP/7zip/Archive/SplitHandler.cpp +359 -0
- package/android/jni/lzma/CPP/7zip/Archive/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Archive/XzHandler.cpp +1308 -0
- package/android/jni/lzma/CPP/7zip/Archive/XzHandler.h +11 -0
- package/android/jni/lzma/CPP/7zip/Asm.mak +9 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +1910 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/makefile +154 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +96 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/makefile +116 -0
- package/android/jni/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +799 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +477 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile +59 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +195 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +715 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +912 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +482 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/makefile +134 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +5 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +86 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +137 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +803 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +364 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +13 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/makefile +117 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
- 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 +988 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +241 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +14 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/makefile +153 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
- package/android/jni/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +50 -0
- package/android/jni/lzma/CPP/7zip/Common/CWrappers.cpp +250 -0
- package/android/jni/lzma/CPP/7zip/Common/CWrappers.h +120 -0
- package/android/jni/lzma/CPP/7zip/Common/CreateCoder.cpp +536 -0
- package/android/jni/lzma/CPP/7zip/Common/CreateCoder.h +192 -0
- package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
- package/android/jni/lzma/CPP/7zip/Common/FilePathAutoRename.h +10 -0
- package/android/jni/lzma/CPP/7zip/Common/FileStreams.cpp +475 -0
- package/android/jni/lzma/CPP/7zip/Common/FileStreams.h +166 -0
- package/android/jni/lzma/CPP/7zip/Common/FilterCoder.cpp +435 -0
- package/android/jni/lzma/CPP/7zip/Common/FilterCoder.h +205 -0
- package/android/jni/lzma/CPP/7zip/Common/InBuffer.cpp +163 -0
- package/android/jni/lzma/CPP/7zip/Common/InBuffer.h +92 -0
- package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +127 -0
- package/android/jni/lzma/CPP/7zip/Common/InOutTempBuffer.h +48 -0
- package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.cpp +367 -0
- package/android/jni/lzma/CPP/7zip/Common/LimitedStreams.h +252 -0
- package/android/jni/lzma/CPP/7zip/Common/LockedStream.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Common/LockedStream.h +6 -0
- package/android/jni/lzma/CPP/7zip/Common/MethodId.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/Common/MethodId.h +10 -0
- package/android/jni/lzma/CPP/7zip/Common/MethodProps.cpp +509 -0
- package/android/jni/lzma/CPP/7zip/Common/MethodProps.h +264 -0
- package/android/jni/lzma/CPP/7zip/Common/OffsetStream.cpp +39 -0
- package/android/jni/lzma/CPP/7zip/Common/OffsetStream.h +26 -0
- package/android/jni/lzma/CPP/7zip/Common/OutBuffer.cpp +111 -0
- package/android/jni/lzma/CPP/7zip/Common/OutBuffer.h +66 -0
- package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.cpp +51 -0
- package/android/jni/lzma/CPP/7zip/Common/ProgressUtils.h +35 -0
- package/android/jni/lzma/CPP/7zip/Common/PropId.cpp +108 -0
- package/android/jni/lzma/CPP/7zip/Common/RegisterArc.h +78 -0
- package/android/jni/lzma/CPP/7zip/Common/RegisterCodec.h +106 -0
- package/android/jni/lzma/CPP/7zip/Common/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamBinder.cpp +156 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamBinder.h +60 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamObjects.cpp +285 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamObjects.h +157 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamUtils.cpp +56 -0
- package/android/jni/lzma/CPP/7zip/Common/StreamUtils.h +13 -0
- package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.cpp +57 -0
- package/android/jni/lzma/CPP/7zip/Common/UniqBlocks.h +26 -0
- package/android/jni/lzma/CPP/7zip/Common/VirtThread.cpp +48 -0
- package/android/jni/lzma/CPP/7zip/Common/VirtThread.h +24 -0
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +666 -0
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Coder.h +120 -0
- package/android/jni/lzma/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
- package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.cpp +24 -0
- package/android/jni/lzma/CPP/7zip/Compress/BcjCoder.h +31 -0
- package/android/jni/lzma/CPP/7zip/Compress/BcjRegister.cpp +17 -0
- package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.cpp +23 -0
- package/android/jni/lzma/CPP/7zip/Compress/BranchMisc.h +35 -0
- package/android/jni/lzma/CPP/7zip/Compress/BranchRegister.cpp +41 -0
- package/android/jni/lzma/CPP/7zip/Compress/ByteSwap.cpp +92 -0
- package/android/jni/lzma/CPP/7zip/Compress/CodecExports.cpp +344 -0
- package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.cpp +120 -0
- package/android/jni/lzma/CPP/7zip/Compress/CopyCoder.h +49 -0
- package/android/jni/lzma/CPP/7zip/Compress/CopyRegister.cpp +15 -0
- package/android/jni/lzma/CPP/7zip/Compress/DeltaFilter.cpp +128 -0
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +265 -0
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Decoder.h +96 -0
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +122 -0
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Encoder.h +42 -0
- package/android/jni/lzma/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
- package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +343 -0
- package/android/jni/lzma/CPP/7zip/Compress/LzmaDecoder.h +113 -0
- package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +182 -0
- package/android/jni/lzma/CPP/7zip/Compress/LzmaEncoder.h +46 -0
- package/android/jni/lzma/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
- package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +170 -0
- package/android/jni/lzma/CPP/7zip/Compress/PpmdDecoder.h +86 -0
- package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +152 -0
- package/android/jni/lzma/CPP/7zip/Compress/PpmdEncoder.h +58 -0
- package/android/jni/lzma/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
- package/android/jni/lzma/CPP/7zip/Compress/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.cpp +150 -0
- package/android/jni/lzma/CPP/7zip/Compress/XzDecoder.h +92 -0
- package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.cpp +245 -0
- package/android/jni/lzma/CPP/7zip/Compress/XzEncoder.h +46 -0
- package/android/jni/lzma/CPP/7zip/Crc.mak +8 -0
- package/android/jni/lzma/CPP/7zip/Crc64.mak +8 -0
- package/android/jni/lzma/CPP/7zip/Crypto/7zAes.cpp +280 -0
- package/android/jni/lzma/CPP/7zip/Crypto/7zAes.h +118 -0
- package/android/jni/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
- package/android/jni/lzma/CPP/7zip/Crypto/MyAes.cpp +112 -0
- package/android/jni/lzma/CPP/7zip/Crypto/MyAes.h +57 -0
- package/android/jni/lzma/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
- package/android/jni/lzma/CPP/7zip/Crypto/RandGen.cpp +233 -0
- package/android/jni/lzma/CPP/7zip/Crypto/RandGen.h +40 -0
- package/android/jni/lzma/CPP/7zip/Crypto/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/GuiCommon.rc +84 -0
- package/android/jni/lzma/CPP/7zip/Guid.txt +220 -0
- package/android/jni/lzma/CPP/7zip/ICoder.h +399 -0
- package/android/jni/lzma/CPP/7zip/IDecl.h +28 -0
- package/android/jni/lzma/CPP/7zip/IPassword.h +23 -0
- package/android/jni/lzma/CPP/7zip/IProgress.h +19 -0
- package/android/jni/lzma/CPP/7zip/IStream.h +127 -0
- package/android/jni/lzma/CPP/7zip/LzmaDec.mak +5 -0
- package/android/jni/lzma/CPP/7zip/MyVersion.h +2 -0
- package/android/jni/lzma/CPP/7zip/MyVersionInfo.rc +2 -0
- package/android/jni/lzma/CPP/7zip/PropID.h +127 -0
- package/android/jni/lzma/CPP/7zip/SubBuild.mak +3 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +993 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +235 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/makefile +28 -0
- package/android/jni/lzma/CPP/7zip/UI/Client7z/resource.rc +3 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1295 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +136 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +1715 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +403 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +155 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveName.h +10 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +161 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +112 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Bench.cpp +3618 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Bench.h +77 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/DefaultName.h +11 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/DirItem.h +190 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +1096 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/EnumDirItems.h +42 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ExitCode.h +27 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Extract.cpp +482 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Extract.h +94 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractMode.h +34 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +280 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.cpp +347 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/HashCalc.h +110 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +114 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +1074 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/LoadCodecs.h +424 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +3553 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/OpenArchive.h +436 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +668 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Property.h +14 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.cpp +80 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/SetProperties.h +10 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/SortUtils.h +10 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.cpp +19 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/TempFiles.h +16 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Update.cpp +1704 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/Update.h +200 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateAction.h +66 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +771 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateCallback.h +162 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +233 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdatePair.h +27 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +70 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/UpdateProduce.h +55 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.cpp +94 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/WorkDir.h +26 -0
- package/android/jni/lzma/CPP/7zip/UI/Common/ZipRegistry.h +130 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/BenchCon.h +14 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/Console.mak +43 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/Console.manifest +13 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +69 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/ConsoleClose.h +33 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +825 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +164 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.cpp +367 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/HashCon.h +48 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/List.cpp +1359 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/List.h +27 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/Main.cpp +1154 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/MainAr.cpp +175 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +66 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +183 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/PercentPrinter.h +62 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +702 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +124 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +110 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/makefile +64 -0
- package/android/jni/lzma/CPP/7zip/UI/Console/resource.rc +7 -0
- package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +37 -0
- package/android/jni/lzma/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1025 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +21 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1037 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +328 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/LangUtils.h +40 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +76 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +122 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +69 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +91 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +17 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +14 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +196 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +170 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1337 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +351 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +48 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +80 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +95 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +255 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +62 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/resource.h +177 -0
- package/android/jni/lzma/CPP/7zip/UI/FileManager/resourceGui.h +15 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/Extract.rc +59 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +418 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +280 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +38 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/HashGUI.h +27 -0
- package/android/jni/lzma/CPP/7zip/UI/GUI/resource2.h +2 -0
- package/android/jni/lzma/CPP/Build.mak +156 -0
- package/android/jni/lzma/CPP/Common/AutoPtr.h +35 -0
- package/android/jni/lzma/CPP/Common/CRC.cpp +7 -0
- package/android/jni/lzma/CPP/Common/C_FileIO.cpp +92 -0
- package/android/jni/lzma/CPP/Common/C_FileIO.h +53 -0
- package/android/jni/lzma/CPP/Common/ComTry.h +21 -0
- package/android/jni/lzma/CPP/Common/CommandLineParser.cpp +197 -0
- package/android/jni/lzma/CPP/Common/CommandLineParser.h +63 -0
- package/android/jni/lzma/CPP/Common/Common.h +43 -0
- package/android/jni/lzma/CPP/Common/CrcReg.cpp +98 -0
- package/android/jni/lzma/CPP/Common/Defs.h +15 -0
- package/android/jni/lzma/CPP/Common/DynamicBuffer.h +64 -0
- package/android/jni/lzma/CPP/Common/IntToString.cpp +193 -0
- package/android/jni/lzma/CPP/Common/IntToString.h +28 -0
- package/android/jni/lzma/CPP/Common/Lang.h +23 -0
- package/android/jni/lzma/CPP/Common/ListFileUtils.cpp +132 -0
- package/android/jni/lzma/CPP/Common/ListFileUtils.h +18 -0
- package/android/jni/lzma/CPP/Common/MyBuffer.h +259 -0
- package/android/jni/lzma/CPP/Common/MyBuffer2.h +100 -0
- package/android/jni/lzma/CPP/Common/MyCom.h +277 -0
- package/android/jni/lzma/CPP/Common/MyException.h +14 -0
- package/android/jni/lzma/CPP/Common/MyGuidDef.h +54 -0
- package/android/jni/lzma/CPP/Common/MyInitGuid.h +45 -0
- package/android/jni/lzma/CPP/Common/MyLinux.h +42 -0
- package/android/jni/lzma/CPP/Common/MyString.cpp +1659 -0
- package/android/jni/lzma/CPP/Common/MyString.h +868 -0
- package/android/jni/lzma/CPP/Common/MyTypes.h +35 -0
- package/android/jni/lzma/CPP/Common/MyUnknown.h +17 -0
- package/android/jni/lzma/CPP/Common/MyVector.cpp +3 -0
- package/android/jni/lzma/CPP/Common/MyVector.h +634 -0
- package/android/jni/lzma/CPP/Common/MyWindows.cpp +145 -0
- package/android/jni/lzma/CPP/Common/MyWindows.h +231 -0
- package/android/jni/lzma/CPP/Common/NewHandler.cpp +163 -0
- package/android/jni/lzma/CPP/Common/NewHandler.h +88 -0
- package/android/jni/lzma/CPP/Common/Sha256Reg.cpp +40 -0
- package/android/jni/lzma/CPP/Common/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/Common/StdInStream.cpp +89 -0
- package/android/jni/lzma/CPP/Common/StdInStream.h +38 -0
- package/android/jni/lzma/CPP/Common/StdOutStream.cpp +163 -0
- package/android/jni/lzma/CPP/Common/StdOutStream.h +71 -0
- package/android/jni/lzma/CPP/Common/StringConvert.cpp +319 -0
- package/android/jni/lzma/CPP/Common/StringConvert.h +88 -0
- package/android/jni/lzma/CPP/Common/StringToInt.cpp +144 -0
- package/android/jni/lzma/CPP/Common/StringToInt.h +21 -0
- package/android/jni/lzma/CPP/Common/TextConfig.cpp +124 -0
- package/android/jni/lzma/CPP/Common/TextConfig.h +19 -0
- package/android/jni/lzma/CPP/Common/UTFConvert.cpp +288 -0
- package/android/jni/lzma/CPP/Common/UTFConvert.h +12 -0
- package/android/jni/lzma/CPP/Common/Wildcard.cpp +676 -0
- package/android/jni/lzma/CPP/Common/Wildcard.h +149 -0
- package/android/jni/lzma/CPP/Common/XzCrc64Init.cpp +7 -0
- package/android/jni/lzma/CPP/Common/XzCrc64Reg.cpp +42 -0
- package/android/jni/lzma/CPP/Windows/COM.h +70 -0
- package/android/jni/lzma/CPP/Windows/CommonDialog.cpp +185 -0
- package/android/jni/lzma/CPP/Windows/CommonDialog.h +23 -0
- package/android/jni/lzma/CPP/Windows/Control/ComboBox.cpp +66 -0
- package/android/jni/lzma/CPP/Windows/Control/ComboBox.h +65 -0
- package/android/jni/lzma/CPP/Windows/Control/CommandBar.h +52 -0
- package/android/jni/lzma/CPP/Windows/Control/Dialog.cpp +251 -0
- package/android/jni/lzma/CPP/Windows/Control/Dialog.h +170 -0
- package/android/jni/lzma/CPP/Windows/Control/Edit.h +19 -0
- package/android/jni/lzma/CPP/Windows/Control/ImageList.cpp +10 -0
- package/android/jni/lzma/CPP/Windows/Control/ImageList.h +87 -0
- package/android/jni/lzma/CPP/Windows/Control/ListView.cpp +155 -0
- package/android/jni/lzma/CPP/Windows/Control/ListView.h +146 -0
- package/android/jni/lzma/CPP/Windows/Control/ProgressBar.h +35 -0
- package/android/jni/lzma/CPP/Windows/Control/PropertyPage.cpp +143 -0
- package/android/jni/lzma/CPP/Windows/Control/PropertyPage.h +50 -0
- package/android/jni/lzma/CPP/Windows/Control/ReBar.h +34 -0
- package/android/jni/lzma/CPP/Windows/Control/Static.h +28 -0
- package/android/jni/lzma/CPP/Windows/Control/StatusBar.h +42 -0
- package/android/jni/lzma/CPP/Windows/Control/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/Windows/Control/ToolBar.h +43 -0
- package/android/jni/lzma/CPP/Windows/Control/Trackbar.h +27 -0
- package/android/jni/lzma/CPP/Windows/Control/Window2.cpp +200 -0
- package/android/jni/lzma/CPP/Windows/Control/Window2.h +51 -0
- package/android/jni/lzma/CPP/Windows/DLL.cpp +109 -0
- package/android/jni/lzma/CPP/Windows/DLL.h +58 -0
- package/android/jni/lzma/CPP/Windows/Defs.h +17 -0
- package/android/jni/lzma/CPP/Windows/ErrorMsg.cpp +66 -0
- package/android/jni/lzma/CPP/Windows/ErrorMsg.h +15 -0
- package/android/jni/lzma/CPP/Windows/FileDir.cpp +714 -0
- package/android/jni/lzma/CPP/Windows/FileDir.h +117 -0
- package/android/jni/lzma/CPP/Windows/FileFind.cpp +749 -0
- package/android/jni/lzma/CPP/Windows/FileFind.h +161 -0
- package/android/jni/lzma/CPP/Windows/FileIO.cpp +432 -0
- package/android/jni/lzma/CPP/Windows/FileIO.h +212 -0
- package/android/jni/lzma/CPP/Windows/FileLink.cpp +440 -0
- package/android/jni/lzma/CPP/Windows/FileMapping.cpp +12 -0
- package/android/jni/lzma/CPP/Windows/FileMapping.h +66 -0
- package/android/jni/lzma/CPP/Windows/FileName.cpp +839 -0
- package/android/jni/lzma/CPP/Windows/FileName.h +115 -0
- package/android/jni/lzma/CPP/Windows/FileSystem.cpp +131 -0
- package/android/jni/lzma/CPP/Windows/FileSystem.h +27 -0
- package/android/jni/lzma/CPP/Windows/Handle.h +37 -0
- package/android/jni/lzma/CPP/Windows/MemoryLock.cpp +112 -0
- package/android/jni/lzma/CPP/Windows/MemoryLock.h +40 -0
- package/android/jni/lzma/CPP/Windows/NtCheck.h +46 -0
- package/android/jni/lzma/CPP/Windows/PropVariant.cpp +347 -0
- package/android/jni/lzma/CPP/Windows/PropVariant.h +114 -0
- package/android/jni/lzma/CPP/Windows/PropVariantConv.cpp +138 -0
- package/android/jni/lzma/CPP/Windows/PropVariantConv.h +37 -0
- package/android/jni/lzma/CPP/Windows/Registry.cpp +390 -0
- package/android/jni/lzma/CPP/Windows/Registry.h +84 -0
- package/android/jni/lzma/CPP/Windows/ResourceString.cpp +103 -0
- package/android/jni/lzma/CPP/Windows/ResourceString.h +16 -0
- package/android/jni/lzma/CPP/Windows/SecurityUtils.cpp +181 -0
- package/android/jni/lzma/CPP/Windows/SecurityUtils.h +167 -0
- package/android/jni/lzma/CPP/Windows/Shell.cpp +358 -0
- package/android/jni/lzma/CPP/Windows/Shell.h +94 -0
- package/android/jni/lzma/CPP/Windows/StdAfx.h +8 -0
- package/android/jni/lzma/CPP/Windows/Synchronization.cpp +10 -0
- package/android/jni/lzma/CPP/Windows/Synchronization.h +164 -0
- package/android/jni/lzma/CPP/Windows/System.cpp +142 -0
- package/android/jni/lzma/CPP/Windows/System.h +40 -0
- package/android/jni/lzma/CPP/Windows/Thread.h +38 -0
- package/android/jni/lzma/CPP/Windows/TimeUtils.cpp +213 -0
- package/android/jni/lzma/CPP/Windows/TimeUtils.h +32 -0
- package/android/jni/lzma/CPP/Windows/Window.cpp +179 -0
- package/android/jni/lzma/CPP/Windows/Window.h +284 -0
- package/android/jni/lzma/CS/7zip/Common/CRC.cs +55 -0
- package/android/jni/lzma/CS/7zip/Common/CommandLineParser.cs +274 -0
- package/android/jni/lzma/CS/7zip/Common/InBuffer.cs +72 -0
- package/android/jni/lzma/CS/7zip/Common/OutBuffer.cs +47 -0
- package/android/jni/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +24 -0
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +367 -0
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +132 -0
- package/android/jni/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +110 -0
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +76 -0
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +398 -0
- package/android/jni/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +1480 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +364 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +90 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +20 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +340 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +29 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +70 -0
- package/android/jni/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +42 -0
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +234 -0
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +117 -0
- package/android/jni/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +157 -0
- package/android/jni/lzma/CS/7zip/ICoder.cs +157 -0
- package/android/jni/lzma/DOC/7zC.txt +187 -0
- package/android/jni/lzma/DOC/7zFormat.txt +469 -0
- package/android/jni/lzma/DOC/Methods.txt +173 -0
- package/android/jni/lzma/DOC/installer.txt +166 -0
- package/android/jni/lzma/DOC/lzma-history.txt +446 -0
- package/android/jni/lzma/DOC/lzma-sdk.txt +357 -0
- package/android/jni/lzma/DOC/lzma-specification.txt +1176 -0
- package/android/jni/lzma/DOC/lzma.txt +328 -0
- package/android/jni/lzma/Java/SevenZip/CRC.java +52 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/BinTree.java +382 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/InWindow.java +131 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +85 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Base.java +88 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +329 -0
- package/android/jni/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +1416 -0
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +55 -0
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +99 -0
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +88 -0
- package/android/jni/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +151 -0
- package/android/jni/lzma/Java/SevenZip/ICodeProgress.java +6 -0
- package/android/jni/lzma/Java/SevenZip/LzmaAlone.java +253 -0
- package/android/jni/lzma/Java/SevenZip/LzmaBench.java +392 -0
- 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/installer/config.txt +5 -0
- package/android/jni/lzma/bin/installer/cr.bat +5 -0
- package/android/lib/arm64-v8a/librnupdate.so +0 -0
- package/android/lib/armeabi-v7a/librnupdate.so +0 -0
- package/android/lib/x86/librnupdate.so +0 -0
- package/android/lib/x86_64/librnupdate.so +0 -0
- package/android/proguard.pro +83 -0
- package/android/src/main/AndroidManifest.xml +14 -0
- package/android/src/main/AndroidManifestNew.xml +13 -0
- package/android/src/main/java/cn/reactnative/modules/update/ApkInstaller.java +292 -0
- package/android/src/main/java/cn/reactnative/modules/update/ArchiveLimits.java +50 -0
- package/android/src/main/java/cn/reactnative/modules/update/ArchivePatchPlanResult.java +11 -0
- package/android/src/main/java/cn/reactnative/modules/update/BundledResourceCopier.java +394 -0
- package/android/src/main/java/cn/reactnative/modules/update/CleanupKeepNames.java +30 -0
- package/android/src/main/java/cn/reactnative/modules/update/CopyGroupResult.java +11 -0
- package/android/src/main/java/cn/reactnative/modules/update/CrashRescue.java +120 -0
- package/android/src/main/java/cn/reactnative/modules/update/DownloadTask.java +954 -0
- package/android/src/main/java/cn/reactnative/modules/update/DownloadTaskParams.java +64 -0
- package/android/src/main/java/cn/reactnative/modules/update/ErrorCodes.java +32 -0
- package/android/src/main/java/cn/reactnative/modules/update/FileOperationException.java +20 -0
- package/android/src/main/java/cn/reactnative/modules/update/HttpUtils.java +64 -0
- package/android/src/main/java/cn/reactnative/modules/update/InstallRecord.java +156 -0
- package/android/src/main/java/cn/reactnative/modules/update/NativeCheckOrchestrator.java +725 -0
- package/android/src/main/java/cn/reactnative/modules/update/NativeUpdateCore.java +43 -0
- package/android/src/main/java/cn/reactnative/modules/update/NativeUpdateFlow.java +30 -0
- package/android/src/main/java/cn/reactnative/modules/update/PackageInstallerStatusReceiver.java +17 -0
- package/android/src/main/java/cn/reactnative/modules/update/PatchFailedException.java +21 -0
- package/android/src/main/java/cn/reactnative/modules/update/ReactReloadManager.java +274 -0
- package/android/src/main/java/cn/reactnative/modules/update/SafeZipFile.java +187 -0
- package/android/src/main/java/cn/reactnative/modules/update/StateCoreResult.java +22 -0
- package/android/src/main/java/cn/reactnative/modules/update/StateSerialRunner.java +70 -0
- package/android/src/main/java/cn/reactnative/modules/update/UiThreadRunner.java +42 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdateContext.java +952 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdateEventEmitter.java +70 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdateFileUtils.java +110 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdateModuleImpl.java +403 -0
- package/android/src/main/java/cn/reactnative/modules/update/UpdatePackage.java +51 -0
- package/android/src/main/java/expo/modules/pakta/ExpoPaktaModule.kt +15 -0
- package/android/src/main/java/expo/modules/pakta/ExpoPaktaPackage.java +29 -0
- package/android/src/newarch/cn/reactnative/modules/update/UpdateModule.java +126 -0
- package/android/src/oldarch/cn/reactnative/modules/update/UpdateModule.java +130 -0
- package/cpp/patch_core/archive_limits.h +49 -0
- package/cpp/patch_core/archive_patch_core.cpp +146 -0
- package/cpp/patch_core/archive_patch_core.h +69 -0
- package/cpp/patch_core/digest.cpp +235 -0
- package/cpp/patch_core/digest.h +66 -0
- package/cpp/patch_core/error_codes.h +57 -0
- package/cpp/patch_core/hbc_transform.cpp +152 -0
- package/cpp/patch_core/hbc_transform.h +58 -0
- package/cpp/patch_core/hbc_transform_wire.cpp +332 -0
- package/cpp/patch_core/hbc_transform_wire.h +57 -0
- package/cpp/patch_core/install_record.h +41 -0
- package/cpp/patch_core/jni_util.h +65 -0
- package/cpp/patch_core/patch_core.cpp +849 -0
- package/cpp/patch_core/patch_core.h +103 -0
- package/cpp/patch_core/patch_core_android.cpp +102 -0
- package/cpp/patch_core/state_core.cpp +122 -0
- package/cpp/patch_core/state_core.h +66 -0
- package/cpp/patch_core/state_ops.h +29 -0
- package/cpp/patch_core/update_core_android.cpp +502 -0
- package/cpp/update_flow_core/flow_json.cpp +660 -0
- package/cpp/update_flow_core/flow_json.h +121 -0
- package/cpp/update_flow_core/update_flow_core.cpp +418 -0
- package/cpp/update_flow_core/update_flow_core.h +100 -0
- package/cpp/update_flow_core/update_flow_jni.cpp +157 -0
- package/expo-module.config.json +13 -0
- package/harmony/hvigor-plugin.ts +212 -0
- package/harmony/pakta/src/README.md +74 -0
- package/harmony/pakta/src/main/cpp/CMakeLists.txt +92 -0
- package/harmony/pakta/src/main/cpp/PaktaPackage.h +60 -0
- package/harmony/pakta/src/main/cpp/PaktaTurboModule.cpp +123 -0
- package/harmony/pakta/src/main/cpp/PaktaTurboModule.h +43 -0
- package/harmony/pakta/src/main/cpp/pakta.cpp +1243 -0
- package/harmony/pakta/src/main/ets/ArchiveLimits.ts +144 -0
- package/harmony/pakta/src/main/ets/DownloadTask.ts +1375 -0
- package/harmony/pakta/src/main/ets/DownloadTaskParams.ts +27 -0
- package/harmony/pakta/src/main/ets/ErrorCodes.ts +80 -0
- package/harmony/pakta/src/main/ets/EventHub.ts +46 -0
- package/harmony/pakta/src/main/ets/InstallRecord.ts +192 -0
- package/harmony/pakta/src/main/ets/Logger.ts +83 -0
- package/harmony/pakta/src/main/ets/MonotonicClock.ts +18 -0
- package/harmony/pakta/src/main/ets/NativeCheckOrchestrator.ts +640 -0
- package/harmony/pakta/src/main/ets/NativePatchCore.ts +123 -0
- package/harmony/pakta/src/main/ets/PaktaFileJSBundleProvider.ets +54 -0
- package/harmony/pakta/src/main/ets/PaktaPackage.ets +15 -0
- package/harmony/pakta/src/main/ets/PaktaPackageCompat.ts +15 -0
- package/harmony/pakta/src/main/ets/PaktaPackageFactory.ts +19 -0
- package/harmony/pakta/src/main/ets/PaktaTurboModule.ts +433 -0
- package/harmony/pakta/src/main/ets/PathUtils.ts +32 -0
- package/harmony/pakta/src/main/ets/SaveFile.ts +39 -0
- package/harmony/pakta/src/main/ets/UpdateContext.ts +1059 -0
- package/harmony/pakta/src/main/module.json5 +14 -0
- package/harmony/pakta/src/main/resources/base/element/string.json +8 -0
- package/harmony/pakta/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/pakta/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/pakta.har +0 -0
- package/ios/Expo/ExpoPaktaModule.swift +12 -0
- package/ios/Expo/ExpoPaktaReactDelegateHandler.swift +25 -0
- package/ios/ImportReact.h +7 -0
- package/ios/PrivacyInfo.xcprivacy +84 -0
- package/ios/RCTPakta/RCTPakta.h +14 -0
- package/ios/RCTPakta/RCTPakta.mm +2775 -0
- package/ios/RCTPakta/RCTPaktaDownloader.h +29 -0
- package/ios/RCTPakta/RCTPaktaDownloader.mm +625 -0
- package/ios/pakta_build_time.txt +1 -0
- package/package.json +88 -0
- package/react-native.config.js +6 -0
- package/rn-update.podspec +221 -0
- package/src/NativePakta.ts +85 -0
- package/src/client.ts +1839 -0
- package/src/context.ts +102 -0
- package/src/core.ts +190 -0
- package/src/endpoint.ts +204 -0
- package/src/error.ts +168 -0
- package/src/errorReporting.ts +141 -0
- package/src/globals.d.ts +6 -0
- package/src/i18n.ts +113 -0
- package/src/index.ts +46 -0
- package/src/locales/en.ts +77 -0
- package/src/locales/zh.ts +71 -0
- package/src/metadata.ts +175 -0
- package/src/provider.tsx +629 -0
- package/src/telemetry.ts +104 -0
- package/src/type.ts +243 -0
- package/src/updateFlowCore.ts +428 -0
- package/src/utils.ts +268 -0
|
@@ -0,0 +1,725 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [INPUT]: 依赖 UpdateContext 持久配置/提交锁、NativeUpdateFlow 纯决策、OkHttp、DownloadTask 与 CrashRescue 截止时间
|
|
3
|
+
* [OUTPUT]: 对内提供每进程单轮 schedule、isRoundInFlight、runRescue,完成检查请求、缓存、下载与受代际保护的激活
|
|
4
|
+
* [POS]: Android 无 JS 冷启动更新 IO 编排器;不复制 rollout/响应决策,并以有界失败保障坏 bundle 自救
|
|
5
|
+
*/
|
|
6
|
+
package cn.reactnative.modules.update;
|
|
7
|
+
|
|
8
|
+
import android.os.Build;
|
|
9
|
+
import android.util.Log;
|
|
10
|
+
import androidx.annotation.Nullable;
|
|
11
|
+
import java.io.IOException;
|
|
12
|
+
import java.nio.charset.Charset;
|
|
13
|
+
import java.nio.charset.StandardCharsets;
|
|
14
|
+
import java.util.HashSet;
|
|
15
|
+
import java.util.concurrent.CountDownLatch;
|
|
16
|
+
import java.util.concurrent.TimeUnit;
|
|
17
|
+
import java.util.concurrent.atomic.AtomicBoolean;
|
|
18
|
+
import okhttp3.MediaType;
|
|
19
|
+
import okhttp3.OkHttpClient;
|
|
20
|
+
import okhttp3.Request;
|
|
21
|
+
import okhttp3.RequestBody;
|
|
22
|
+
import okhttp3.Response;
|
|
23
|
+
import okhttp3.ResponseBody;
|
|
24
|
+
import okio.BufferedSource;
|
|
25
|
+
import org.json.JSONArray;
|
|
26
|
+
import org.json.JSONException;
|
|
27
|
+
import org.json.JSONObject;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Native cold-start update check (NATIVE_CHECKUPDATE_DESIGN §10): once per
|
|
31
|
+
* process, a few seconds after getBundleUrl, entirely independent of the app
|
|
32
|
+
* bundle — this is what lets a device bricked by a bad hot update pull the
|
|
33
|
+
* fixed version on the next launch. All decisions come from
|
|
34
|
+
* cpp/update_flow_core via NativeUpdateFlow; this class is IO glue only.
|
|
35
|
+
* Failures are silent and bounded: one round per launch, no retry storms, no
|
|
36
|
+
* version blacklisting.
|
|
37
|
+
*/
|
|
38
|
+
final class NativeCheckOrchestrator {
|
|
39
|
+
static final String KEY_CONFIG = "nativeConfig";
|
|
40
|
+
// Raw response cache for the JS side to reuse (§10.3), scoped to the
|
|
41
|
+
// exact logical request and native config that produced it.
|
|
42
|
+
static final String KEY_RESP_CACHE = "nativeCheckResp";
|
|
43
|
+
// Set when a round starts, cleared when it ends (§11.4). Residue on the
|
|
44
|
+
// next launch means the previous process died mid-round (a crash rescue
|
|
45
|
+
// was truncated): that launch resumes immediately instead of waiting 5s.
|
|
46
|
+
static final String KEY_ROUND_INCOMPLETE = "nativeCheckIncomplete";
|
|
47
|
+
private static final int MAX_CHECK_HTTP_ATTEMPTS = 8;
|
|
48
|
+
private static final long DOWNLOAD_PHASE_TIMEOUT_SECONDS = 600;
|
|
49
|
+
// The check response (and a remote queryUrls list) is a small JSON
|
|
50
|
+
// document; anything bigger is a broken or hijacked endpoint.
|
|
51
|
+
private static final long MAX_CHECK_RESPONSE_BYTES = 1024 * 1024;
|
|
52
|
+
|
|
53
|
+
private static final AtomicBoolean scheduled = new AtomicBoolean(false);
|
|
54
|
+
// One round per process, whoever starts it first — the delayed cold-start
|
|
55
|
+
// thread or the crash-rescue thread (§11.3). roundDone lets the rescue
|
|
56
|
+
// wait for an in-flight round instead of racing it.
|
|
57
|
+
private static final AtomicBoolean roundStarted = new AtomicBoolean(false);
|
|
58
|
+
private static final CountDownLatch roundDone = new CountDownLatch(1);
|
|
59
|
+
private static volatile boolean roundCompleted = false;
|
|
60
|
+
// Flipped the moment a crash is being held. JS is dead from that point
|
|
61
|
+
// on, so there is no second decision maker: the round force-activates
|
|
62
|
+
// whatever it downloads (§11.3).
|
|
63
|
+
private static volatile boolean crashRescueActive = false;
|
|
64
|
+
// A version this process downloaded but left for JS to activate. If the
|
|
65
|
+
// process then crashes, JS will never activate it — the crash handler
|
|
66
|
+
// activates it directly (bounded local work, no network). The generation
|
|
67
|
+
// is the one the round committed under: a reset that lands afterwards
|
|
68
|
+
// bumps it, and the late activation must lose to that reset exactly like
|
|
69
|
+
// the round itself would. Written generation-first, read hash-first, so
|
|
70
|
+
// a torn read can only see a stricter (newer) generation.
|
|
71
|
+
private static volatile String unactivatedHash;
|
|
72
|
+
private static volatile long unactivatedGeneration;
|
|
73
|
+
private static volatile UpdateContext sContext;
|
|
74
|
+
private static volatile String sLaunchRolledBackVersion;
|
|
75
|
+
// Config JSON for which JS reported a completed check in this process
|
|
76
|
+
// (markJsCheckCompleted). Process-scoped by design: the next launch
|
|
77
|
+
// starts with no signal and the cold-start round runs again.
|
|
78
|
+
private static volatile String sJsCompletedConfig;
|
|
79
|
+
|
|
80
|
+
static void markJsCheckCompleted(String config) {
|
|
81
|
+
sJsCompletedConfig = config;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* True when JS already obtained a valid response in this process for the
|
|
86
|
+
* exact config the native round would use: the delayed round is then a
|
|
87
|
+
* duplicate request. Only the scheduled round consults this — the
|
|
88
|
+
* crash-rescue path still runs, JS is dead by then.
|
|
89
|
+
*/
|
|
90
|
+
private static boolean isJsCheckCompleted(UpdateContext context) {
|
|
91
|
+
String jsConfig = sJsCompletedConfig;
|
|
92
|
+
return jsConfig != null && jsConfig.equals(context.getKv(KEY_CONFIG));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
private NativeCheckOrchestrator() {
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static void schedule(final UpdateContext context, final String launchRolledBackVersion) {
|
|
99
|
+
if (UpdateContext.DEBUG) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!scheduled.compareAndSet(false, true)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
sContext = context;
|
|
106
|
+
sLaunchRolledBackVersion = launchRolledBackVersion;
|
|
107
|
+
// The crash-hold rescue shares the orchestrator's rollout gate: no
|
|
108
|
+
// persisted config, no handler (§11.3).
|
|
109
|
+
if (context.getKv(KEY_CONFIG) != null) {
|
|
110
|
+
CrashRescue.install();
|
|
111
|
+
}
|
|
112
|
+
Thread thread = new Thread(new Runnable() {
|
|
113
|
+
@Override
|
|
114
|
+
public void run() {
|
|
115
|
+
try {
|
|
116
|
+
// Keep the check away from the cold-start critical path
|
|
117
|
+
// (§7 R5) — unless the previous process died mid-round,
|
|
118
|
+
// in which case every launch second counts (§11.4).
|
|
119
|
+
if (context.getKv(KEY_ROUND_INCOMPLETE) == null) {
|
|
120
|
+
Thread.sleep(5000);
|
|
121
|
+
}
|
|
122
|
+
if (isJsCheckCompleted(context)) {
|
|
123
|
+
// Not consuming the round: a later crash rescue may
|
|
124
|
+
// still need it.
|
|
125
|
+
Log.i(UpdateContext.TAG,
|
|
126
|
+
"native check skipped: JS check completed in this process");
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
startRound(0);
|
|
130
|
+
} catch (Throwable e) {
|
|
131
|
+
// The rescue path must never take the app down with it.
|
|
132
|
+
Log.w(UpdateContext.TAG, "native check failed: " + e);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, "pakta-native-check");
|
|
136
|
+
thread.setPriority(Thread.MIN_PRIORITY + 1);
|
|
137
|
+
thread.setDaemon(true);
|
|
138
|
+
thread.start();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
static boolean isRoundInFlight() {
|
|
142
|
+
return roundStarted.get() && !roundCompleted;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Runs the process's single round on the calling thread if nobody has
|
|
147
|
+
* started it yet. deadlineNanos > 0 (crash rescue) caps every HTTP call
|
|
148
|
+
* and download phase to the remaining budget.
|
|
149
|
+
*/
|
|
150
|
+
private static void startRound(long deadlineNanos) {
|
|
151
|
+
if (!roundStarted.compareAndSet(false, true)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
runOnce(sContext, sLaunchRolledBackVersion, deadlineNanos);
|
|
156
|
+
} catch (Throwable e) {
|
|
157
|
+
Log.w(UpdateContext.TAG, "native check failed: " + e);
|
|
158
|
+
} finally {
|
|
159
|
+
roundCompleted = true;
|
|
160
|
+
roundDone.countDown();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Crash-rescue entry (§11.3), called from the handler's worker thread
|
|
166
|
+
* while the uncaught-exception handler holds the dying process. Ensures
|
|
167
|
+
* this process's round runs to completion within the budget, then
|
|
168
|
+
* activates a downloaded-but-unactivated version if one exists — the
|
|
169
|
+
* last chance before the process is gone.
|
|
170
|
+
*/
|
|
171
|
+
static void runRescue(long deadlineNanos) {
|
|
172
|
+
UpdateContext context = sContext;
|
|
173
|
+
if (context == null) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
crashRescueActive = true;
|
|
177
|
+
startRound(deadlineNanos);
|
|
178
|
+
if (!roundCompleted) {
|
|
179
|
+
long remainingNanos = deadlineNanos - System.nanoTime();
|
|
180
|
+
if (remainingNanos > 0) {
|
|
181
|
+
try {
|
|
182
|
+
roundDone.await(remainingNanos, TimeUnit.NANOSECONDS);
|
|
183
|
+
} catch (InterruptedException e) {
|
|
184
|
+
Thread.currentThread().interrupt();
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
activatePendingVersion(context);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// The alert-strategy variant of the §10.7 hole: the round downloaded a
|
|
193
|
+
// fix but deferred activation to JS, and JS is now dead. Activation is
|
|
194
|
+
// local and bounded (the bundle digest, then a state switch under the
|
|
195
|
+
// commit lock).
|
|
196
|
+
private static void activatePendingVersion(UpdateContext context) {
|
|
197
|
+
String hash = unactivatedHash;
|
|
198
|
+
if (hash == null) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
String hashInfoJson = null;
|
|
202
|
+
String existingInfo = context.getKv("hash_" + hash);
|
|
203
|
+
if (existingInfo != null) {
|
|
204
|
+
try {
|
|
205
|
+
JSONObject info = new JSONObject(existingInfo);
|
|
206
|
+
info.put("crashRescue", true);
|
|
207
|
+
hashInfoJson = info.toString();
|
|
208
|
+
} catch (JSONException ignored) {
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
if (context.commitNativeCheckResult(
|
|
213
|
+
unactivatedGeneration, hash, hashInfoJson, true, null)) {
|
|
214
|
+
unactivatedHash = null;
|
|
215
|
+
Log.i(UpdateContext.TAG,
|
|
216
|
+
"crash rescue: activated downloaded version " + hash);
|
|
217
|
+
} else {
|
|
218
|
+
Log.i(UpdateContext.TAG,
|
|
219
|
+
"crash rescue: reset since download, dropping activation");
|
|
220
|
+
}
|
|
221
|
+
} catch (Exception e) {
|
|
222
|
+
Log.w(UpdateContext.TAG, "crash rescue: activation failed: " + e);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
private static void runOnce(
|
|
227
|
+
UpdateContext context,
|
|
228
|
+
String launchRolledBackVersion,
|
|
229
|
+
long deadlineNanos
|
|
230
|
+
) throws JSONException {
|
|
231
|
+
// Sampled before any IO: a reset landing while this round runs must
|
|
232
|
+
// win over the round's decision.
|
|
233
|
+
final long resetGeneration = UpdateContext.getResetGeneration();
|
|
234
|
+
String configJson = context.getKv(KEY_CONFIG);
|
|
235
|
+
if (configJson == null || configJson.isEmpty()) {
|
|
236
|
+
// No persisted config (old integration / first ever launch): the
|
|
237
|
+
// native check silently does not run — this is the rollout gate.
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
JSONObject config;
|
|
241
|
+
try {
|
|
242
|
+
config = new JSONObject(configJson);
|
|
243
|
+
} catch (JSONException e) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
if (config.optBoolean("disabled", false)) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
String appKey = config.optString("appKey", "");
|
|
250
|
+
if (appKey.isEmpty()) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
// From here on the round does real work: leave the breadcrumb that
|
|
254
|
+
// the next launch reads to skip its 5s delay if we die mid-round.
|
|
255
|
+
// Best-effort: a lost breadcrumb costs one 5s delay, it must not
|
|
256
|
+
// abort the rescue round itself.
|
|
257
|
+
try {
|
|
258
|
+
context.setKv(KEY_ROUND_INCOMPLETE, "1");
|
|
259
|
+
} catch (IllegalStateException ignored) {
|
|
260
|
+
}
|
|
261
|
+
try {
|
|
262
|
+
runConfiguredRound(
|
|
263
|
+
context, launchRolledBackVersion, deadlineNanos,
|
|
264
|
+
resetGeneration, configJson, config, appKey);
|
|
265
|
+
} finally {
|
|
266
|
+
try {
|
|
267
|
+
context.removeKv(KEY_ROUND_INCOMPLETE);
|
|
268
|
+
} catch (IllegalStateException ignored) {
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
private static void runConfiguredRound(
|
|
274
|
+
UpdateContext context,
|
|
275
|
+
String launchRolledBackVersion,
|
|
276
|
+
long deadlineNanos,
|
|
277
|
+
long resetGeneration,
|
|
278
|
+
String configJson,
|
|
279
|
+
JSONObject config,
|
|
280
|
+
String appKey
|
|
281
|
+
) throws JSONException {
|
|
282
|
+
String packageVersion = config.optString(
|
|
283
|
+
"packageVersion", context.getPackageVersion());
|
|
284
|
+
if (packageVersion.isEmpty()) {
|
|
285
|
+
packageVersion = context.getPackageVersion();
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
String currentVersion = context.getCurrentVersion();
|
|
289
|
+
// Snapshot captured on the launch path before getConstants consumes
|
|
290
|
+
// the one-shot rollback marker. Reading SharedPreferences here, five
|
|
291
|
+
// seconds later, would lose the guard and could forceBoot the version
|
|
292
|
+
// that this very launch just rolled back.
|
|
293
|
+
String rolledBackVersion = launchRolledBackVersion;
|
|
294
|
+
String uuid = context.getKv("uuid");
|
|
295
|
+
if (uuid == null) {
|
|
296
|
+
uuid = "";
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
JSONObject identity = new JSONObject();
|
|
300
|
+
identity.put("packageVersion", packageVersion);
|
|
301
|
+
identity.put(
|
|
302
|
+
"currentVersion",
|
|
303
|
+
currentVersion == null ? JSONObject.NULL : currentVersion
|
|
304
|
+
);
|
|
305
|
+
identity.put("uuid", uuid);
|
|
306
|
+
if (rolledBackVersion != null) {
|
|
307
|
+
identity.put("rolledBackVersion", rolledBackVersion);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
JSONObject cInfo = new JSONObject();
|
|
311
|
+
cInfo.put("rnu", config.optString("rnu", ""));
|
|
312
|
+
cInfo.put("rn", config.optString("rn", ""));
|
|
313
|
+
// React Native's Platform.Version is the Android SDK integer; use the
|
|
314
|
+
// same value so this request can be fingerprinted against the JS one.
|
|
315
|
+
cInfo.put("os", "android " + Build.VERSION.SDK_INT);
|
|
316
|
+
cInfo.put("uuid", uuid);
|
|
317
|
+
|
|
318
|
+
JSONObject input = new JSONObject();
|
|
319
|
+
input.put("packageVersion", packageVersion);
|
|
320
|
+
// 渠道由宿主 Manifest 固化,不能被 JS/native config 覆盖。
|
|
321
|
+
input.put("channel", context.getChannel());
|
|
322
|
+
input.put(
|
|
323
|
+
"currentVersion",
|
|
324
|
+
currentVersion == null ? JSONObject.NULL : currentVersion
|
|
325
|
+
);
|
|
326
|
+
input.put("buildTime", context.getBuildTime());
|
|
327
|
+
input.put("cInfo", cInfo);
|
|
328
|
+
input.put("supportedDiffVersion", NativeUpdateCore.supportedDiffVersion());
|
|
329
|
+
input.put("bundleHash", context.computeBundleHash());
|
|
330
|
+
|
|
331
|
+
String body = NativeUpdateFlow.buildCheckRequestBody(input.toString());
|
|
332
|
+
if (body == null) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
String responseText = runCheckRequest(config, appKey, body, deadlineNanos);
|
|
337
|
+
if (responseText == null) {
|
|
338
|
+
Log.i(UpdateContext.TAG,
|
|
339
|
+
"native check: no endpoint reachable, giving up until next launch");
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
// Cache freshness is anchored to when the server response arrived,
|
|
343
|
+
// not to when a potentially long download/patch/activation finished.
|
|
344
|
+
final long responseAtSeconds = System.currentTimeMillis() / 1000;
|
|
345
|
+
|
|
346
|
+
String decisionJson = NativeUpdateFlow.handleCheckResponse(
|
|
347
|
+
responseText, identity.toString(), config.optString("afterDownload", ""));
|
|
348
|
+
if (decisionJson == null) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
JSONObject decision = new JSONObject(decisionJson);
|
|
352
|
+
if (!"download".equals(decision.optString("action"))) {
|
|
353
|
+
context.commitNativeCheckResult(
|
|
354
|
+
resetGeneration, null, null, false,
|
|
355
|
+
buildResponseCacheJson(configJson, body, responseText, responseAtSeconds));
|
|
356
|
+
Log.i(UpdateContext.TAG,
|
|
357
|
+
"native check: nothing to do (" + decision.optString("reason") + ")");
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
String hash = decision.optString("hash", "");
|
|
361
|
+
if (!UpdateFileUtils.isSafePathComponent(hash)) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
boolean downloaded = context.hasCompletedVersion(hash);
|
|
366
|
+
if (!downloaded) {
|
|
367
|
+
downloaded = performAttempts(
|
|
368
|
+
context, decision.optJSONArray("attempts"), hash, currentVersion,
|
|
369
|
+
deadlineNanos);
|
|
370
|
+
}
|
|
371
|
+
if (!downloaded) {
|
|
372
|
+
// The native attempt has finished, so JS may safely reuse the
|
|
373
|
+
// response and retry through its own strategy chain.
|
|
374
|
+
context.commitNativeCheckResult(
|
|
375
|
+
resetGeneration, null, null, false,
|
|
376
|
+
buildResponseCacheJson(configJson, body, responseText, responseAtSeconds));
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// Version info (mirroring the JS side's setLocalHashInfo), the
|
|
381
|
+
// activation and the response cache all land in one atomic commit —
|
|
382
|
+
// see UpdateContext.commitNativeCheckResult.
|
|
383
|
+
String hashInfoJson = null;
|
|
384
|
+
JSONObject info = decision.optJSONObject("info");
|
|
385
|
+
if (info != null) {
|
|
386
|
+
JSONObject hashInfo = new JSONObject();
|
|
387
|
+
for (String key : new String[] {"name", "description", "metaInfo"}) {
|
|
388
|
+
Object value = info.opt(key);
|
|
389
|
+
if (value instanceof String) {
|
|
390
|
+
hashInfo.put(key, value);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
// A forceBoot activation is the brick-rescue path: mark it in the
|
|
394
|
+
// persisted info so JS can report force_boot_rescue when this
|
|
395
|
+
// version survives to markSuccess. Only the server-sent directive
|
|
396
|
+
// counts — a silent-strategy activation is ordinary delivery.
|
|
397
|
+
JSONObject infoConfig = info.optJSONObject("config");
|
|
398
|
+
if (infoConfig != null && infoConfig.optBoolean("forceBoot", false)) {
|
|
399
|
+
hashInfo.put("forceBootRescue", true);
|
|
400
|
+
}
|
|
401
|
+
if (crashRescueActive) {
|
|
402
|
+
hashInfo.put("crashRescue", true);
|
|
403
|
+
}
|
|
404
|
+
hashInfoJson = hashInfo.toString();
|
|
405
|
+
}
|
|
406
|
+
// Silent strategies or a server-marked forceBoot version (per-version
|
|
407
|
+
// remote override — the brick rescue) activate for the next launch;
|
|
408
|
+
// otherwise activation stays with the JS side. Unless a crash is
|
|
409
|
+
// being held: JS is dead, deferring to it would leave the fix on
|
|
410
|
+
// disk forever (§11.3).
|
|
411
|
+
boolean activate = decision.optBoolean("activate", false) || crashRescueActive;
|
|
412
|
+
boolean committed;
|
|
413
|
+
try {
|
|
414
|
+
committed = context.commitNativeCheckResult(
|
|
415
|
+
resetGeneration,
|
|
416
|
+
hash,
|
|
417
|
+
hashInfoJson,
|
|
418
|
+
activate,
|
|
419
|
+
buildResponseCacheJson(configJson, body, responseText, responseAtSeconds));
|
|
420
|
+
} catch (Exception e) {
|
|
421
|
+
Log.w(UpdateContext.TAG, "native check: commit failed: " + e);
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
424
|
+
if (!committed) {
|
|
425
|
+
Log.i(UpdateContext.TAG, "native check: reset during round, dropping result");
|
|
426
|
+
} else if (activate) {
|
|
427
|
+
unactivatedHash = null;
|
|
428
|
+
Log.i(UpdateContext.TAG,
|
|
429
|
+
"native check: downloaded " + hash + " and set for next launch");
|
|
430
|
+
} else {
|
|
431
|
+
// Remembered so a crash later in this process can still activate
|
|
432
|
+
// it (activatePendingVersion) — JS never will.
|
|
433
|
+
unactivatedGeneration = resetGeneration;
|
|
434
|
+
unactivatedHash = hash;
|
|
435
|
+
Log.i(UpdateContext.TAG,
|
|
436
|
+
"native check: downloaded " + hash + ", activation left to JS");
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
private static String buildResponseCacheJson(
|
|
441
|
+
String configJson,
|
|
442
|
+
String requestBody,
|
|
443
|
+
String responseText,
|
|
444
|
+
long responseAtSeconds
|
|
445
|
+
) throws JSONException {
|
|
446
|
+
JSONObject cacheEntry = new JSONObject();
|
|
447
|
+
cacheEntry.put("ts", responseAtSeconds);
|
|
448
|
+
cacheEntry.put("body", responseText);
|
|
449
|
+
cacheEntry.put("request", requestBody);
|
|
450
|
+
cacheEntry.put("config", configJson);
|
|
451
|
+
return cacheEntry.toString();
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
private static final OkHttpClient httpClient = new OkHttpClient.Builder()
|
|
455
|
+
.connectTimeout(10, TimeUnit.SECONDS)
|
|
456
|
+
.readTimeout(10, TimeUnit.SECONDS)
|
|
457
|
+
.callTimeout(15, TimeUnit.SECONDS)
|
|
458
|
+
.build();
|
|
459
|
+
|
|
460
|
+
private static String httpRequest(String url, String postBody, long deadlineNanos) {
|
|
461
|
+
try {
|
|
462
|
+
Request.Builder builder =
|
|
463
|
+
new Request.Builder().url(url).header("Accept", "application/json");
|
|
464
|
+
if (postBody != null) {
|
|
465
|
+
builder.post(RequestBody.create(
|
|
466
|
+
postBody, MediaType.parse("application/json; charset=utf-8")));
|
|
467
|
+
}
|
|
468
|
+
OkHttpClient client = httpClient;
|
|
469
|
+
if (deadlineNanos > 0) {
|
|
470
|
+
// Crash-rescue budget: never let a single request outlive the
|
|
471
|
+
// handler's hold window.
|
|
472
|
+
long remainingMillis = TimeUnit.NANOSECONDS.toMillis(
|
|
473
|
+
deadlineNanos - System.nanoTime());
|
|
474
|
+
if (remainingMillis <= 0) {
|
|
475
|
+
return null;
|
|
476
|
+
}
|
|
477
|
+
if (remainingMillis < 15000) {
|
|
478
|
+
client = httpClient.newBuilder()
|
|
479
|
+
.callTimeout(remainingMillis, TimeUnit.MILLISECONDS)
|
|
480
|
+
.build();
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
try (Response response = client.newCall(builder.build()).execute()) {
|
|
484
|
+
// Same rule as the artifact download: an https endpoint that
|
|
485
|
+
// redirects to plaintext http is a failed endpoint.
|
|
486
|
+
DownloadTask.rejectProtocolDowngrade(url, response);
|
|
487
|
+
ResponseBody body = response.body();
|
|
488
|
+
if (!response.isSuccessful() || body == null) {
|
|
489
|
+
return null;
|
|
490
|
+
}
|
|
491
|
+
return readBoundedBody(body);
|
|
492
|
+
}
|
|
493
|
+
} catch (Exception e) {
|
|
494
|
+
// One line per failed endpoint; the fallback chain is otherwise
|
|
495
|
+
// invisible in the field.
|
|
496
|
+
Log.w(UpdateContext.TAG, "native check: request failed with "
|
|
497
|
+
+ e.getClass().getName() + ": " + e.getMessage());
|
|
498
|
+
return null;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Reads the body with a hard cap (CODE_AUDIT 2.7): a hijacked endpoint
|
|
504
|
+
* must not be able to OOM this thread with an unbounded string. Over the
|
|
505
|
+
* cap counts as a failed endpoint (null), like any other bad response.
|
|
506
|
+
*/
|
|
507
|
+
@Nullable
|
|
508
|
+
private static String readBoundedBody(ResponseBody body) throws IOException {
|
|
509
|
+
if (body.contentLength() > MAX_CHECK_RESPONSE_BYTES) {
|
|
510
|
+
return null;
|
|
511
|
+
}
|
|
512
|
+
BufferedSource source = body.source();
|
|
513
|
+
if (source.request(MAX_CHECK_RESPONSE_BYTES + 1)) {
|
|
514
|
+
Log.w(UpdateContext.TAG, "native check: response exceeds "
|
|
515
|
+
+ MAX_CHECK_RESPONSE_BYTES + " bytes, ignoring endpoint");
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
MediaType contentType = body.contentType();
|
|
519
|
+
Charset charset = contentType == null
|
|
520
|
+
? null : contentType.charset(StandardCharsets.UTF_8);
|
|
521
|
+
return source.readString(charset == null ? StandardCharsets.UTF_8 : charset);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
// Shared schema rule (update_flow_core::IsValidCheckResponse): a 200 with
|
|
525
|
+
// `{"error": ...}` is a failed endpoint, not a verdict, and must not stop
|
|
526
|
+
// the endpoint fallback.
|
|
527
|
+
private static boolean isValidCheckResponse(String responseText) {
|
|
528
|
+
return responseText != null && NativeUpdateFlow.isValidCheckResponse(responseText);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Sequential fallback over the ordered candidates (§5.1): one request at
|
|
533
|
+
* a time with its own timeout; after the configured round fails,
|
|
534
|
+
* queryUrls discovery merges remote candidates (excluding the
|
|
535
|
+
* already-tried) for one more round. No hedged race on purpose — this
|
|
536
|
+
* path is latency-insensitive.
|
|
537
|
+
*/
|
|
538
|
+
private static String runCheckRequest(
|
|
539
|
+
JSONObject config, String appKey, String body, long deadlineNanos
|
|
540
|
+
) {
|
|
541
|
+
JSONArray endpoints = config.optJSONArray("endpoints");
|
|
542
|
+
String orderedJson = NativeUpdateFlow.orderEndpointCandidates(
|
|
543
|
+
endpoints == null ? "[]" : endpoints.toString(), Math.random());
|
|
544
|
+
JSONArray ordered;
|
|
545
|
+
try {
|
|
546
|
+
ordered = orderedJson == null ? new JSONArray() : new JSONArray(orderedJson);
|
|
547
|
+
} catch (JSONException e) {
|
|
548
|
+
return null;
|
|
549
|
+
}
|
|
550
|
+
HashSet<String> tried = new HashSet<>();
|
|
551
|
+
int httpAttempts = 0;
|
|
552
|
+
for (int i = 0; i < ordered.length(); i++) {
|
|
553
|
+
String base = HttpUtils.normalizeEndpointBase(ordered.optString(i, ""));
|
|
554
|
+
if (base.isEmpty() || !tried.add(base)) {
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
if (httpAttempts++ >= MAX_CHECK_HTTP_ATTEMPTS) {
|
|
558
|
+
return null;
|
|
559
|
+
}
|
|
560
|
+
String response = httpRequest(
|
|
561
|
+
base + "/checkUpdate/" + appKey, body, deadlineNanos);
|
|
562
|
+
if (isValidCheckResponse(response)) {
|
|
563
|
+
return response;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
JSONArray queryUrls = config.optJSONArray("queryUrls");
|
|
567
|
+
if (queryUrls == null) {
|
|
568
|
+
return null;
|
|
569
|
+
}
|
|
570
|
+
for (int i = 0; i < queryUrls.length(); i++) {
|
|
571
|
+
String listUrl = queryUrls.optString(i, "");
|
|
572
|
+
if (listUrl.isEmpty()) {
|
|
573
|
+
continue;
|
|
574
|
+
}
|
|
575
|
+
if (httpAttempts++ >= MAX_CHECK_HTTP_ATTEMPTS) {
|
|
576
|
+
return null;
|
|
577
|
+
}
|
|
578
|
+
String listText = httpRequest(listUrl, null, deadlineNanos);
|
|
579
|
+
if (listText == null) {
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
JSONArray remote;
|
|
583
|
+
try {
|
|
584
|
+
remote = new JSONArray(listText);
|
|
585
|
+
} catch (JSONException e) {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
for (int j = 0; j < remote.length(); j++) {
|
|
589
|
+
String base = HttpUtils.normalizeEndpointBase(remote.optString(j, ""));
|
|
590
|
+
if (base.isEmpty() || tried.contains(base)) {
|
|
591
|
+
continue;
|
|
592
|
+
}
|
|
593
|
+
if (httpAttempts++ >= MAX_CHECK_HTTP_ATTEMPTS) {
|
|
594
|
+
return null;
|
|
595
|
+
}
|
|
596
|
+
tried.add(base);
|
|
597
|
+
String response = httpRequest(
|
|
598
|
+
base + "/checkUpdate/" + appKey, body, deadlineNanos);
|
|
599
|
+
if (isValidCheckResponse(response)) {
|
|
600
|
+
return response;
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
// One successfully fetched remote list is enough.
|
|
604
|
+
break;
|
|
605
|
+
}
|
|
606
|
+
return null;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
private static long capToRescueBudget(long phaseDeadlineNanos, long rescueDeadlineNanos) {
|
|
610
|
+
if (rescueDeadlineNanos <= 0) {
|
|
611
|
+
return phaseDeadlineNanos;
|
|
612
|
+
}
|
|
613
|
+
return Math.min(phaseDeadlineNanos, rescueDeadlineNanos);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
private static boolean performAttempts(
|
|
617
|
+
UpdateContext context, JSONArray attempts, String hash, String originHash,
|
|
618
|
+
long rescueDeadlineNanos
|
|
619
|
+
) {
|
|
620
|
+
if (attempts == null) {
|
|
621
|
+
return false;
|
|
622
|
+
}
|
|
623
|
+
final long incrementalDeadlineNanos = capToRescueBudget(
|
|
624
|
+
System.nanoTime() + TimeUnit.SECONDS.toNanos(DOWNLOAD_PHASE_TIMEOUT_SECONDS),
|
|
625
|
+
rescueDeadlineNanos);
|
|
626
|
+
long fullDeadlineNanos = 0;
|
|
627
|
+
for (int i = 0; i < attempts.length(); i++) {
|
|
628
|
+
JSONObject attempt = attempts.optJSONObject(i);
|
|
629
|
+
if (attempt == null) {
|
|
630
|
+
continue;
|
|
631
|
+
}
|
|
632
|
+
String type = attempt.optString("type");
|
|
633
|
+
if ("diff".equals(type) && (originHash == null || originHash.isEmpty())) {
|
|
634
|
+
// diff patches from the running version; none is running.
|
|
635
|
+
continue;
|
|
636
|
+
}
|
|
637
|
+
final boolean isFullAttempt = !"diff".equals(type) && !"pdiff".equals(type);
|
|
638
|
+
if (isFullAttempt && fullDeadlineNanos == 0) {
|
|
639
|
+
// Incremental failures must not consume the last-resort full
|
|
640
|
+
// download's budget. Each phase gets one bounded 10min window.
|
|
641
|
+
fullDeadlineNanos = capToRescueBudget(
|
|
642
|
+
System.nanoTime()
|
|
643
|
+
+ TimeUnit.SECONDS.toNanos(DOWNLOAD_PHASE_TIMEOUT_SECONDS),
|
|
644
|
+
rescueDeadlineNanos);
|
|
645
|
+
}
|
|
646
|
+
final long deadlineNanos = isFullAttempt
|
|
647
|
+
? fullDeadlineNanos : incrementalDeadlineNanos;
|
|
648
|
+
JSONArray urls = attempt.optJSONArray("urls");
|
|
649
|
+
if (urls == null) {
|
|
650
|
+
continue;
|
|
651
|
+
}
|
|
652
|
+
for (int j = 0; j < urls.length(); j++) {
|
|
653
|
+
String url = urls.optString(j, "");
|
|
654
|
+
if (url.isEmpty()) {
|
|
655
|
+
continue;
|
|
656
|
+
}
|
|
657
|
+
// Check before enqueueing: once the phase budget is gone we
|
|
658
|
+
// must not launch an orphan download that outlives the round.
|
|
659
|
+
long remainingNanos = deadlineNanos - System.nanoTime();
|
|
660
|
+
if (remainingNanos <= 0) {
|
|
661
|
+
if (isFullAttempt) {
|
|
662
|
+
return false;
|
|
663
|
+
}
|
|
664
|
+
break;
|
|
665
|
+
}
|
|
666
|
+
final CountDownLatch latch = new CountDownLatch(1);
|
|
667
|
+
final AtomicBoolean succeeded = new AtomicBoolean(false);
|
|
668
|
+
final String attemptType = type;
|
|
669
|
+
UpdateContext.DownloadFileListener listener =
|
|
670
|
+
new UpdateContext.DownloadFileListener() {
|
|
671
|
+
@Override
|
|
672
|
+
public void onDownloadCompleted(DownloadTaskParams params) {
|
|
673
|
+
succeeded.set(true);
|
|
674
|
+
latch.countDown();
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
@Override
|
|
678
|
+
public void onDownloadFailed(Throwable error) {
|
|
679
|
+
Log.i(UpdateContext.TAG, "native check: " + attemptType
|
|
680
|
+
+ " attempt failed: " + error);
|
|
681
|
+
latch.countDown();
|
|
682
|
+
}
|
|
683
|
+
};
|
|
684
|
+
DownloadTaskParams task;
|
|
685
|
+
if ("diff".equals(type)) {
|
|
686
|
+
task = context.downloadPatchFromPpk(
|
|
687
|
+
url, hash, originHash, listener, deadlineNanos);
|
|
688
|
+
} else if ("pdiff".equals(type)) {
|
|
689
|
+
task = context.downloadPatchFromApk(
|
|
690
|
+
url, hash, listener, deadlineNanos);
|
|
691
|
+
} else {
|
|
692
|
+
task = context.downloadFullUpdate(
|
|
693
|
+
url, hash, listener, deadlineNanos);
|
|
694
|
+
}
|
|
695
|
+
try {
|
|
696
|
+
if (!latch.await(remainingNanos, TimeUnit.NANOSECONDS)) {
|
|
697
|
+
Log.w(UpdateContext.TAG,
|
|
698
|
+
"native check: download phase timed out during " + type);
|
|
699
|
+
// The task shares one download thread with the next
|
|
700
|
+
// attempt: cancel its transfer (or keep it from
|
|
701
|
+
// starting) instead of queueing behind it
|
|
702
|
+
// (CODE_AUDIT 2.12).
|
|
703
|
+
if (task != null) {
|
|
704
|
+
task.cancel();
|
|
705
|
+
}
|
|
706
|
+
if (isFullAttempt) {
|
|
707
|
+
return false;
|
|
708
|
+
}
|
|
709
|
+
break;
|
|
710
|
+
}
|
|
711
|
+
} catch (InterruptedException e) {
|
|
712
|
+
Thread.currentThread().interrupt();
|
|
713
|
+
if (task != null) {
|
|
714
|
+
task.cancel();
|
|
715
|
+
}
|
|
716
|
+
return false;
|
|
717
|
+
}
|
|
718
|
+
if (succeeded.get()) {
|
|
719
|
+
return true;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
return false;
|
|
724
|
+
}
|
|
725
|
+
}
|