1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-09-18 00:16:10 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

Compare commits

..

28 Commits

Author SHA1 Message Date
sunnylqm
3bc63acad4 v6.3.0 2021-10-04 00:42:21 +08:00
sunnylqm
898ed85b8c Use nanoid 2021-10-04 00:41:34 +08:00
sunnylqm
3a526d1b15 Update license 2021-10-04 00:41:04 +08:00
sunnylqm
05563c3393 v6.2.1 2021-08-22 11:39:32 +08:00
sunnylqm
b193b4b1df Check hash more strict 2021-08-22 11:33:54 +08:00
sunnylqm
451e298ba5 v6.2.0 2021-08-13 20:52:49 +08:00
sunnylqm
1b5c07be9e v6.2.0-beta0 2021-08-13 20:11:09 +08:00
sunnylqm
13cf53974e Use zipfile 2021-08-13 18:30:28 +08:00
sunnylqm
2a1915c50c Revert "Check packageVersion"
This reverts commit ff67829a27.
2021-08-03 13:28:39 +08:00
sunnylqm
3de78a9dbd Fix typo 2021-08-02 11:15:00 +08:00
sunnylqm
ef065e4072 v6.1.1 2021-08-02 11:03:31 +08:00
sunnylqm
ff67829a27 Check packageVersion 2021-08-02 11:03:04 +08:00
sunnylqm
206a04b331 v6.1.0 2021-07-29 01:08:14 +08:00
sunnylqm
d087c167f1 Merge branch 'master' of github.com:reactnativecn/react-native-pushy
# Conflicts:
#	lib/index.js
2021-07-29 00:52:16 +08:00
sunnylqm
f4c62cc3d1 Prevent some repeated actions 2021-07-29 00:50:48 +08:00
sunnylqm
431940a423 Remove delay 2021-07-17 22:52:24 +08:00
sunnylqm
2dc9243bb8 Update example 2021-07-17 22:26:44 +08:00
sunnylqm
dba4a98fd0 v6.0.5 2021-06-24 15:13:35 +08:00
sunnylqm
d4d12e1889 Fix until int conversion 2021-06-24 15:13:03 +08:00
sunnylqm
daf870fd75 v6.0.4 2021-06-19 14:38:51 +08:00
sunnylqm
33641fcbef Try pdiff if diff error 2021-06-19 13:01:07 +08:00
sunnylqm
a02ca4fa71 Update npmignore 2021-06-18 09:20:10 +08:00
sunnylqm
c5a2a10f9d v6.0.3 2021-06-17 17:17:30 +08:00
sunnylqm
da7e9c6498 Add a delay after download 2021-06-17 17:16:51 +08:00
sunnylqm
30425db7b2 Add x86 abi to example 2021-05-18 12:23:50 +08:00
sunnylqm
61077bbc38 Fix install apk under android 7 2021-05-18 12:23:33 +08:00
Sunny Luo
29648ff56f Update README.md 2021-05-10 14:47:43 +08:00
sunnylqm
9080c5f325 v6.0.1 2021-05-10 14:39:18 +08:00
19 changed files with 613 additions and 420 deletions

View File

@@ -36,6 +36,8 @@ project.xcworkspace
.idea .idea
.gradle .gradle
local.properties local.properties
android/build
android/obj
# node.js # node.js
# #
@@ -43,7 +45,6 @@ node_modules/
npm-debug.log npm-debug.log
Example Example
yarn.lock yarn.lock
android/jni
domains.json domains.json
endpoints.json endpoints.json

View File

