Skip to content

Commit aafb101

Browse files
author
fang
committed
no message
1 parent e869659 commit aafb101

File tree

4 files changed

+200
-1
lines changed

4 files changed

+200
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[中文版](https://github.com/Waytoon/chimera_flutter_code_push/blob/main/ReadMe_ZH.md)
1+
[中文版](./ReadMe_ZH.md)
22

33
# Chimera Flutter Code Push
44

doc/README-ZH.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
## 升级到Flutter 2.0时代,此SDK为帮助Flutter实现热更新。
2+
3+
视频接入教程:
4+
https://www.bilibili.com/video/BV1HU4y1n73t
5+
6+
### 环境要求:
7+
8+
Dart: >= 2.13.4
9+
10+
Flutter:只要Dart复合要求就行
11+
12+
### 环境变量配置如下:
13+
14+
```shell
15+
export FLUTTER_ROOT=/Volumes/data/flutter_sdk/flutter_sdk
16+
17+
export PUB_HOSTED_URL=https://pub.flutter-io.cn
18+
19+
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
20+
21+
export PATH=${FLUTTER_ROOT}/bin:${PATH}
22+
23+
export PATH=${FLUTTER_ROOT}/bin/cache/dart-sdk/bin:${PATH}
24+
25+
export PUB_CACHE=${FLUTTER_ROOT}/.pub-cache
26+
27+
export PATH=${PUB_CACHE}/bin:${PATH}
28+
29+
```
30+
31+
32+
接入流程跟旧版本一致,不清楚的等待发布视频教程。

doc/README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
## Upgrade to the Flutter 2.0 era, this SDK is to help Flutter achieve hot updates.
2+
3+
### Environmental requirements:
4+
5+
Dart: >= 2.13.4
6+
7+
Flutter:As long as Dart compound requirements
8+
9+
10+
11+
### The environment variable configuration is as follows:
12+
13+
```shell
14+
15+
export FLUTTER_ROOT=/Volumes/data/flutter_sdk/flutter_sdk
16+
17+
export PUB_HOSTED_URL=https://pub.flutter-io.cn
18+
19+
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
20+
21+
export PATH=${FLUTTER_ROOT}/bin:${PATH}
22+
23+
export PATH=${FLUTTER_ROOT}/bin/cache/dart-sdk/bin:${PATH}
24+
25+
export PUB_CACHE=${FLUTTER_ROOT}/.pub-cache
26+
27+
export PATH=${PUB_CACHE}/bin:${PATH}
28+
29+
```
30+
31+
32+
33+
The access process is the same as the old version, it is not clear to wait for the video tutorial to be released or contact us by email.
34+
35+
z888888cn@gmail.com

doc/开门见山(一).md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Chimera Flutter Code Push 开门见山(一)
2+
## 热更新原理
3+
4+
​ 将Dart层代码分为两层,一层JIT执行,另一层AOT执行。当然Flutter默认执行的方式是AOT执行,如果我们想要热更新并且又不会丢失很大的性能,那么 JIT + AOT 混合执行会是我们最好的方案之一。
5+
6+
## 接入流程
7+
8+
### 1. 检查环境变量
9+
10+
```shell
11+
export FLUTTER_ROOT=/Volumes/data/flutter_sdk
12+
13+
export PUB_HOSTED_URL=https://pub.flutter-io.cn
14+
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
15+
export PATH=${FLUTTER_ROOT}/bin:${PATH}
16+
export PATH=${FLUTTER_ROOT}/bin/cache/dart-sdk/bin:${PATH}
17+
export PUB_CACHE=${FLUTTER_ROOT}/.pub-cache
18+
```
19+
20+
需要强调的是`PUB_CACHE`是在SDK目录下,是必须要设置的。
21+
22+
### 2. 检查版本号
23+
24+
```shell
25+
fangnan@iMac-Pro ~ % flutter --version
26+
Flutter 2.2.3 • channel stable • https://github.com/flutter/flutter.git
27+
Framework • revision f4abaa0735 (2 weeks ago) • 2021-07-01 12:46:11 -0700
28+
Engine • revision 241c87ad80
29+
Tools • Dart 2.13.4
30+
```
31+
32+
Dart 版本必须 大于等于 2.13.4
33+
34+
### 3. 运行系统
35+
36+
暂时只支持Mac系统,支持M1芯片。
37+
38+
### 4. 开始接入
39+
40+
详情请看视频链接:
41+
42+
1:创建项目
43+
44+
```shell
45+
flutter create hello
46+
```
47+
48+
2:引入仓库
49+
50+
```shell
51+
flutter_code_push_next:
52+
git:
53+
url: https://github.com/Waytoon/chimera_flutter_code_push.git
54+
path: flutter_code_push_next
55+
```
56+
57+
也可以使用本地的,具体随意。
58+
59+
3: 整理代码
60+
61+
包含main函数的代码视为入口函数,不进行JIT执行,所以需要进行代码拆分。具体代码改为类似如下:
62+
63+
```dart
64+
import 'package:hello/myapp.dart';
65+
import 'package:wtbase/wtbase.dart';
66+
67+
Future main() async {
68+
bool isNative = false;
69+
if (isNative) {
70+
run();
71+
} else {
72+
String downloadUrl = "http://192.168.80.144:8080/hello.bin";
73+
readCode = WTAnalysisReadCode();
74+
await readCode.initDownloadFilePath();
75+
await readCode.downloadPathAndReadFile(downloadUrl);
76+
readCode.executeMethod('package:hello/myapp.dart', 'run');
77+
}
78+
}
79+
```
80+
81+
4: 运行编译器执行
82+
83+
84+
85+
关于国内下载Github慢,大家可以用镜像来解决。
86+
87+
[Github 镜像](https://blog.csdn.net/hajungong007/article/details/109790370?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161465918516780262599127%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161465918516780262599127&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-109790370.first_rank_v2_pc_rank_v29&utm_term=%E5%9B%BD%E5%86%85+GitHub)
88+
89+
90+
91+
HTTP Server 快速搭建
92+
93+
```shell
94+
brew install http-server
95+
http-server -c -1
96+
```
97+
98+
99+
100+
## 已知问题
101+
102+
- 热更新下,IOS模拟器调试会出现断开链接,不过可以发布运行。实在想要调试暂时用Android模拟器。
103+
104+
- 一直停留在,Start downloading the patch package!
105+
106+
说明无法加载补丁包,main文件补丁包地址是否配置正确,主要检测手机或模拟器是否能正确加载,如果不能加载自行判断,如是否开了Wifi、飞行模式、流量上网等等。
107+
108+
109+
## 发布之前需要有以下设置
110+
iOS:
111+
1. `Runner` -> `Build Settings` -> `Architectures` 设置为 arm64、x86_64
112+
2. `Runner` -> `Build Settings` -> `Deployment` -> `Strip Style` 设置为 Non-global Symbols
113+
114+
Android:
115+
```xml
116+
<uses-permission android:name="android.permission.INTERNET">
117+
</uses-permission>
118+
119+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
120+
</uses-permission>
121+
```
122+
123+
124+
125+
## 开发必看
126+
127+
​ 在很多开发者的对接过程中,我逐渐发现有很多各种各样的问题,有是我们的问题,也有Flutter的问题。我想了以下对策,我将收集和整理大量的问题帖,让开发者快速能解决问题。我们团队内部也寻找各种各样的开源App进行接入测试并发布,这样也可以使大家放心。对于已经接入非开源的App不方便透露,因为别人不愿意公开。到目前为止,我们自己接入的开源App大概也有6个App以上了,望大家对我们保持信心。
128+
129+
​ 近期会有很多新功能开放出来,将会以文字+视频的方式呈现给大家。
130+
131+
​ 非常需要更多更多的小伙伴联系我,加入我们帮助我们运营此项目,有兴趣的 +v:457636876
132+

0 commit comments

Comments
 (0)