react-native-ota-hot-update 1.1.2 → 2.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 +1 -2
- package/README.md +20 -8
- package/android/build.gradle +32 -4
- package/android/generated/java/com/otahotupdate/NativeOtaHotUpdateSpec.java +54 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNOtaHotUpdateSpec-generated.cpp +56 -0
- package/android/generated/jni/RNOtaHotUpdateSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/ComponentDescriptors.cpp +22 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/ComponentDescriptors.h +24 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/EventEmitters.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/EventEmitters.h +17 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/Props.cpp +19 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/Props.h +18 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI-generated.cpp +56 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI.h +103 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/ShadowNodes.cpp +17 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/ShadowNodes.h +23 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/States.h +19 -0
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/otahotupdate/OtaHotUpdate.kt +57 -0
- package/android/src/main/java/com/otahotupdate/OtaHotUpdateModule.kt +142 -0
- package/android/src/newarch/OtaHotUpdateSpec.kt +7 -0
- package/android/src/oldarch/OtaHotUpdateSpec.kt +15 -0
- package/ios/OtaHotUpdate.h +13 -0
- package/ios/{RNhotupdate.m → OtaHotUpdate.mm} +50 -33
- package/ios/generated/RNOtaHotUpdateSpec/ComponentDescriptors.cpp +22 -0
- package/ios/generated/RNOtaHotUpdateSpec/ComponentDescriptors.h +24 -0
- package/ios/generated/RNOtaHotUpdateSpec/EventEmitters.cpp +16 -0
- package/ios/generated/RNOtaHotUpdateSpec/EventEmitters.h +17 -0
- package/ios/generated/RNOtaHotUpdateSpec/Props.cpp +19 -0
- package/ios/generated/RNOtaHotUpdateSpec/Props.h +18 -0
- package/ios/generated/RNOtaHotUpdateSpec/RCTComponentViewHelpers.h +18 -0
- package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec-generated.mm +67 -0
- package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec.h +72 -0
- package/ios/generated/RNOtaHotUpdateSpec/ShadowNodes.cpp +17 -0
- package/ios/generated/RNOtaHotUpdateSpec/ShadowNodes.h +23 -0
- package/ios/generated/RNOtaHotUpdateSpec/States.cpp +16 -0
- package/ios/generated/RNOtaHotUpdateSpec/States.h +19 -0
- package/ios/generated/RNOtaHotUpdateSpecJSI-generated.cpp +56 -0
- package/ios/generated/RNOtaHotUpdateSpecJSI.h +103 -0
- package/lib/commonjs/NativeOtaHotUpdate.js +9 -0
- package/lib/commonjs/NativeOtaHotUpdate.js.map +1 -0
- package/lib/commonjs/download.d.js +2 -0
- package/lib/commonjs/download.d.js.map +1 -0
- package/lib/commonjs/index.js +113 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/NativeOtaHotUpdate.js +5 -0
- package/lib/module/NativeOtaHotUpdate.js.map +1 -0
- package/lib/module/download.d.js +2 -0
- package/lib/module/download.d.js.map +1 -0
- package/lib/module/index.js +109 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts +11 -0
- package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +25 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts +11 -0
- package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +25 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/package.json +184 -12
- package/{rn-hotupdate.podspec → react-native-ota-hot-update.podspec} +3 -3
- package/react-native.config.js +10 -6
- package/src/NativeOtaHotUpdate.ts +12 -0
- package/src/download.d.ts +759 -689
- package/src/index.tsx +67 -39
- package/android/src/main/java/com/rnhotupdate/HotUpdateModule.java +0 -161
- package/android/src/main/java/com/rnhotupdate/OtaHotUpdate.java +0 -45
- package/ios/RNhotupdate.h +0 -12
- package/ios/RNhotupdate.xcodeproj/project.pbxproj +0 -281
- package/ios/RNhotupdate.xcworkspace/contents.xcworkspacedata +0 -7
- /package/android/src/main/java/com/{rnhotupdate → otahotupdate}/SharedPrefs.kt +0 -0
package/src/index.tsx
CHANGED
|
@@ -1,52 +1,66 @@
|
|
|
1
1
|
import { NativeModules, Platform } from 'react-native';
|
|
2
|
-
import {DownloadManager} from './download';
|
|
2
|
+
import type { DownloadManager } from './download';
|
|
3
|
+
|
|
3
4
|
const LINKING_ERROR =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
`The package 'react-native-ota-hot-update' doesn't seem to be linked. Make sure: \n\n` +
|
|
6
|
+
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
7
|
+
'- You rebuilt the app after installing the package\n' +
|
|
8
|
+
'- You are not using Expo Go\n';
|
|
9
|
+
|
|
10
|
+
// @ts-expect-error
|
|
11
|
+
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
8
12
|
|
|
9
13
|
export interface UpdateOption {
|
|
10
|
-
headers?: object
|
|
11
|
-
progress?(received: string, total: string): void
|
|
12
|
-
updateSuccess?(): void
|
|
13
|
-
updateFail?(message?: string): void
|
|
14
|
-
restartAfterInstall?: boolean
|
|
15
|
-
extensionBundle?: string
|
|
14
|
+
headers?: object;
|
|
15
|
+
progress?(received: string, total: string): void;
|
|
16
|
+
updateSuccess?(): void;
|
|
17
|
+
updateFail?(message?: string): void;
|
|
18
|
+
restartAfterInstall?: boolean;
|
|
19
|
+
extensionBundle?: string;
|
|
16
20
|
}
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
const OtaHotUpdateModule = isTurboModuleEnabled
|
|
22
|
+
? require('./NativeOtaHotUpdate').default
|
|
23
|
+
: NativeModules.OtaHotUpdate;
|
|
24
|
+
|
|
25
|
+
const RNhotupdate = OtaHotUpdateModule
|
|
26
|
+
? OtaHotUpdateModule
|
|
27
|
+
: new Proxy(
|
|
28
|
+
{},
|
|
29
|
+
{
|
|
30
|
+
get() {
|
|
31
|
+
throw new Error(LINKING_ERROR);
|
|
32
|
+
},
|
|
33
|
+
}
|
|
26
34
|
);
|
|
27
|
-
|
|
35
|
+
|
|
36
|
+
const downloadBundleFile = async (
|
|
37
|
+
downloadManager: DownloadManager,
|
|
38
|
+
uri: string,
|
|
39
|
+
headers?: object,
|
|
40
|
+
callback?: (received: string, total: string) => void
|
|
41
|
+
) => {
|
|
28
42
|
const res = await downloadManager
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
43
|
+
.config({
|
|
44
|
+
fileCache: Platform.OS === 'android',
|
|
45
|
+
})
|
|
46
|
+
.fetch('GET', uri, {
|
|
47
|
+
...headers,
|
|
48
|
+
})
|
|
49
|
+
.progress((received, total) => {
|
|
50
|
+
if (callback) {
|
|
51
|
+
callback(received, total);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
40
54
|
return res.path();
|
|
41
55
|
};
|
|
42
56
|
function setupBundlePath(path: string, extension?: string): Promise<boolean> {
|
|
43
57
|
return RNhotupdate.setupBundlePath(path, extension);
|
|
44
58
|
}
|
|
45
59
|
function deleteBundlePath(): Promise<boolean> {
|
|
46
|
-
return RNhotupdate.deleteBundle();
|
|
60
|
+
return RNhotupdate.deleteBundle(1);
|
|
47
61
|
}
|
|
48
62
|
function getCurrentVersion(): Promise<string> {
|
|
49
|
-
return RNhotupdate.getCurrentVersion();
|
|
63
|
+
return RNhotupdate.getCurrentVersion(0);
|
|
50
64
|
}
|
|
51
65
|
async function getVersionAsNumber() {
|
|
52
66
|
const rawVersion = await getCurrentVersion();
|
|
@@ -59,7 +73,7 @@ async function resetApp() {
|
|
|
59
73
|
RNhotupdate.restart();
|
|
60
74
|
}
|
|
61
75
|
function removeBundle(restartAfterRemoved?: boolean) {
|
|
62
|
-
deleteBundlePath().then(data => {
|
|
76
|
+
deleteBundlePath().then((data) => {
|
|
63
77
|
if (data && restartAfterRemoved) {
|
|
64
78
|
setTimeout(() => {
|
|
65
79
|
resetApp();
|
|
@@ -74,7 +88,12 @@ const installFail = (option?: UpdateOption, e?: any) => {
|
|
|
74
88
|
option?.updateFail?.(JSON.stringify(e));
|
|
75
89
|
console.error('Download bundle fail', JSON.stringify(e));
|
|
76
90
|
};
|
|
77
|
-
async function downloadBundleUri(
|
|
91
|
+
async function downloadBundleUri(
|
|
92
|
+
downloadManager: DownloadManager,
|
|
93
|
+
uri: string,
|
|
94
|
+
version: number,
|
|
95
|
+
option?: UpdateOption
|
|
96
|
+
) {
|
|
78
97
|
if (!uri) {
|
|
79
98
|
installFail(option, 'Please give a valid URL!');
|
|
80
99
|
return;
|
|
@@ -85,13 +104,22 @@ async function downloadBundleUri(downloadManager: DownloadManager, uri: string,
|
|
|
85
104
|
}
|
|
86
105
|
const currentVersion = await getVersionAsNumber();
|
|
87
106
|
if (version <= currentVersion) {
|
|
88
|
-
installFail(
|
|
107
|
+
installFail(
|
|
108
|
+
option,
|
|
109
|
+
'Please give a bigger version than the current version, the current version now has setted by: ' +
|
|
110
|
+
currentVersion
|
|
111
|
+
);
|
|
89
112
|
return;
|
|
90
113
|
}
|
|
91
114
|
try {
|
|
92
|
-
const path = await downloadBundleFile(
|
|
115
|
+
const path = await downloadBundleFile(
|
|
116
|
+
downloadManager,
|
|
117
|
+
uri,
|
|
118
|
+
option?.headers,
|
|
119
|
+
option?.progress
|
|
120
|
+
);
|
|
93
121
|
if (path) {
|
|
94
|
-
setupBundlePath(path, option?.extensionBundle).then(success => {
|
|
122
|
+
setupBundlePath(path, option?.extensionBundle).then((success) => {
|
|
95
123
|
if (success) {
|
|
96
124
|
setCurrentVersion(version);
|
|
97
125
|
option?.updateSuccess?.();
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
package com.rnhotupdate;
|
|
2
|
-
|
|
3
|
-
import android.content.Context;
|
|
4
|
-
import android.content.Intent;
|
|
5
|
-
import android.util.Log;
|
|
6
|
-
|
|
7
|
-
import com.facebook.react.bridge.Promise;
|
|
8
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
|
9
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
10
|
-
import com.facebook.react.bridge.ReactMethod;
|
|
11
|
-
import android.os.Process;
|
|
12
|
-
import java.io.File;
|
|
13
|
-
import java.io.FileInputStream;
|
|
14
|
-
import java.io.FileOutputStream;
|
|
15
|
-
import java.io.InputStream;
|
|
16
|
-
import java.io.OutputStream;
|
|
17
|
-
import java.util.zip.ZipEntry;
|
|
18
|
-
import java.util.zip.ZipInputStream;
|
|
19
|
-
import androidx.annotation.NonNull;
|
|
20
|
-
public class HotUpdateModule extends ReactContextBaseJavaModule {
|
|
21
|
-
public HotUpdateModule(ReactApplicationContext reactContext) {
|
|
22
|
-
super(reactContext);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
private boolean deleteDirectory(File directory) {
|
|
26
|
-
if (directory.isDirectory()) {
|
|
27
|
-
// List all files and directories in the current directory
|
|
28
|
-
File[] files = directory.listFiles();
|
|
29
|
-
if (files != null) {
|
|
30
|
-
// Recursively delete all files and directories
|
|
31
|
-
for (File file : files) {
|
|
32
|
-
if (!deleteDirectory(file)) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// Finally, delete the empty directory or file
|
|
39
|
-
return directory.delete();
|
|
40
|
-
}
|
|
41
|
-
private boolean deleteOldBundleIfneeded() {
|
|
42
|
-
SharedPrefs sharedPrefs = new SharedPrefs(getReactApplicationContext());
|
|
43
|
-
String path = sharedPrefs.getString(Common.INSTANCE.getPATH());
|
|
44
|
-
File file = new File(path);
|
|
45
|
-
if (file.exists() && file.isFile()) {
|
|
46
|
-
boolean isDeleted = deleteDirectory(file.getParentFile());
|
|
47
|
-
sharedPrefs.clear();
|
|
48
|
-
return isDeleted;
|
|
49
|
-
} else {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
private String unzip(File zipFile, String extension) {
|
|
54
|
-
File destDir = zipFile.getParentFile(); // Directory of the zip file
|
|
55
|
-
|
|
56
|
-
String bundleFilePath = null;
|
|
57
|
-
if (!destDir.exists()) {
|
|
58
|
-
destDir.mkdirs();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
try (InputStream is = new FileInputStream(zipFile);
|
|
62
|
-
ZipInputStream zis = new ZipInputStream(is)) {
|
|
63
|
-
|
|
64
|
-
ZipEntry zipEntry;
|
|
65
|
-
while ((zipEntry = zis.getNextEntry()) != null) {
|
|
66
|
-
File newFile = new File(destDir, zipEntry.getName());
|
|
67
|
-
if (zipEntry.isDirectory()) {
|
|
68
|
-
newFile.mkdirs();
|
|
69
|
-
} else {
|
|
70
|
-
// Create directories if they do not exist
|
|
71
|
-
new File(newFile.getParent()).mkdirs();
|
|
72
|
-
// Extract the file
|
|
73
|
-
try (OutputStream os = new FileOutputStream(newFile)) {
|
|
74
|
-
byte[] buffer = new byte[1024];
|
|
75
|
-
int len;
|
|
76
|
-
while ((len = zis.read(buffer)) > 0) {
|
|
77
|
-
os.write(buffer, 0, len);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (newFile.getAbsolutePath().contains(extension)) {
|
|
82
|
-
bundleFilePath = newFile.getAbsolutePath();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
zis.closeEntry();
|
|
86
|
-
} catch (Exception e) {
|
|
87
|
-
return null;
|
|
88
|
-
}
|
|
89
|
-
return bundleFilePath;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
@ReactMethod
|
|
93
|
-
public void setupBundlePath(String path, String extension, Promise promise) {
|
|
94
|
-
if (path != null) {
|
|
95
|
-
deleteOldBundleIfneeded();
|
|
96
|
-
File file = new File(path);
|
|
97
|
-
if (file.exists() && file.isFile()) {
|
|
98
|
-
String fileUnzip = unzip(file, extension != null ? extension : ".bundle");
|
|
99
|
-
Log.d("setupBundlePath: ", fileUnzip);
|
|
100
|
-
if (fileUnzip != null) {
|
|
101
|
-
file.delete();
|
|
102
|
-
SharedPrefs sharedPrefs = new SharedPrefs(getReactApplicationContext());
|
|
103
|
-
sharedPrefs.putString(Common.INSTANCE.getPATH(), fileUnzip);
|
|
104
|
-
promise.resolve(true);
|
|
105
|
-
} else {
|
|
106
|
-
promise.resolve(false);
|
|
107
|
-
}
|
|
108
|
-
} else {
|
|
109
|
-
promise.resolve(false);
|
|
110
|
-
}
|
|
111
|
-
} else {
|
|
112
|
-
promise.resolve(false);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
@ReactMethod
|
|
117
|
-
public void deleteBundle(Promise promise) {
|
|
118
|
-
boolean isDeleted = deleteOldBundleIfneeded();
|
|
119
|
-
SharedPrefs sharedPrefs = new SharedPrefs(getReactApplicationContext());
|
|
120
|
-
sharedPrefs.putString(Common.INSTANCE.getVERSION(), "0");
|
|
121
|
-
promise.resolve(isDeleted);
|
|
122
|
-
}
|
|
123
|
-
@ReactMethod
|
|
124
|
-
public void restart() {
|
|
125
|
-
Context context = getCurrentActivity();
|
|
126
|
-
Intent intent = context.getPackageManager()
|
|
127
|
-
.getLaunchIntentForPackage(context.getPackageName());
|
|
128
|
-
if (intent != null) {
|
|
129
|
-
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
|
|
130
|
-
Intent.FLAG_ACTIVITY_NEW_TASK |
|
|
131
|
-
Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
|
132
|
-
|
|
133
|
-
context.startActivity(intent);
|
|
134
|
-
Process.killProcess(Process.myPid());
|
|
135
|
-
System.exit(0);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
@ReactMethod
|
|
139
|
-
public void getCurrentVersion(Promise promise) {
|
|
140
|
-
SharedPrefs sharedPrefs = new SharedPrefs(getReactApplicationContext());
|
|
141
|
-
String version = sharedPrefs.getString(Common.INSTANCE.getVERSION());
|
|
142
|
-
if (!version.equals("")) {
|
|
143
|
-
promise.resolve(version);
|
|
144
|
-
} else {
|
|
145
|
-
promise.resolve("0");
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
@ReactMethod
|
|
150
|
-
public void setCurrentVersion(String version, Promise promise) {
|
|
151
|
-
SharedPrefs sharedPrefs = new SharedPrefs(getReactApplicationContext());
|
|
152
|
-
sharedPrefs.putString(Common.INSTANCE.getVERSION(), version);
|
|
153
|
-
promise.resolve(true);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
@NonNull
|
|
157
|
-
@Override
|
|
158
|
-
public String getName() {
|
|
159
|
-
return "RNhotupdate";
|
|
160
|
-
}
|
|
161
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
package com.rnhotupdate;
|
|
2
|
-
|
|
3
|
-
import android.content.Context;
|
|
4
|
-
|
|
5
|
-
import com.facebook.react.ReactPackage;
|
|
6
|
-
import com.facebook.react.bridge.NativeModule;
|
|
7
|
-
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
|
-
import com.facebook.react.uimanager.ViewManager;
|
|
9
|
-
|
|
10
|
-
import java.util.ArrayList;
|
|
11
|
-
import java.util.Collections;
|
|
12
|
-
import java.util.List;
|
|
13
|
-
|
|
14
|
-
import androidx.annotation.NonNull;
|
|
15
|
-
|
|
16
|
-
public class OtaHotUpdate implements ReactPackage {
|
|
17
|
-
private static Context mContext;
|
|
18
|
-
public OtaHotUpdate(Context context) {
|
|
19
|
-
mContext = context;
|
|
20
|
-
}
|
|
21
|
-
@NonNull
|
|
22
|
-
@Override
|
|
23
|
-
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactApplicationContext) {
|
|
24
|
-
List<NativeModule> modules = new ArrayList<>();
|
|
25
|
-
modules.add(new HotUpdateModule(reactApplicationContext));
|
|
26
|
-
return modules;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@NonNull
|
|
30
|
-
@Override
|
|
31
|
-
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactApplicationContext) {
|
|
32
|
-
return Collections.emptyList();
|
|
33
|
-
}
|
|
34
|
-
public static String getBundleJS() {
|
|
35
|
-
if (mContext == null) {
|
|
36
|
-
return Common.INSTANCE.getDEFAULT_BUNDLE();
|
|
37
|
-
}
|
|
38
|
-
SharedPrefs sharedPrefs = new SharedPrefs(mContext);
|
|
39
|
-
String pathBundle = sharedPrefs.getString(Common.INSTANCE.getPATH());
|
|
40
|
-
if (pathBundle.equals("")) {
|
|
41
|
-
return Common.INSTANCE.getDEFAULT_BUNDLE();
|
|
42
|
-
}
|
|
43
|
-
return pathBundle;
|
|
44
|
-
}
|
|
45
|
-
}
|
package/ios/RNhotupdate.h
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#import <React/RCTReloadCommand.h>
|
|
2
|
-
#ifdef RCT_NEW_ARCH_ENABLED
|
|
3
|
-
#import "RNRNhotupdateSpec.h"
|
|
4
|
-
|
|
5
|
-
@interface RNhotupdate : NSObject <NativeRNhotupdateSpec>
|
|
6
|
-
#else
|
|
7
|
-
#import <React/RCTBridgeModule.h>
|
|
8
|
-
|
|
9
|
-
@interface RNhotupdate : NSObject <RCTBridgeModule>
|
|
10
|
-
#endif
|
|
11
|
-
+ (NSURL *)getBundle;
|
|
12
|
-
@end
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
// !$*UTF8*$!
|
|
2
|
-
{
|
|
3
|
-
archiveVersion = 1;
|
|
4
|
-
classes = {
|
|
5
|
-
};
|
|
6
|
-
objectVersion = 46;
|
|
7
|
-
objects = {
|
|
8
|
-
|
|
9
|
-
/* Begin PBXCopyFilesBuildPhase section */
|
|
10
|
-
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
11
|
-
isa = PBXCopyFilesBuildPhase;
|
|
12
|
-
buildActionMask = 2147483647;
|
|
13
|
-
dstPath = "include/$(PRODUCT_NAME)";
|
|
14
|
-
dstSubfolderSpec = 16;
|
|
15
|
-
files = (
|
|
16
|
-
);
|
|
17
|
-
runOnlyForDeploymentPostprocessing = 0;
|
|
18
|
-
};
|
|
19
|
-
/* End PBXCopyFilesBuildPhase section */
|
|
20
|
-
|
|
21
|
-
/* Begin PBXFileReference section */
|
|
22
|
-
134814201AA4EA6300B7C361 /* libRNhotupdate.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNhotupdate.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
23
|
-
/* End PBXFileReference section */
|
|
24
|
-
|
|
25
|
-
/* Begin PBXFrameworksBuildPhase section */
|
|
26
|
-
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
27
|
-
isa = PBXFrameworksBuildPhase;
|
|
28
|
-
buildActionMask = 2147483647;
|
|
29
|
-
files = (
|
|
30
|
-
);
|
|
31
|
-
runOnlyForDeploymentPostprocessing = 0;
|
|
32
|
-
};
|
|
33
|
-
/* End PBXFrameworksBuildPhase section */
|
|
34
|
-
|
|
35
|
-
/* Begin PBXGroup section */
|
|
36
|
-
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
37
|
-
isa = PBXGroup;
|
|
38
|
-
children = (
|
|
39
|
-
134814201AA4EA6300B7C361 /* libRNhotupdate.a */,
|
|
40
|
-
);
|
|
41
|
-
name = Products;
|
|
42
|
-
sourceTree = "<group>";
|
|
43
|
-
};
|
|
44
|
-
58B511D21A9E6C8500147676 = {
|
|
45
|
-
isa = PBXGroup;
|
|
46
|
-
children = (
|
|
47
|
-
134814211AA4EA7D00B7C361 /* Products */,
|
|
48
|
-
);
|
|
49
|
-
sourceTree = "<group>";
|
|
50
|
-
};
|
|
51
|
-
/* End PBXGroup section */
|
|
52
|
-
|
|
53
|
-
/* Begin PBXNativeTarget section */
|
|
54
|
-
58B511DA1A9E6C8500147676 /* RNhotupdate */ = {
|
|
55
|
-
isa = PBXNativeTarget;
|
|
56
|
-
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNhotupdate" */;
|
|
57
|
-
buildPhases = (
|
|
58
|
-
58B511D71A9E6C8500147676 /* Sources */,
|
|
59
|
-
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
60
|
-
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
61
|
-
);
|
|
62
|
-
buildRules = (
|
|
63
|
-
);
|
|
64
|
-
dependencies = (
|
|
65
|
-
);
|
|
66
|
-
name = RNhotupdate;
|
|
67
|
-
productName = RCTDataManager;
|
|
68
|
-
productReference = 134814201AA4EA6300B7C361 /* libRNhotupdate.a */;
|
|
69
|
-
productType = "com.apple.product-type.library.static";
|
|
70
|
-
};
|
|
71
|
-
/* End PBXNativeTarget section */
|
|
72
|
-
|
|
73
|
-
/* Begin PBXProject section */
|
|
74
|
-
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
75
|
-
isa = PBXProject;
|
|
76
|
-
attributes = {
|
|
77
|
-
LastUpgradeCheck = 0920;
|
|
78
|
-
ORGANIZATIONNAME = Facebook;
|
|
79
|
-
TargetAttributes = {
|
|
80
|
-
58B511DA1A9E6C8500147676 = {
|
|
81
|
-
CreatedOnToolsVersion = 6.1.1;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNhotupdate" */;
|
|
86
|
-
compatibilityVersion = "Xcode 3.2";
|
|
87
|
-
developmentRegion = en;
|
|
88
|
-
hasScannedForEncodings = 0;
|
|
89
|
-
knownRegions = (
|
|
90
|
-
en,
|
|
91
|
-
Base,
|
|
92
|
-
);
|
|
93
|
-
mainGroup = 58B511D21A9E6C8500147676;
|
|
94
|
-
productRefGroup = 58B511D21A9E6C8500147676;
|
|
95
|
-
projectDirPath = "";
|
|
96
|
-
projectRoot = "";
|
|
97
|
-
targets = (
|
|
98
|
-
58B511DA1A9E6C8500147676 /* RNhotupdate */,
|
|
99
|
-
);
|
|
100
|
-
};
|
|
101
|
-
/* End PBXProject section */
|
|
102
|
-
|
|
103
|
-
/* Begin PBXSourcesBuildPhase section */
|
|
104
|
-
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
105
|
-
isa = PBXSourcesBuildPhase;
|
|
106
|
-
buildActionMask = 2147483647;
|
|
107
|
-
files = (
|
|
108
|
-
);
|
|
109
|
-
runOnlyForDeploymentPostprocessing = 0;
|
|
110
|
-
};
|
|
111
|
-
/* End PBXSourcesBuildPhase section */
|
|
112
|
-
|
|
113
|
-
/* Begin XCBuildConfiguration section */
|
|
114
|
-
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
115
|
-
isa = XCBuildConfiguration;
|
|
116
|
-
buildSettings = {
|
|
117
|
-
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
118
|
-
CLANG_ANALYZER_NONNULL = YES;
|
|
119
|
-
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
120
|
-
CLANG_CXX_LIBRARY = "libc++";
|
|
121
|
-
CLANG_ENABLE_MODULES = YES;
|
|
122
|
-
CLANG_ENABLE_OBJC_ARC = YES;
|
|
123
|
-
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
124
|
-
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
125
|
-
CLANG_WARN_COMMA = YES;
|
|
126
|
-
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
127
|
-
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
128
|
-
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
129
|
-
CLANG_WARN_EMPTY_BODY = YES;
|
|
130
|
-
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
131
|
-
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
132
|
-
CLANG_WARN_INT_CONVERSION = YES;
|
|
133
|
-
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
134
|
-
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
135
|
-
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
136
|
-
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
137
|
-
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
138
|
-
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
139
|
-
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
140
|
-
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
141
|
-
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
142
|
-
COPY_PHASE_STRIP = NO;
|
|
143
|
-
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
144
|
-
ENABLE_TESTABILITY = YES;
|
|
145
|
-
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
146
|
-
GCC_DYNAMIC_NO_PIC = NO;
|
|
147
|
-
GCC_NO_COMMON_BLOCKS = YES;
|
|
148
|
-
GCC_OPTIMIZATION_LEVEL = 0;
|
|
149
|
-
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
150
|
-
"DEBUG=1",
|
|
151
|
-
"$(inherited)",
|
|
152
|
-
);
|
|
153
|
-
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
154
|
-
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
155
|
-
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
156
|
-
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
157
|
-
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
158
|
-
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
159
|
-
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
160
|
-
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
|
161
|
-
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
|
|
162
|
-
LIBRARY_SEARCH_PATHS = (
|
|
163
|
-
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
|
164
|
-
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
|
|
165
|
-
"\"$(inherited)\"",
|
|
166
|
-
);
|
|
167
|
-
MTL_ENABLE_DEBUG_INFO = YES;
|
|
168
|
-
ONLY_ACTIVE_ARCH = YES;
|
|
169
|
-
SDKROOT = iphoneos;
|
|
170
|
-
};
|
|
171
|
-
name = Debug;
|
|
172
|
-
};
|
|
173
|
-
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
174
|
-
isa = XCBuildConfiguration;
|
|
175
|
-
buildSettings = {
|
|
176
|
-
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
177
|
-
CLANG_ANALYZER_NONNULL = YES;
|
|
178
|
-
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
179
|
-
CLANG_CXX_LIBRARY = "libc++";
|
|
180
|
-
CLANG_ENABLE_MODULES = YES;
|
|
181
|
-
CLANG_ENABLE_OBJC_ARC = YES;
|
|
182
|
-
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
183
|
-
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
184
|
-
CLANG_WARN_COMMA = YES;
|
|
185
|
-
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
186
|
-
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
187
|
-
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
188
|
-
CLANG_WARN_EMPTY_BODY = YES;
|
|
189
|
-
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
190
|
-
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
191
|
-
CLANG_WARN_INT_CONVERSION = YES;
|
|
192
|
-
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
193
|
-
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
194
|
-
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
195
|
-
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
196
|
-
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
197
|
-
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
198
|
-
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
199
|
-
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
200
|
-
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
201
|
-
COPY_PHASE_STRIP = YES;
|
|
202
|
-
ENABLE_NS_ASSERTIONS = NO;
|
|
203
|
-
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
204
|
-
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
205
|
-
GCC_NO_COMMON_BLOCKS = YES;
|
|
206
|
-
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
207
|
-
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
208
|
-
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
209
|
-
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
210
|
-
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
211
|
-
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
212
|
-
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
|
213
|
-
LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)";
|
|
214
|
-
LIBRARY_SEARCH_PATHS = (
|
|
215
|
-
"\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
|
|
216
|
-
"\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"",
|
|
217
|
-
"\"$(inherited)\"",
|
|
218
|
-
);
|
|
219
|
-
MTL_ENABLE_DEBUG_INFO = NO;
|
|
220
|
-
SDKROOT = iphoneos;
|
|
221
|
-
VALIDATE_PRODUCT = YES;
|
|
222
|
-
};
|
|
223
|
-
name = Release;
|
|
224
|
-
};
|
|
225
|
-
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
226
|
-
isa = XCBuildConfiguration;
|
|
227
|
-
buildSettings = {
|
|
228
|
-
HEADER_SEARCH_PATHS = (
|
|
229
|
-
"$(inherited)",
|
|
230
|
-
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
231
|
-
"$(SRCROOT)/../../../React/**",
|
|
232
|
-
"$(SRCROOT)/../../react-native/React/**",
|
|
233
|
-
);
|
|
234
|
-
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
235
|
-
OTHER_LDFLAGS = "-ObjC";
|
|
236
|
-
PRODUCT_NAME = RNhotupdate;
|
|
237
|
-
SKIP_INSTALL = YES;
|
|
238
|
-
};
|
|
239
|
-
name = Debug;
|
|
240
|
-
};
|
|
241
|
-
58B511F11A9E6C8500147676 /* Release */ = {
|
|
242
|
-
isa = XCBuildConfiguration;
|
|
243
|
-
buildSettings = {
|
|
244
|
-
HEADER_SEARCH_PATHS = (
|
|
245
|
-
"$(inherited)",
|
|
246
|
-
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
247
|
-
"$(SRCROOT)/../../../React/**",
|
|
248
|
-
"$(SRCROOT)/../../react-native/React/**",
|
|
249
|
-
);
|
|
250
|
-
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
251
|
-
OTHER_LDFLAGS = "-ObjC";
|
|
252
|
-
PRODUCT_NAME = RNhotupdate;
|
|
253
|
-
SKIP_INSTALL = YES;
|
|
254
|
-
};
|
|
255
|
-
name = Release;
|
|
256
|
-
};
|
|
257
|
-
/* End XCBuildConfiguration section */
|
|
258
|
-
|
|
259
|
-
/* Begin XCConfigurationList section */
|
|
260
|
-
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNhotupdate" */ = {
|
|
261
|
-
isa = XCConfigurationList;
|
|
262
|
-
buildConfigurations = (
|
|
263
|
-
58B511ED1A9E6C8500147676 /* Debug */,
|
|
264
|
-
58B511EE1A9E6C8500147676 /* Release */,
|
|
265
|
-
);
|
|
266
|
-
defaultConfigurationIsVisible = 0;
|
|
267
|
-
defaultConfigurationName = Release;
|
|
268
|
-
};
|
|
269
|
-
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNhotupdate" */ = {
|
|
270
|
-
isa = XCConfigurationList;
|
|
271
|
-
buildConfigurations = (
|
|
272
|
-
58B511F01A9E6C8500147676 /* Debug */,
|
|
273
|
-
58B511F11A9E6C8500147676 /* Release */,
|
|
274
|
-
);
|
|
275
|
-
defaultConfigurationIsVisible = 0;
|
|
276
|
-
defaultConfigurationName = Release;
|
|
277
|
-
};
|
|
278
|
-
/* End XCConfigurationList section */
|
|
279
|
-
};
|
|
280
|
-
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
281
|
-
}
|
|
File without changes
|