Skip to content

Commit 719fcc1

Browse files
authoredMar 27, 2024
Merge pull request #10 from devsapp/format-readme
format readme
2 parents b86ca0c + e6b42a3 commit 719fcc1

File tree

3 files changed

+68
-46
lines changed

3 files changed

+68
-46
lines changed
 

‎.github/workflows/publish_app.yaml

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: publish package to registry
2+
3+
on:
4+
release:
5+
types: [created]
6+
7+
jobs:
8+
deploy:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v2
12+
- uses: actions/setup-node@v2
13+
with:
14+
node-version: 16
15+
registry-url: https://registry.npmjs.org/
16+
- name: Install dependencies
17+
run: |
18+
sudo apt-get update
19+
sudo apt-get install -y git make jq curl wget
20+
- name: install s
21+
run: |
22+
npm i @serverless-devs/s@v3 -g
23+
- name: s registry login
24+
run: |
25+
s registry login --token ${{ secrets.alibaba_registry_v3_publish_token }}
26+
- name: release prod
27+
run: |
28+
s registry publish

‎publish.yaml

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Edition: 3.0.0
22
Type: Project
33
Name: start-repack-apk-v3
4-
Version: 0.0.1
4+
Version: 0.0.2
55
Provider:
66
- 阿里云
77
Description: 基于 CDN + Custom 运行时实现 apk 实时打渠道包
@@ -20,13 +20,10 @@ Service:
2020
- AliyunFCFullAccess
2121
硬盘挂载:
2222
Authorities:
23-
- AliyunNASFullAccess
23+
- AliyunFCServerlessDevsRolePolicy
2424
专有网络:
2525
Authorities:
26-
- AliyunVPCFullAccess
27-
其它:
28-
Authorities:
29-
- AliyunECSFullAccess
26+
- AliyunFCServerlessDevsRolePolicy
3027

3128
Parameters:
3229
type: object

‎src/README.md