@@ -141,7 +141,7 @@ android {
reset() reset()
enable true enable true
universalApk false // If true, also generate a universal APK universalApk false // If true, also generate a universal APK
include "arm64-v8a" include "x86", "arm64-v8a"
} }
} }
signingConfigs { signingConfigs {

View File

@@ -16,7 +16,7 @@ target 'testHotUpdate' do
# #
# Note that if you have use_frameworks! enabled, Flipper will not work and # Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line. # you should disable the next line.
use_flipper!({'Flipper' => '0.84.0'}) use_flipper!({'Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1'})
post_install do |installer| post_install do |installer|
react_native_post_install(installer) react_native_post_install(installer)

View File

@@ -2,19 +2,19 @@ PODS:
- boost-for-react-native (1.63.0) - boost-for-react-native (1.63.0)
- CocoaAsyncSocket (7.6.5) - CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- FBLazyVector (0.64.0) - FBLazyVector (0.64.2)
- FBReactNativeSpec (0.64.0): - FBReactNativeSpec (0.64.2):
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.0) - RCTRequired (= 0.64.2)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core (= 0.64.0) - React-Core (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- Flipper (0.84.0): - Flipper (0.75.1):
- Flipper-Folly (~> 2.5) - Flipper-Folly (~> 2.5)
- Flipper-RSocket (~> 1.3) - Flipper-RSocket (~> 1.3)
- Flipper-DoubleConversion (1.1.7) - Flipper-DoubleConversion (1.1.7)
- Flipper-Folly (2.5.1): - Flipper-Folly (2.5.3):
- boost-for-react-native - boost-for-react-native
- Flipper-DoubleConversion - Flipper-DoubleConversion
- Flipper-Glog - Flipper-Glog
@@ -24,47 +24,36 @@ PODS:
- Flipper-PeerTalk (0.0.4) - Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.3.1): - Flipper-RSocket (1.3.1):
- Flipper-Folly (~> 2.5) - Flipper-Folly (~> 2.5)
- FlipperKit (0.84.0): - FlipperKit (0.75.1):
- FlipperKit/Core (= 0.84.0) - FlipperKit/Core (= 0.75.1)
- FlipperKit/Core (0.84.0): - FlipperKit/Core (0.75.1):
- Flipper (~> 0.84.0) - Flipper (~> 0.75.1)
- FlipperKit/CppBridge - FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert - FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines - FlipperKit/FBDefines
- FlipperKit/FKPortForwarding - FlipperKit/FKPortForwarding
- FlipperKit/CppBridge (0.84.0): - FlipperKit/CppBridge (0.75.1):
- Flipper (~> 0.84.0) - Flipper (~> 0.75.1)
- FlipperKit/FBCxxFollyDynamicConvert (0.84.0): - FlipperKit/FBCxxFollyDynamicConvert (0.75.1):
- Flipper-Folly (~> 2.5) - Flipper-Folly (~> 2.5)
- FlipperKit/FBDefines (0.84.0) - FlipperKit/FBDefines (0.75.1)
- FlipperKit/FKPortForwarding (0.84.0): - FlipperKit/FKPortForwarding (0.75.1):
- CocoaAsyncSocket (~> 7.6) - CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4) - Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.84.0) - FlipperKit/FlipperKitHighlightOverlay (0.75.1)
- FlipperKit/FlipperKitLayoutHelpers (0.84.0): - FlipperKit/FlipperKitLayoutPlugin (0.75.1):
- FlipperKit/Core - FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable - FlipperKit/FlipperKitLayoutTextSearchable
- FlipperKit/FlipperKitLayoutIOSDescriptors (0.84.0):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutHelpers
- YogaKit (~> 1.18) - YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutPlugin (0.84.0): - FlipperKit/FlipperKitLayoutTextSearchable (0.75.1)
- FlipperKit/FlipperKitNetworkPlugin (0.75.1):
- FlipperKit/Core - FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay - FlipperKit/FlipperKitReactPlugin (0.75.1):
- FlipperKit/FlipperKitLayoutHelpers
- FlipperKit/FlipperKitLayoutIOSDescriptors
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.84.0)
- FlipperKit/FlipperKitNetworkPlugin (0.84.0):
- FlipperKit/Core - FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.84.0): - FlipperKit/FlipperKitUserDefaultsPlugin (0.75.1):
- FlipperKit/Core - FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.84.0): - FlipperKit/SKIOSNetworkPlugin (0.75.1):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.84.0):
- FlipperKit/Core - FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin - FlipperKit/FlipperKitNetworkPlugin
- glog (0.3.5) - glog (0.3.5)
@@ -79,266 +68,266 @@ PODS:
- boost-for-react-native - boost-for-react-native
- DoubleConversion - DoubleConversion
- glog - glog
- RCTRequired (0.64.0) - RCTRequired (0.64.2)
- RCTTypeSafety (0.64.0): - RCTTypeSafety (0.64.2):
- FBLazyVector (= 0.64.0) - FBLazyVector (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.0) - RCTRequired (= 0.64.2)
- React-Core (= 0.64.0) - React-Core (= 0.64.2)
- React (0.64.0): - React (0.64.2):
- React-Core (= 0.64.0) - React-Core (= 0.64.2)
- React-Core/DevSupport (= 0.64.0) - React-Core/DevSupport (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.0) - React-Core/RCTWebSocket (= 0.64.2)
- React-RCTActionSheet (= 0.64.0) - React-RCTActionSheet (= 0.64.2)
- React-RCTAnimation (= 0.64.0) - React-RCTAnimation (= 0.64.2)
- React-RCTBlob (= 0.64.0) - React-RCTBlob (= 0.64.2)
- React-RCTImage (= 0.64.0) - React-RCTImage (= 0.64.2)
- React-RCTLinking (= 0.64.0) - React-RCTLinking (= 0.64.2)
- React-RCTNetwork (= 0.64.0) - React-RCTNetwork (= 0.64.2)
- React-RCTSettings (= 0.64.0) - React-RCTSettings (= 0.64.2)
- React-RCTText (= 0.64.0) - React-RCTText (= 0.64.2)
- React-RCTVibration (= 0.64.0) - React-RCTVibration (= 0.64.2)
- React-callinvoker (0.64.0) - React-callinvoker (0.64.2)
- React-Core (0.64.0): - React-Core (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.0) - React-Core/Default (= 0.64.2)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/CoreModulesHeaders (0.64.0): - React-Core/CoreModulesHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/Default (0.64.0): - React-Core/Default (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/DevSupport (0.64.0): - React-Core/DevSupport (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.0) - React-Core/Default (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.0) - React-Core/RCTWebSocket (= 0.64.2)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-jsinspector (= 0.64.0) - React-jsinspector (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTActionSheetHeaders (0.64.0): - React-Core/RCTActionSheetHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTAnimationHeaders (0.64.0): - React-Core/RCTAnimationHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTBlobHeaders (0.64.0): - React-Core/RCTBlobHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTImageHeaders (0.64.0): - React-Core/RCTImageHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTLinkingHeaders (0.64.0): - React-Core/RCTLinkingHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTNetworkHeaders (0.64.0): - React-Core/RCTNetworkHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTSettingsHeaders (0.64.0): - React-Core/RCTSettingsHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTTextHeaders (0.64.0): - React-Core/RCTTextHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTVibrationHeaders (0.64.0): - React-Core/RCTVibrationHeaders (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-Core/RCTWebSocket (0.64.0): - React-Core/RCTWebSocket (0.64.2):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.0) - React-Core/Default (= 0.64.2)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.0) - React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- Yoga - Yoga
- React-CoreModules (0.64.0): - React-CoreModules (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core/CoreModulesHeaders (= 0.64.0) - React-Core/CoreModulesHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-RCTImage (= 0.64.0) - React-RCTImage (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-cxxreact (0.64.0): - React-cxxreact (0.64.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.0) - React-callinvoker (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-jsinspector (= 0.64.0) - React-jsinspector (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- React-runtimeexecutor (= 0.64.0) - React-runtimeexecutor (= 0.64.2)
- React-jsi (0.64.0): - React-jsi (0.64.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-jsi/Default (= 0.64.0) - React-jsi/Default (= 0.64.2)
- React-jsi/Default (0.64.0): - React-jsi/Default (0.64.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-jsiexecutor (0.64.0): - React-jsiexecutor (0.64.2):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- React-jsinspector (0.64.0) - React-jsinspector (0.64.2)
- react-native-update (5.11.0-beta2): - react-native-update (6.0.5):
- React - React
- react-native-update/HDiffPatch (= 5.11.0-beta2) - react-native-update/HDiffPatch (= 6.0.5)
- react-native-update/RCTPushy (= 5.11.0-beta2) - react-native-update/RCTPushy (= 6.0.5)
- SSZipArchive - SSZipArchive
- react-native-update/HDiffPatch (5.11.0-beta2): - react-native-update/HDiffPatch (6.0.5):
- React - React
- SSZipArchive - SSZipArchive
- react-native-update/RCTPushy (5.11.0-beta2): - react-native-update/RCTPushy (6.0.5):
- React - React
- SSZipArchive - SSZipArchive
- React-perflogger (0.64.0) - React-perflogger (0.64.2)
- React-RCTActionSheet (0.64.0): - React-RCTActionSheet (0.64.2):
- React-Core/RCTActionSheetHeaders (= 0.64.0) - React-Core/RCTActionSheetHeaders (= 0.64.2)
- React-RCTAnimation (0.64.0): - React-RCTAnimation (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core/RCTAnimationHeaders (= 0.64.0) - React-Core/RCTAnimationHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTBlob (0.64.0): - React-RCTBlob (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/RCTBlobHeaders (= 0.64.0) - React-Core/RCTBlobHeaders (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.0) - React-Core/RCTWebSocket (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-RCTNetwork (= 0.64.0) - React-RCTNetwork (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTImage (0.64.0): - React-RCTImage (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core/RCTImageHeaders (= 0.64.0) - React-Core/RCTImageHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-RCTNetwork (= 0.64.0) - React-RCTNetwork (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTLinking (0.64.0): - React-RCTLinking (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- React-Core/RCTLinkingHeaders (= 0.64.0) - React-Core/RCTLinkingHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTNetwork (0.64.0): - React-RCTNetwork (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core/RCTNetworkHeaders (= 0.64.0) - React-Core/RCTNetworkHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTSettings (0.64.0): - React-RCTSettings (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.0) - RCTTypeSafety (= 0.64.2)
- React-Core/RCTSettingsHeaders (= 0.64.0) - React-Core/RCTSettingsHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTText (0.64.0): - React-RCTText (0.64.2):
- React-Core/RCTTextHeaders (= 0.64.0) - React-Core/RCTTextHeaders (= 0.64.2)
- React-RCTVibration (0.64.0): - React-RCTVibration (0.64.2):
- FBReactNativeSpec (= 0.64.0) - FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/RCTVibrationHeaders (= 0.64.0) - React-Core/RCTVibrationHeaders (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.0) - ReactCommon/turbomodule/core (= 0.64.2)
- React-runtimeexecutor (0.64.0): - React-runtimeexecutor (0.64.2):
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (0.64.0): - ReactCommon/turbomodule/core (0.64.2):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.0) - React-callinvoker (= 0.64.2)
- React-Core (= 0.64.0) - React-Core (= 0.64.2)
- React-cxxreact (= 0.64.0) - React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.0) - React-jsi (= 0.64.2)
- React-perflogger (= 0.64.0) - React-perflogger (= 0.64.2)
- SSZipArchive (2.2.3) - SSZipArchive (2.4.2)
- Yoga (1.14.0) - Yoga (1.14.0)
- YogaKit (1.18.1): - YogaKit (1.18.1):
- Yoga (~> 1.14) - Yoga (~> 1.14)
@@ -347,25 +336,25 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- Flipper (= 0.84.0) - Flipper (= 0.75.1)
- Flipper-DoubleConversion (= 1.1.7) - Flipper-DoubleConversion (= 1.1.7)
- Flipper-Folly (~> 2.5) - Flipper-Folly (= 2.5.3)
- Flipper-Glog (= 0.3.6) - Flipper-Glog (= 0.3.6)
- Flipper-PeerTalk (~> 0.0.4) - Flipper-PeerTalk (~> 0.0.4)
- Flipper-RSocket (~> 1.3) - Flipper-RSocket (= 1.3.1)
- FlipperKit (= 0.84.0) - FlipperKit (= 0.75.1)
- FlipperKit/Core (= 0.84.0) - FlipperKit/Core (= 0.75.1)
- FlipperKit/CppBridge (= 0.84.0) - FlipperKit/CppBridge (= 0.75.1)
- FlipperKit/FBCxxFollyDynamicConvert (= 0.84.0) - FlipperKit/FBCxxFollyDynamicConvert (= 0.75.1)
- FlipperKit/FBDefines (= 0.84.0) - FlipperKit/FBDefines (= 0.75.1)
- FlipperKit/FKPortForwarding (= 0.84.0) - FlipperKit/FKPortForwarding (= 0.75.1)
- FlipperKit/FlipperKitHighlightOverlay (= 0.84.0) - FlipperKit/FlipperKitHighlightOverlay (= 0.75.1)
- FlipperKit/FlipperKitLayoutPlugin (= 0.84.0) - FlipperKit/FlipperKitLayoutPlugin (= 0.75.1)
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.84.0) - FlipperKit/FlipperKitLayoutTextSearchable (= 0.75.1)
- FlipperKit/FlipperKitNetworkPlugin (= 0.84.0) - FlipperKit/FlipperKitNetworkPlugin (= 0.75.1)
- FlipperKit/FlipperKitReactPlugin (= 0.84.0) - FlipperKit/FlipperKitReactPlugin (= 0.75.1)
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.84.0) - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.75.1)
- FlipperKit/SKIOSNetworkPlugin (= 0.84.0) - FlipperKit/SKIOSNetworkPlugin (= 0.75.1)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
@@ -474,47 +463,47 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: cde416483dac037923206447da6e1454df403714 DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5 FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b
FBReactNativeSpec: 82f183aa413052f325b10b585b747af4823e4b18 FBReactNativeSpec: a4e8a870ae782beff5646319965896a3a5979664
Flipper: 1e9b42d953eb33b2367f372ae25e64f6b86f4361 Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Folly: f7a3caafbd74bda4827954fd7a6e000e36355489 Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
FlipperKit: 3970c0e7566160eda3defc580980c55f4ad585e8 FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728
RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa
React: 98eac01574128a790f0bbbafe2d1a8607291ac24 React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69
React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa
React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0
React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8 React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f
React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba
React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1 React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427
React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3
React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301 React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae
react-native-update: a4ff51ac2ffc0e1950690b9a304a5efa5a9869b2 react-native-update: f5af67d7fdbc0295adaabd974c181b8d1458b17a
React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af React-perflogger: 25373e382fed75ce768a443822f07098a15ab737
React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11 React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5
React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa
React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d
React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16 React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d
React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9
React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28 React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647
React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070 React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2
React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2 React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f
React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3
React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0 React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9
ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05 ReactCommon: 149906e01aa51142707a10665185db879898e966
SSZipArchive: 62d4947b08730e4cda640473b0066d209ff033c9 SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2
Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 519089f4194b2734ec99f1355a2d6fa8ed4aefbd PODFILE CHECKSUM: 84e4a563ad749afa88eb98a303cbbd3476bf71a5
COCOAPODS: 1.10.1 COCOAPODS: 1.10.1

View File

@@ -330,6 +330,7 @@
DEAD_CODE_STRIPPING = NO; DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = JD75Q9JJL2; DEVELOPMENT_TEAM = JD75Q9JJL2;
INFOPLIST_FILE = testHotUpdate/Info.plist; INFOPLIST_FILE = testHotUpdate/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",
@@ -354,6 +355,7 @@
CURRENT_PROJECT_VERSION = 1; CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = JD75Q9JJL2; DEVELOPMENT_TEAM = JD75Q9JJL2;
INFOPLIST_FILE = testHotUpdate/Info.plist; INFOPLIST_FILE = testHotUpdate/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
OTHER_LDFLAGS = ( OTHER_LDFLAGS = (
"$(inherited)", "$(inherited)",

View File

@@ -2,37 +2,52 @@
"images" : [ "images" : [
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "29x29", "scale" : "2x",
"scale" : "2x" "size" : "20x20"
}, },
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "29x29", "scale" : "3x",
"scale" : "3x" "size" : "20x20"
}, },
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "40x40", "scale" : "2x",
"scale" : "2x" "size" : "29x29"
}, },
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "40x40", "scale" : "3x",
"scale" : "3x" "size" : "29x29"
}, },
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "60x60", "scale" : "2x",
"scale" : "2x" "size" : "40x40"
}, },
{ {
"idiom" : "iphone", "idiom" : "iphone",
"size" : "60x60", "scale" : "3x",
"scale" : "3x" "size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }

View File

@@ -12,7 +12,7 @@
}, },
"dependencies": { "dependencies": {
"react": "17.0.1", "react": "17.0.1",
"react-native": "0.64.0", "react-native": "0.64.2",
"react-native-update": "link:../.." "react-native-update": "link:../.."
}, },
"devDependencies": { "devDependencies": {

View File

@@ -22,6 +22,7 @@ export default function TestConsole({visible}) {
<Text>调试Pushy方法方法名参数值换行</Text> <Text>调试Pushy方法方法名参数值换行</Text>
<TextInput <TextInput
autoCorrect={false} autoCorrect={false}
autoCapitalize="none"
style={{ style={{
borderWidth: StyleSheet.hairlineWidth * 4, borderWidth: StyleSheet.hairlineWidth * 4,
borderColor: 'black', borderColor: 'black',

View File

@@ -1450,25 +1450,41 @@
"@types/yargs" "^15.0.0" "@types/yargs" "^15.0.0"
chalk "^4.0.0" chalk "^4.0.0"
"@react-native-community/cli-debugger-ui@^5.0.1-alpha.1": "@react-native-community/cli-debugger-ui@^5.0.1":
version "5.0.1-alpha.1" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-5.0.1-alpha.1.tgz#09a856ccd2954cf16eea59b14dd26ae66720e4e6" resolved "https://registry.nlark.com/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-5.0.1.tgz#6b1f3367b8e5211e899983065ea2e72c1901d75f"
integrity sha1-CahWzNKVTPFu6lmxTdJq5mcg5OY= integrity sha1-ax8zZ7jlIR6JmYMGXqLnLBkB118=
dependencies: dependencies:
serve-static "^1.13.1" serve-static "^1.13.1"
"@react-native-community/cli-hermes@^5.0.1-alpha.1": "@react-native-community/cli-hermes@^5.0.1":
version "5.0.1-alpha.1" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-hermes/download/@react-native-community/cli-hermes-5.0.1-alpha.1.tgz#3c3836d6e537baa7615618262f8da1686052667f" resolved "https://registry.nlark.com/@react-native-community/cli-hermes/download/@react-native-community/cli-hermes-5.0.1.tgz#039d064bf2dcd5043beb7dcd6cdf5f5cdd51e7fc"
integrity sha1-PDg21uU3uqdhVhgmL42haGBSZn8= integrity sha1-A50GS/Lc1QQ7633NbN9fXN1R5/w=
dependencies: dependencies:
"@react-native-community/cli-platform-android" "^5.0.1-alpha.1" "@react-native-community/cli-platform-android" "^5.0.1"
"@react-native-community/cli-tools" "^5.0.1-alpha.1" "@react-native-community/cli-tools" "^5.0.1"
chalk "^3.0.0" chalk "^3.0.0"
hermes-profile-transformer "^0.0.6" hermes-profile-transformer "^0.0.6"
ip "^1.1.5" ip "^1.1.5"
"@react-native-community/cli-platform-android@^5.0.1-alpha.0", "@react-native-community/cli-platform-android@^5.0.1-alpha.1": "@react-native-community/cli-platform-android@^5.0.1":
version "5.0.1"
resolved "https://registry.nlark.com/@react-native-community/cli-platform-android/download/@react-native-community/cli-platform-android-5.0.1.tgz#7f761e1818e5a099877ec59a1b739553fd6a6905"
integrity sha1-f3YeGBjloJmHfsWaG3OVU/1qaQU=
dependencies:
"@react-native-community/cli-tools" "^5.0.1"
chalk "^3.0.0"
execa "^1.0.0"
fs-extra "^8.1.0"
glob "^7.1.3"
jetifier "^1.6.2"
lodash "^4.17.15"
logkitty "^0.7.1"
slash "^3.0.0"
xmldoc "^1.1.2"
"@react-native-community/cli-platform-android@^5.0.1-alpha.1":
version "5.0.1-alpha.1" version "5.0.1-alpha.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-platform-android/download/@react-native-community/cli-platform-android-5.0.1-alpha.1.tgz#343ea5b469ac696268ecc1961ee44b91d1367cd1" resolved "https://registry.npm.taobao.org/@react-native-community/cli-platform-android/download/@react-native-community/cli-platform-android-5.0.1-alpha.1.tgz#343ea5b469ac696268ecc1961ee44b91d1367cd1"
integrity sha1-ND6ltGmsaWJo7MGWHuRLkdE2fNE= integrity sha1-ND6ltGmsaWJo7MGWHuRLkdE2fNE=
@@ -1484,12 +1500,12 @@
slash "^3.0.0" slash "^3.0.0"
xmldoc "^1.1.2" xmldoc "^1.1.2"
"@react-native-community/cli-platform-ios@^5.0.1-alpha.0": "@react-native-community/cli-platform-ios@^5.0.1-alpha.1":
version "5.0.1-alpha.2" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-platform-ios/download/@react-native-community/cli-platform-ios-5.0.1-alpha.2.tgz#58ab0641355cbe68a0d1737dde8c7d66eb0c0e39" resolved "https://registry.nlark.com/@react-native-community/cli-platform-ios/download/@react-native-community/cli-platform-ios-5.0.1.tgz#efa9c9b3bba0978d0a26d6442eefeffb5006a196"
integrity sha1-WKsGQTVcvmig0XN93ox9ZusMDjk= integrity sha1-76nJs7ugl40KJtZELu/v+1AGoZY=
dependencies: dependencies:
"@react-native-community/cli-tools" "^5.0.1-alpha.1" "@react-native-community/cli-tools" "^5.0.1"
chalk "^3.0.0" chalk "^3.0.0"
glob "^7.1.3" glob "^7.1.3"
js-yaml "^3.13.1" js-yaml "^3.13.1"
@@ -1497,13 +1513,13 @@
plist "^3.0.1" plist "^3.0.1"
xcode "^2.0.0" xcode "^2.0.0"
"@react-native-community/cli-server-api@^5.0.1-alpha.2": "@react-native-community/cli-server-api@^5.0.1":
version "5.0.1-alpha.2" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-server-api/download/@react-native-community/cli-server-api-5.0.1-alpha.2.tgz#a82557273bad99d188682169892aaa4b283ba149" resolved "https://registry.nlark.com/@react-native-community/cli-server-api/download/@react-native-community/cli-server-api-5.0.1.tgz#3cf92dac766fab766afedf77df3fe4d5f51e4d2b"
integrity sha1-qCVXJzutmdGIaCFpiSqqSyg7oUk= integrity sha1-PPktrHZvq3Zq/t933z/k1fUeTSs=
dependencies: dependencies:
"@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" "@react-native-community/cli-debugger-ui" "^5.0.1"
"@react-native-community/cli-tools" "^5.0.1-alpha.1" "@react-native-community/cli-tools" "^5.0.1"
compression "^1.7.1" compression "^1.7.1"
connect "^3.6.5" connect "^3.6.5"
errorhandler "^1.5.0" errorhandler "^1.5.0"
@@ -1512,6 +1528,18 @@
serve-static "^1.13.1" serve-static "^1.13.1"
ws "^1.1.0" ws "^1.1.0"
"@react-native-community/cli-tools@^5.0.1":
version "5.0.1"
resolved "https://registry.nlark.com/@react-native-community/cli-tools/download/@react-native-community/cli-tools-5.0.1.tgz#9ee564dbe20448becd6bce9fbea1b59aa5797919"
integrity sha1-nuVk2+IESL7Na86fvqG1mqV5eRk=
dependencies:
chalk "^3.0.0"
lodash "^4.17.15"
mime "^2.4.1"
node-fetch "^2.6.0"
open "^6.2.0"
shell-quote "1.6.1"
"@react-native-community/cli-tools@^5.0.1-alpha.1": "@react-native-community/cli-tools@^5.0.1-alpha.1":
version "5.0.1-alpha.1" version "5.0.1-alpha.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-tools/download/@react-native-community/cli-tools-5.0.1-alpha.1.tgz#b8ceed3ee5f1c2c7d860518da3dd919dc5953870" resolved "https://registry.npm.taobao.org/@react-native-community/cli-tools/download/@react-native-community/cli-tools-5.0.1-alpha.1.tgz#b8ceed3ee5f1c2c7d860518da3dd919dc5953870"
@@ -1524,23 +1552,23 @@
open "^6.2.0" open "^6.2.0"
shell-quote "1.6.1" shell-quote "1.6.1"
"@react-native-community/cli-types@^5.0.1-alpha.1": "@react-native-community/cli-types@^5.0.1":
version "5.0.1-alpha.1" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli-types/download/@react-native-community/cli-types-5.0.1-alpha.1.tgz#e8cf69966cf4e0fb5dda9bc708a52980ed1f8896" resolved "https://registry.nlark.com/@react-native-community/cli-types/download/@react-native-community/cli-types-5.0.1.tgz#8c5db4011988b0836d27a5efe230cb34890915dc"
integrity sha1-6M9plmz04Ptd2pvHCKUpgO0fiJY= integrity sha1-jF20ARmIsINtJ6Xv4jDLNIkJFdw=
dependencies: dependencies:
ora "^3.4.0" ora "^3.4.0"
"@react-native-community/cli@^5.0.1-alpha.0": "@react-native-community/cli@^5.0.1-alpha.1":
version "5.0.1-alpha.2" version "5.0.1"
resolved "https://registry.npm.taobao.org/@react-native-community/cli/download/@react-native-community/cli-5.0.1-alpha.2.tgz#7e78378120fd4e264e4b577cbcf5e52b5beaa53b" resolved "https://registry.nlark.com/@react-native-community/cli/download/@react-native-community/cli-5.0.1.tgz#1f7a66d813d5daf102e593f3c550650fa0cc8314"
integrity sha1-fng3gSD9TiZOS1d8vPXlK1vqpTs= integrity sha1-H3pm2BPV2vEC5ZPzxVBlD6DMgxQ=
dependencies: dependencies:
"@react-native-community/cli-debugger-ui" "^5.0.1-alpha.1" "@react-native-community/cli-debugger-ui" "^5.0.1"
"@react-native-community/cli-hermes" "^5.0.1-alpha.1" "@react-native-community/cli-hermes" "^5.0.1"
"@react-native-community/cli-server-api" "^5.0.1-alpha.2" "@react-native-community/cli-server-api" "^5.0.1"
"@react-native-community/cli-tools" "^5.0.1-alpha.1" "@react-native-community/cli-tools" "^5.0.1"
"@react-native-community/cli-types" "^5.0.1-alpha.1" "@react-native-community/cli-types" "^5.0.1"
appdirsjs "^1.2.4" appdirsjs "^1.2.4"
chalk "^3.0.0" chalk "^3.0.0"
command-exists "^1.2.8" command-exists "^1.2.8"
@@ -2970,16 +2998,16 @@ escape-html@~1.0.3:
resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz?cache=0&sync_timestamp=1587627212242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=
escape-string-regexp@^1.0.5: escape-string-regexp@^1.0.5:
version "1.0.5" version "1.0.5"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escape-string-regexp@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz?cache=0&sync_timestamp=1587627212242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=
escodegen@^2.0.0: escodegen@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
@@ -3823,7 +3851,7 @@ interpret@^1.0.0:
resolved "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" resolved "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
integrity sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4= integrity sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=
invariant@2.2.4, invariant@^2.2.4: invariant@^2.2.4:
version "2.2.4" version "2.2.4"
resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY= integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=
@@ -5868,23 +5896,15 @@ react-native-codegen@^0.0.6:
version "0.0.0" version "0.0.0"
uid "" uid ""
react-native-webview@^10.9.2: react-native@0.64.2:
version "10.9.2" version "0.64.2"
resolved "https://registry.npm.taobao.org/react-native-webview/download/react-native-webview-10.9.2.tgz#6dbfcfefb0684a6665e346c0eca8040cbdb5fb75" resolved "https://registry.nlark.com/react-native/download/react-native-0.64.2.tgz#233b6ed84ac4749c8bc2a2d6cf63577a1c437d18"
integrity sha1-bb/P77BoSmZl40bA7KgEDL21+3U= integrity sha1-Iztu2ErEdJyLwqLWz2NXehxDfRg=
dependencies:
escape-string-regexp "2.0.0"
invariant "2.2.4"
react-native@0.64.0:
version "0.64.0"
resolved "https://registry.npm.taobao.org/react-native/download/react-native-0.64.0.tgz#c3bde5b638bf8bcf12bae6e094930d39cb942ab7"
integrity sha1-w73ltji/i88SuubglJMNOcuUKrc=
dependencies: dependencies:
"@jest/create-cache-key-function" "^26.5.0" "@jest/create-cache-key-function" "^26.5.0"
"@react-native-community/cli" "^5.0.1-alpha.0" "@react-native-community/cli" "^5.0.1-alpha.1"
"@react-native-community/cli-platform-android" "^5.0.1-alpha.0" "@react-native-community/cli-platform-android" "^5.0.1-alpha.1"
"@react-native-community/cli-platform-ios" "^5.0.1-alpha.0" "@react-native-community/cli-platform-ios" "^5.0.1-alpha.1"
"@react-native/assets" "1.0.0" "@react-native/assets" "1.0.0"
"@react-native/normalize-color" "1.0.0" "@react-native/normalize-color" "1.0.0"
"@react-native/polyfills" "1.0.0" "@react-native/polyfills" "1.0.0"

View File

@@ -2,7 +2,7 @@ Update Plugin for React Native
Powered by ReactNative.cn Powered by ReactNative.cn
Copyright (c) Hangzhou Erica Network Technology Co., Ltd. Copyright (c) Wuhan Charmlot Network Technology Co., Ltd.
All rights reserved. All rights reserved.

View File

@@ -8,11 +8,12 @@
### 优势 ### 优势
1. 命令行工具&网页双端管理,版本发布过程简单便捷,完全可以集成 CI 1. 基于阿里云高速 CDN 分发,对比其他服务器在国外的热更新服务,分发更稳定,更新成功率极高
2. 基于 bsdiff/hdiff 算法创建的**超小更新包**,通常版本迭代后在 1-10KB 之间,避免数百 KB 的流量消耗。 2. 基于 bsdiff/hdiff 算法创建的**超小更新包**,通常版本迭代后在 1-10KB 之间,避免数百 KB 的流量消耗。
3. 支持崩溃回滚,安全可靠 3. 跨越多个版本进行更新时,只需要下载**一个更新包**,不需要逐版本依次更新
4. meta 信息及开放 API提供更高扩展性 4. 命令行工具&网页双端管理,版本发布过程简单便捷,完全可以集成 CI
5. 跨越多个版本进行更新时,只需要下载**一个更新包**,不需要逐版本依次更新 5. 支持崩溃回滚,安全可靠
6. meta 信息及开放 API提供更高扩展性。
### 本地开发 ### 本地开发

View File

@@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.reactnative.modules.update"> package="cn.reactnative.modules.update">
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application> <application>
<meta-data android:name="pushy_build_time" android:value="@string/pushy_build_time" /> <meta-data android:name="pushy_build_time" android:value="@string/pushy_build_time" />
<provider <provider

View File

@@ -19,15 +19,13 @@ import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator; import java.util.Iterator;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.HashMap; import java.util.HashMap;
import okio.BufferedSink; import okio.BufferedSink;
@@ -138,19 +136,6 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
private static native byte[] hdiffPatch(byte[] origin, byte[] patch); private static native byte[] hdiffPatch(byte[] origin, byte[] patch);
private void unzipToFile(ZipInputStream zis, File fmd) throws IOException {
int count;
FileOutputStream fout = new FileOutputStream(fmd);
while ((count = zis.read(buffer)) != -1)
{
fout.write(buffer, 0, count);
}
fout.close();
zis.closeEntry();
}
private void copyFile(File from, File fmd) throws IOException { private void copyFile(File from, File fmd) throws IOException {
int count; int count;
@@ -167,7 +152,7 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
in.close(); in.close();
} }
private byte[] readBytes(ZipInputStream zis) throws IOException { private byte[] readBytes(InputStream zis) throws IOException {
int count; int count;
ByteArrayOutputStream fout = new ByteArrayOutputStream(); ByteArrayOutputStream fout = new ByteArrayOutputStream();
@@ -177,7 +162,7 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
} }
fout.close(); fout.close();
zis.closeEntry(); zis.close();
return fout.toByteArray(); return fout.toByteArray();
} }
@@ -246,15 +231,14 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
private void doFullPatch(DownloadTaskParams param) throws IOException { private void doFullPatch(DownloadTaskParams param) throws IOException {
downloadFile(param); downloadFile(param);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(param.targetFile)));
ZipEntry ze;
String filename;
removeDirectory(param.unzipDirectory); removeDirectory(param.unzipDirectory);
param.unzipDirectory.mkdirs(); param.unzipDirectory.mkdirs();
while ((ze = zis.getNextEntry()) != null) SafeZipFile zipFile = new SafeZipFile(param.targetFile);
{ Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
String fn = ze.getName(); String fn = ze.getName();
File fmd = new File(param.unzipDirectory, fn); File fmd = new File(param.unzipDirectory, fn);
@@ -267,10 +251,11 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
continue; continue;
} }
unzipToFile(zis, fmd); zipFile.unzipToFile(ze, fmd);
} }
zis.close(); zipFile.close();
if (UpdateContext.DEBUG) { if (UpdateContext.DEBUG) {
Log.d("RNUpdate", "Unzip finished"); Log.d("RNUpdate", "Unzip finished");
@@ -278,9 +263,11 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
} }
private void copyFromResource(HashMap<String, ArrayList<File> > resToCopy) throws IOException { private void copyFromResource(HashMap<String, ArrayList<File> > resToCopy) throws IOException {
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(context.getPackageResourcePath()))); SafeZipFile zipFile = new SafeZipFile(new File(context.getPackageResourcePath()));
ZipEntry ze; Enumeration<? extends ZipEntry> entries = zipFile.entries();
while ((ze = zis.getNextEntry()) != null) { while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
String fn = ze.getName(); String fn = ze.getName();
ArrayList<File> targets = resToCopy.get(fn); ArrayList<File> targets = resToCopy.get(fn);
if (targets != null) { if (targets != null) {
@@ -292,37 +279,35 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
if (lastTarget != null) { if (lastTarget != null) {
copyFile(lastTarget, target); copyFile(lastTarget, target);
} else { } else {
unzipToFile(zis, target); zipFile.unzipToFile(ze, target);
lastTarget = target; lastTarget = target;
} }
} }
} }
} }
zipFile.close();
} }
private void doPatchFromApk(DownloadTaskParams param) throws IOException, JSONException { private void doPatchFromApk(DownloadTaskParams param) throws IOException, JSONException {
downloadFile(param); downloadFile(param);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(param.targetFile))); removeDirectory(param.unzipDirectory);
ZipEntry ze; param.unzipDirectory.mkdirs();
int count; HashMap<String, ArrayList<File>> copyList = new HashMap<String, ArrayList<File>>();
String filename;
boolean foundDiff = false; boolean foundDiff = false;
boolean foundBundlePatch = false; boolean foundBundlePatch = false;
removeDirectory(param.unzipDirectory); SafeZipFile zipFile = new SafeZipFile(param.targetFile);
param.unzipDirectory.mkdirs(); Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
HashMap<String, ArrayList<File>> copyList = new HashMap<String, ArrayList<File>>(); ZipEntry ze = entries.nextElement();
while ((ze = zis.getNextEntry()) != null)
{
String fn = ze.getName(); String fn = ze.getName();
if (fn.equals("__diff.json")) { if (fn.equals("__diff.json")) {
foundDiff = true; foundDiff = true;
// copy files from assets // copy files from assets
byte[] bytes = readBytes(zis); byte[] bytes = readBytes(zipFile.getInputStream(ze));
String json = new String(bytes, "UTF-8"); String json = new String(bytes, "UTF-8");
JSONObject obj = (JSONObject)new JSONTokener(json).nextValue(); JSONObject obj = (JSONObject)new JSONTokener(json).nextValue();
@@ -348,8 +333,8 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
} }
if (fn.equals("index.bundlejs.patch")) { if (fn.equals("index.bundlejs.patch")) {
foundBundlePatch = true; foundBundlePatch = true;
byte[] patched = hdiffPatch(readOriginBundle(), readBytes(zis)); byte[] patched = hdiffPatch(readOriginBundle(), readBytes(zipFile.getInputStream(ze)));
FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs")); FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs"));
fout.write(patched); fout.write(patched);
@@ -367,10 +352,12 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
continue; continue;
} }
unzipToFile(zis, fmd); zipFile.unzipToFile(ze, fmd);
} }
zis.close(); zipFile.close();
if (!foundDiff) { if (!foundDiff) {
throw new Error("diff.json not found"); throw new Error("diff.json not found");
} }
@@ -389,24 +376,25 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
private void doPatchFromPpk(DownloadTaskParams param) throws IOException, JSONException { private void doPatchFromPpk(DownloadTaskParams param) throws IOException, JSONException {
downloadFile(param); downloadFile(param);
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(param.targetFile))); removeDirectory(param.unzipDirectory);
ZipEntry ze; param.unzipDirectory.mkdirs();
int count; int count;
String filename; String filename;
boolean foundDiff = false; boolean foundDiff = false;
boolean foundBundlePatch = false; boolean foundBundlePatch = false;
removeDirectory(param.unzipDirectory);
param.unzipDirectory.mkdirs();
while ((ze = zis.getNextEntry()) != null) SafeZipFile zipFile = new SafeZipFile(param.targetFile);
{ Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry ze = entries.nextElement();
String fn = ze.getName(); String fn = ze.getName();
if (fn.equals("__diff.json")) { if (fn.equals("__diff.json")) {
foundDiff = true; foundDiff = true;
// copy files from assets // copy files from assets
byte[] bytes = readBytes(zis); byte[] bytes = readBytes(zipFile.getInputStream(ze));
String json = new String(bytes, "UTF-8"); String json = new String(bytes, "UTF-8");
JSONObject obj = (JSONObject)new JSONTokener(json).nextValue(); JSONObject obj = (JSONObject)new JSONTokener(json).nextValue();
@@ -426,8 +414,8 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
} }
if (fn.equals("index.bundlejs.patch")) { if (fn.equals("index.bundlejs.patch")) {
foundBundlePatch = true; foundBundlePatch = true;
byte[] patched = hdiffPatch(readFile(new File(param.originDirectory, "index.bundlejs")), readBytes(zis)); byte[] patched = hdiffPatch(readFile(new File(param.originDirectory, "index.bundlejs")), readBytes(zipFile.getInputStream(ze)));
FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs")); FileOutputStream fout = new FileOutputStream(new File(param.unzipDirectory, "index.bundlejs"));
fout.write(patched); fout.write(patched);
fout.close(); fout.close();
@@ -444,10 +432,10 @@ class DownloadTask extends AsyncTask<DownloadTaskParams, long[], Void> {
continue; continue;
} }
unzipToFile(zis, fmd); zipFile.unzipToFile(ze, fmd);
} }
zis.close(); zipFile.close();
if (!foundDiff) { if (!foundDiff) {
throw new Error("diff.json not found"); throw new Error("diff.json not found");

View File

@@ -0,0 +1,82 @@
package cn.reactnative.modules.update;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class SafeZipFile extends ZipFile {
public SafeZipFile(File file) throws IOException {
super(file);
}
@Override
public Enumeration<? extends ZipEntry> entries() {
return new SafeZipEntryIterator(super.entries());
}
private static class SafeZipEntryIterator implements Enumeration<ZipEntry> {
final private Enumeration<? extends ZipEntry> delegate;
private SafeZipEntryIterator(Enumeration<? extends ZipEntry> delegate) {
this.delegate = delegate;
}
@Override
public boolean hasMoreElements() {
return delegate.hasMoreElements();
}
@Override
public ZipEntry nextElement() {
ZipEntry entry = delegate.nextElement();
if (null != entry) {
String name = entry.getName();
/**
* avoid ZipperDown
*/
if (null != name && (name.contains("../") || name.contains("..\\"))) {
throw new SecurityException("illegal entry: " + entry.getName());
}
}
return entry;
}
}
public void unzipToFile(ZipEntry entry, File output) throws IOException {
InputStream inputStream = null;
try {
inputStream = getInputStream(entry);
writeOutInputStream(output, inputStream);
} finally {
if (inputStream != null) {
inputStream.close();
}
}
}
private void writeOutInputStream(File file, InputStream inputStream) throws IOException {
BufferedOutputStream output = null;
try {
output = new BufferedOutputStream(
new FileOutputStream(file));
BufferedInputStream input = new BufferedInputStream(inputStream);
byte b[] = new byte[8192];
int n;
while ((n = input.read(b, 0, 8192)) >= 0) {
output.write(b, 0, n);
}
} finally {
if (output != null) {
output.close();
}
}
}
}

View File

@@ -4,7 +4,10 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.util.Log; import android.util.Log;
import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactInstanceManager;
import java.util.HashMap; import java.util.HashMap;
@@ -13,7 +16,6 @@ import java.util.concurrent.Executor;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.io.File; import java.io.File;
import java.net.URL;
/** /**
* Created by tdzl2003 on 3/31/16. * Created by tdzl2003 on 3/31/16.
@@ -107,7 +109,14 @@ public class UpdateContext {
params.url = url; params.url = url;
params.hash = hash; params.hash = hash;
params.listener = listener; params.listener = listener;
params.targetFile = new File(rootDir, fileName);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && fileName.equals("update.apk")) {
params.targetFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "pushy_update.apk");
} else {
params.targetFile = new File(rootDir, fileName);
}
// params.unzipDirectory = new File(rootDir, hash); // params.unzipDirectory = new File(rootDir, hash);
new DownloadTask(context).executeOnExecutor(this.executor, params); new DownloadTask(context).executeOnExecutor(this.executor, params);
} }
@@ -145,7 +154,7 @@ public class UpdateContext {
String lastVersion = getCurrentVersion(); String lastVersion = getCurrentVersion();
SharedPreferences.Editor editor = sp.edit(); SharedPreferences.Editor editor = sp.edit();
editor.putString("currentVersion", hash); editor.putString("currentVersion", hash);
if (lastVersion != null) { if (lastVersion != null && lastVersion != hash) {
editor.putString("lastVersion", lastVersion); editor.putString("lastVersion", lastVersion);
} }
editor.putBoolean("firstTime", true); editor.putBoolean("firstTime", true);

View File

@@ -125,14 +125,13 @@ public class UpdateModule extends ReactContextBaseJavaModule {
intent.setData(apkUri); intent.setData(apkUri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
} else { } else {
apkUri = Uri.fromFile(toInstall); apkUri = Uri.fromFile(toInstall);
intent = new Intent(Intent.ACTION_VIEW); intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
} }
mContext.startActivity(intent);
} }
@ReactMethod @ReactMethod

View File

@@ -3,7 +3,12 @@ import {
getCheckUrl, getCheckUrl,
setCustomEndpoints, setCustomEndpoints,
} from './endpoint'; } from './endpoint';
import { NativeEventEmitter, NativeModules, Platform } from 'react-native'; import {
NativeEventEmitter,
NativeModules,
Platform,
PermissionsAndroid,
} from 'react-native';
export { setCustomEndpoints }; export { setCustomEndpoints };
const { const {
version: v, version: v,
@@ -16,6 +21,11 @@ if (!Pushy) {
throw new Error('react-native-update模块无法加载请对照安装文档检查配置。'); throw new Error('react-native-update模块无法加载请对照安装文档检查配置。');
} }
// TODO: save and export current version info
// name
// description
// metaInfo
export const downloadRootDir = Pushy.downloadRootDir; export const downloadRootDir = Pushy.downloadRootDir;
export const packageVersion = Pushy.packageVersion; export const packageVersion = Pushy.packageVersion;
export const currentVersion = Pushy.currentVersion; export const currentVersion = Pushy.currentVersion;
@@ -34,7 +44,7 @@ if (Platform.OS === 'android' && !Pushy.isUsingBundleUrl) {
const eventEmitter = new NativeEventEmitter(Pushy); const eventEmitter = new NativeEventEmitter(Pushy);
if (!uuid) { if (!uuid) {
uuid = require('uuid/v4')(); uuid = require('nanoid/non-secure')();
Pushy.setUuid(uuid); Pushy.setUuid(uuid);
} }
@@ -80,8 +90,17 @@ function assertRelease() {
} }
} }
let checkingThrottling = false;
export async function checkUpdate(APPKEY, isRetry) { export async function checkUpdate(APPKEY, isRetry) {
assertRelease(); assertRelease();
if (checkingThrottling) {
logger('repeated checking, ignored');
return;
}
checkingThrottling = true;
setTimeout(() => {
checkingThrottling = false;
}, 3000);
if (blockUpdate && blockUpdate.until > Date.now() / 1000) { if (blockUpdate && blockUpdate.until > Date.now() / 1000) {
throw new Error( throw new Error(
`热更新已暂停,原因:${blockUpdate.reason}。请在"${new Date( `热更新已暂停,原因:${blockUpdate.reason}。请在"${new Date(
@@ -133,18 +152,36 @@ function checkOperation(op) {
if (action.type === 'block') { if (action.type === 'block') {
blockUpdate = { blockUpdate = {
reason: action.reason, reason: action.reason,
until: (Date.now() + action.duration) / 1000, until: Math.round((Date.now() + action.duration) / 1000),
}; };
Pushy.setBlockUpdate(blockUpdate); Pushy.setBlockUpdate(blockUpdate);
} }
}); });
} }
let downloadingThrottling = false;
let downloadedHash;
export async function downloadUpdate(options, eventListeners) { export async function downloadUpdate(options, eventListeners) {
assertRelease(); assertRelease();
if (!options.update) { if (!options.update) {
return; return;
} }
if (downloadedHash === options.hash) {
logger(`duplicated downloaded hash ${downloadedHash}, ignored`);
return;
}
if (readyHash) {
logger(`hash ${readyHash} applied. reboot first`);
return;
}
if (downloadingThrottling) {
logger('repeated downloading, ignored');
return;
}
downloadingThrottling = true;
setTimeout(() => {
downloadingThrottling = false;
}, 3000);
let progressHandler; let progressHandler;
if (eventListeners) { if (eventListeners) {
if (eventListeners.onDownloadProgress) { if (eventListeners.onDownloadProgress) {
@@ -161,11 +198,20 @@ export async function downloadUpdate(options, eventListeners) {
} }
if (options.diffUrl) { if (options.diffUrl) {
logger('downloading diff'); logger('downloading diff');
await Pushy.downloadPatchFromPpk({ try {
updateUrl: options.diffUrl, await Pushy.downloadPatchFromPpk({
hash: options.hash, updateUrl: options.diffUrl,
originHash: currentVersion, hash: options.hash,
}); originHash: currentVersion,
});
} catch (e) {
logger(e.message);
logger('diff error, try pdiff');
await Pushy.downloadPatchFromPackage({
updateUrl: options.pdiffUrl,
hash: options.hash,
});
}
} else if (options.pdiffUrl) { } else if (options.pdiffUrl) {
logger('downloading pdiff'); logger('downloading pdiff');
await Pushy.downloadPatchFromPackage({ await Pushy.downloadPatchFromPackage({
@@ -174,29 +220,67 @@ export async function downloadUpdate(options, eventListeners) {
}); });
} }
progressHandler && progressHandler.remove(); progressHandler && progressHandler.remove();
downloadedHash = options.hash;
return options.hash; return options.hash;
} }
let readyHash;
function assertHash(hash) {
if (!downloadedHash) {
logger(`no downloaded hash`);
return;
}
if (hash !== downloadedHash) {
logger(`use downloaded hash ${downloadedHash} first`);
return;
}
if (readyHash === hash) {
logger(`hash ${readyHash} already applied. reboot first.`);
return;
}
readyHash = hash;
}
export function switchVersion(hash) { export function switchVersion(hash) {
assertRelease(); assertRelease();
logger('switchVersion'); assertHash(hash);
logger('switchVersion: ' + hash);
Pushy.reloadUpdate({ hash }); Pushy.reloadUpdate({ hash });
} }
export function switchVersionLater(hash) { export function switchVersionLater(hash) {
assertRelease(); assertRelease();
logger('switchVersionLater'); assertHash(hash);
logger('switchVersionLater: ' + hash);
Pushy.setNeedUpdate({ hash }); Pushy.setNeedUpdate({ hash });
} }
let marked = false;
export function markSuccess() { export function markSuccess() {
assertRelease(); assertRelease();
if (marked) {
logger('repeated markSuccess, ignored');
return;
}
marked = true;
logger('markSuccess'); logger('markSuccess');
Pushy.markSuccess(); Pushy.markSuccess();
} }
export async function downloadAndInstallApk({ url, onDownloadProgress }) { export async function downloadAndInstallApk({ url, onDownloadProgress }) {
logger('downloadAndInstallApk'); logger('downloadAndInstallApk');
if (Platform.OS === 'android' && Platform.Version <= 23) {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
);
if (granted !== PermissionsAndroid.RESULTS.GRANTED) {
return;
}
} catch (err) {
console.warn(err);
}
}
let hash = Date.now().toString(); let hash = Date.now().toString();
let progressHandler; let progressHandler;
if (onDownloadProgress) { if (onDownloadProgress) {

View File

@@ -1,6 +1,6 @@
{ {
"name": "react-native-update", "name": "react-native-update",
"version": "6.0.0", "version": "6.3.0",
"description": "react-native hot update", "description": "react-native hot update",
"main": "lib/index.js", "main": "lib/index.js",
"scripts": { "scripts": {
@@ -19,7 +19,7 @@
"update" "update"
], ],
"author": "reactnativecn", "author": "reactnativecn",
"license": "BSD-3-Clause", "license": "MIT",
"bugs": { "bugs": {
"url": "https://github.com/reactnativecn/react-native-pushy/issues" "url": "https://github.com/reactnativecn/react-native-pushy/issues"
}, },
@@ -28,6 +28,6 @@
}, },
"homepage": "https://github.com/reactnativecn/react-native-pushy#readme", "homepage": "https://github.com/reactnativecn/react-native-pushy#readme",
"dependencies": { "dependencies": {
"uuid": "3" "nanoid": "^3.1.28"
} }
} }

View File

@@ -2,7 +2,7 @@
# yarn lockfile v1 # yarn lockfile v1
uuid@3: nanoid@^3.1.28:
version "3.4.0" version "3.1.28"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.28.tgz#3c01bac14cb6c5680569014cc65a2f26424c6bd4"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-gSu9VZ2HtmoKYe/lmyPFES5nknFrHa+/DT9muUFWFMi6Jh9E1I7bkvlQ8xxf1Kos9pi9o8lBnIOkatMhKX/YUw==