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

Compare commits

..

1 Commits

Author SHA1 Message Date
sunnylqm
1b2eb2361d v6.0.1 2021-05-10 14:36:14 +08:00
8 changed files with 18 additions and 57 deletions

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,10 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
import com.facebook.react.ReactInstanceManager;
import java.util.HashMap;
@@ -16,6 +13,7 @@ import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.io.File;
import java.net.URL;
/**
* Created by tdzl2003 on 3/31/16.
@@ -109,14 +107,7 @@ public class UpdateContext {
params.url = url;
params.hash = hash;
params.listener = listener;
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.targetFile = new File(rootDir, fileName);
// params.unzipDirectory = new File(rootDir, hash);
new DownloadTask(context).executeOnExecutor(this.executor, params);
}

View File

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

View File

@@ -3,12 +3,7 @@ import {
getCheckUrl,
setCustomEndpoints,
} from './endpoint';
import {
NativeEventEmitter,
NativeModules,
Platform,
PermissionsAndroid,
} from 'react-native';
import { NativeEventEmitter, NativeModules, Platform } from 'react-native';
export { setCustomEndpoints };
const {
version: v,
@@ -138,7 +133,7 @@ function checkOperation(op) {
if (action.type === 'block') {
blockUpdate = {
reason: action.reason,
until: Math.round((Date.now() + action.duration) / 1000),
until: (Date.now() + action.duration) / 1000,
};
Pushy.setBlockUpdate(blockUpdate);
}
@@ -166,20 +161,11 @@ export async function downloadUpdate(options, eventListeners) {
}
if (options.diffUrl) {
logger('downloading diff');
try {
await Pushy.downloadPatchFromPpk({
updateUrl: options.diffUrl,
hash: options.hash,
originHash: currentVersion,
});
} catch (e) {
logger(e.message);
logger('diff error, try pdiff');
await Pushy.downloadPatchFromPackage({
updateUrl: options.pdiffUrl,
hash: options.hash,
});
}
await Pushy.downloadPatchFromPpk({
updateUrl: options.diffUrl,
hash: options.hash,
originHash: currentVersion,
});
} else if (options.pdiffUrl) {
logger('downloading pdiff');
await Pushy.downloadPatchFromPackage({
@@ -188,7 +174,6 @@ export async function downloadUpdate(options, eventListeners) {
});
}
progressHandler && progressHandler.remove();
await new Promise((resolve) => setTimeout(resolve, 100));
return options.hash;
}
@@ -212,18 +197,6 @@ export function markSuccess() {
export async function downloadAndInstallApk({ url, onDownloadProgress }) {
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 progressHandler;
if (onDownloadProgress) {

View File

@@ -1,6 +1,6 @@
{
"name": "react-native-update",
"version": "6.0.5",
"version": "6.0.1",
"description": "react-native hot update",
"main": "lib/index.js",
"scripts": {