+37-40
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
> 注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、函数名等等),所以**不推荐**直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,**强烈推荐**通过 `s init --project ${模版名称}` 的方法或应用中心进行初始化,详情可参考[部署 & 体验](#部署--体验)
2+
> 注:当前项目为 Serverless Devs 应用,由于应用中会存在需要初始化才可运行的变量(例如应用部署地区、函数名等等),所以**不推荐**直接 Clone 本仓库到本地进行部署或直接复制 s.yaml 使用,**强烈推荐**通过 `s init ${模版名称}` 的方法或应用中心进行初始化,详情可参考[部署 & 体验](#部署--体验)
33
44
# start-repack-apk-v3 帮助文档
55
<p align="center" class="flex justify-center">
@@ -34,34 +34,20 @@
3434

3535
## 前期准备
3636

37-
使用该项目,您需要有开通以下服务
37+
使用该项目,您需要有开通以下服务并拥有对应权限
3838

3939
<service>
4040

4141

4242

43-
| 服务 | 备注 |
44-
| --- | --- |
45-
| 函数计算 FC | 实时 apk 渠道分包函数需要部署到函数计算 |
46-
| 文件存储 NAS | 需要有 NAS 文件系统为函数执行环境提供持久化 |
47-
| 专有网络 VPC | NAS 文件系统挂载点依赖 VPC |
43+
| 服务/业务 | 权限 | 相关文档 |
44+
| --- | --- | --- |
45+
| 函数计算 | AliyunFCFullAccess | [帮助文档](https://help.aliyun.com/product/2508973.html) [计费文档](https://help.aliyun.com/document_detail/2512928.html) |
46+
| 硬盘挂载 | AliyunFCServerlessDevsRolePolicy | [帮助文档](https://help.aliyun.com/zh/nas) [计费文档](https://help.aliyun.com/zh/nas/product-overview/billing) |
47+
| 专有网络 | AliyunFCServerlessDevsRolePolicy | [帮助文档](https://help.aliyun.com/zh/vpc) [计费文档](https://help.aliyun.com/zh/vpc/product-overview/billing) |
4848

4949
</service>
5050

51-
推荐您拥有以下的产品权限 / 策略:
52-
<auth>
53-
54-
55-
56-
| 服务/业务 | 权限 | 备注 |
57-
| --- | --- | --- |
58-
| 函数计算 | AliyunFCFullAccess | 实时 apk 渠道分包函数需要部署到函数计算 |
59-
| 硬盘挂载 | AliyunNASFullAccess | 需要有 NAS 文件系统为函数执行环境提供持久化 |
60-
| 专有网络 | AliyunVPCFullAccess | NAS 文件系统挂载点依赖 VPC |
61-
| 其它 | AliyunECSFullAccess | 函数计算访问 VPC 还需要一个安全组 |
62-
63-
</auth>
64-
6551
<remark>
6652

6753

@@ -86,56 +72,64 @@
8672

8773
- 通过 [Serverless Devs Cli](https://www.serverless-devs.com/serverless-devs/install) 进行部署:
8874
- [安装 Serverless Devs Cli 开发者工具](https://www.serverless-devs.com/serverless-devs/install) ,并进行[授权信息配置](https://docs.serverless-devs.com/fc/config)
89-
- 初始化项目:`s init --project start-repack-apk-v3 -d start-repack-apk-v3`
75+
- 初始化项目:`s init start-repack-apk-v3 -d start-repack-apk-v3`
9076
- 进入项目,并进行项目部署:`cd start-repack-apk-v3 && s deploy -y`
9177

9278
</deploy>
9379

94-
## 应用详情
80+
## 案例介绍
9581

9682
<appdetail id="flushContent">
9783

98-
## Serverless 实现实时 apk 渠道分包
84+
基于本案例, 您可以快捷部署生成一个弹性高可用的 “Serverless 实现实时 apk 渠道分包“ 服务。
9985

100-
游戏分发平台的游戏 APK 包需要根据实时请求中的的参数获取指定的渠道号,并将渠道号写入 APK 文件固定位置, 如果每天有大量且不同渠道的下载请求, 能**实时**让用户**断点下载**指定渠道的 apk 游戏包
10186

102-
应用原理图如下:
87+
随着移动游戏市场的多元化,游戏开发商和发行商需针对不同渠道分发定制化的游戏版本,针对此类需求,该方案适用于大规模、多渠道的游戏分发场景,特别是在面临频繁且多变的下载请求时, 用户能够通过系统实时地获取并下载包含定制渠道号的游戏 APK 包,同时享受断点续传的下载体验,确保即使在连接不稳定的情况下也能顺利完成游戏的获取,该方案已被多家游戏公司采纳,。
10388

10489
![](https://img.alicdn.com/imgextra/i2/O1CN019seP901UxWBt9D8h7_!!6000000002584-2-tps-2120-668.png)
10590

106-
## CDN 配置
10791

108-
本应用部署后端函数,部署成功后, 您会获取一个 访问域名的 url, 比如为 `https://get-apk-apk-repack-evbilghzjb.cn-hangzhou.fcapp.run`
92+
如上图所示,游戏 APK 包需要根据实时请求中的的参数获取指定的渠道号,并将渠道号写入 APK 文件固定位置, 如果每天有大量且不同渠道的下载请求, 能**实时**让用户**断点下载**指定渠道的 apk 游戏包。
93+
94+
</appdetail>
95+
96+
## 使用流程
97+
98+
<usedetail id="flushContent">
99+
100+
### CDN 配置
101+
102+
本应用部署成功后, 您会获取一个 访问域名的 url, 比如为 `https://get-apk-apk-repack-evbilghzjb.cn-hangzhou.fcapp.run`
109103

110104
之后登录 [CDN 控制台](https://cdn.console.aliyun.com/) 完成配置:
111105

112-
### 添加域名
106+
#### 1. 添加域名
113107

114108
比如您有一个名为 `functioncompute.com` 的域名, 如下图所示, 我添加了 `apk-cdn.functioncompute.com`, 源站的域名为前面应用部署的访问域名 url(_注意是 host,不用填写前面的 https://_), 比如本示例为 `get-apk-apk-repack-evbilghzjb.cn-hangzhou.fcapp.run`
115109

116110
> 其中前缀 apk-cdn 可以随便, 由您这边自己想最后暴露出去的 url 决定
117111
118112
![](https://img.alicdn.com/imgextra/i2/O1CN01KX6FhL1sjp9I1US8M_!!6000000005803-2-tps-1372-840.png)
119113

120-
### 域名管理
114+
#### 2. 域名管理
121115

122-
#### 1. 根据控制台引导, 完成域名的 CNAME 解析
116+
##### 2.1. 根据控制台引导, 完成域名的 CNAME 解析
123117

124118
![](https://img.alicdn.com/imgextra/i4/O1CN01tmlyC222ln0TTrFt1_!!6000000007161-2-tps-956-1372.png)
125119

126120
![](https://img.alicdn.com/imgextra/i1/O1CN01htbiOc1DZNsDqDC9C_!!6000000000230-2-tps-2348-670.png)
127121

128122
![](https://img.alicdn.com/imgextra/i4/O1CN01vKUcG21RGWBEd8eBT_!!6000000002084-2-tps-2586-244.png)
129123

130-
#### 2. 完成管理配置, 主要完成回源配置的域名和开启 Range 回源强制
124+
##### 2.2. 完成管理配置, 主要完成回源配置的域名和开启 Range 回源强制
131125

132126
![](https://img.alicdn.com/imgextra/i4/O1CN01d9cRsx23rZckwYqmF_!!6000000007309-2-tps-2646-716.png)
133127

134128
> 域名应用部署成功后返回的访问域名 url 的 host, 比如本示例为 `get-apk-apk-repack-evbilghzjb.cn-hangzhou.fcapp.run`
135129
136130
![](https://img.alicdn.com/imgextra/i3/O1CN01W8rPnG1R1rVDcK7TN_!!6000000002052-2-tps-2612-854.png)
137131

138-
#### 使用浏览器断点下载指定渠道 apk 包
132+
#### 3. 使用浏览器断点下载指定渠道 apk 包
139133

140134
比如:
141135

@@ -149,12 +143,13 @@
149143
- `src=fc-imm-demo/test-apk/qq.apk` 表示处理的母包, 其中 fc-imm-demo 为 bucket(和函数在同一个 region), test-apk/qq.apk 为 object
150144
- `cid=xiaomi` 表示渠道为 xiaomi, 这个可以自定义
151145

152-
**Tips**
146+
### Tips
153147

154148
- 用户在自己程序中获取渠道信息, 只需要读取 apk 包中 `assets/dap.properties` 文件中的内容即可
155149

156150
- 换用自己的证书, 只需要换掉 target/cert 下面的文件即可:
157151
> jarsigner 将 .keystore 文件作为 RSA 密钥的来源,要将其转换为 golang 可识别的 .pem,我们需要以下几行:
152+
158153
```bash
159154
# key store
160155
$ keytool -genkey -keystore test.keystore -alias test -keyalg RSA -validity 10000
@@ -170,7 +165,9 @@
170165
$ openssl pkcs12 -in test.p12 -nokeys -out test-cert.pem
171166
```
172167

173-
## 本地调试
168+
### 二次开发
169+
170+
#### 本地调试
174171

175172
1. 将测试证书放置在如下位置
176173

@@ -189,7 +186,7 @@ $ RUN_LOCAL=true OSS_ENDPOINT=http://oss-cn-qingdao.aliyuncs.com SOURCE_OBJECT=t
189186

190187
> 注意将相关 ENV 设置您自己的值即可
191188
192-
## 打包原理
189+
#### 打包原理
193190

194191
对于一个原始的 apk 文件,将一个新文件添加到存档中,然后对 apk 重新签名获取新的 apk 文件。等价于以下命令相同的效果:
195192

@@ -217,12 +214,12 @@ $ jarsigner -keystore test.keystore -signedjar new.apk new-unsigned.apk 'test'
217214

218215
![](https://img.alicdn.com/imgextra/i4/O1CN01ARFir41xyXwDIpAng_!!6000000006512-2-tps-711-463.png)
219216

220-
</appdetail>
217+
</usedetail>
221218

222-
## 使用文档
219+
## 注意事项
223220

224-
<usedetail id="flushContent">
225-
</usedetail>
221+
<matters id="flushContent">
222+
</matters>
226223

227224

228225
<devgroup>

0 commit comments

Comments
 (0)
Please sign in to comment.