Serverless实现移动应用包分发服务的过程
这篇文章给大家分享的是Serverless实现移动应用包分发服务的过程。小编觉得挺实用的,因此分享给大家学习。如下资料是关于Serverless实现移动应用包分发服务的步骤。
准备工作:
1.安装 node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bashnvm install 8
2.安装 fun 工具
npm install @alicloud/fun -g
fun 工具的某些子命令可能会用到 docker,所以你需要安装好 docker,具体参考文档:Fun 安装教程。
3.apk 包准备
在这个实验中,我们会使用一个示例的 apk 包,可以从这里下载 qq-v2.apk。
下载 qq-v2.apk ,上传到自己的 oss bucket中
快速开始:
1.通过 fun 模板生成项目骨架
使用 fun init
命令可以快捷的将本模板项目初始化到本地,执行命令 :
$ fun init -n apk https://github.com/coco-super/package-distribution-service-for-serverlessstart cloning...Cloning into '.fun-init-cache-2fc2d680-eeff-11e9-a930-6fd4d1ac6506'...remote: Enumerating objects: 23, done.remote: Counting objects: 100% (23/23), done.remote: Compressing objects: 100% (16/16), done.remote: Total 23 (delta 0), reused 18 (delta 0), pack-reused 0Unpacking objects: 100% (23/23), done.finish clone.? Please input a oss bucket name? sunfeiyuStart rendering template...+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/.funignore+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/pom.xml+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example/App.java+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example/App.class+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/template.ymlfinish rendering template.
其中 -n 表示要作为文件夹生成的项目名称。默认值是 fun-app。更多fun init 命令格式选项说明请参考云栖文章开发函数计算的正确姿势 -- 使用 Fun Init 初始化项目。
执行 fun init
后会提示:输入一个 oss 的 bucket,注意 oss Bucket 是全球唯一的,如已经被占用了,请换一个新的名称或者一个已经创建好的(已经创建好的,请确保 region 一致)。
ps: 输入的内容和 apk 包准备中提到的 oss bucket name 是同一个,本示例为:sunfeiyu
4. 编译
在模版项目的根目录下执行 fun build
命令编译:
$ fun build using template: template.ymlstart building function dependencies without dockerbuilding apk/apkrunning task flow MavenTaskFlowrunning task: MavenCompileTaskrunning task: MavenCopyDependenciesrunning task: CopyMavenArtifactsBuild SuccessBuilt artifacts: .fun/build/artifactsBuilt template: .fun/build/artifacts/template.ymlTips for next step======================* Invoke Event Function: fun local invoke* Invoke Http Function: fun local start* Deploy Resources: fun deploy
开发函数计算的正确姿势 -- 使用 Fun Build 构建函数。
5.服务部署
在模版项目的的根目录下执行 fun deploy
部署到云端。
$ fun deployusing template: .fun/build/artifacts/template.ymlusing region: cn-shanghaiusing accountId: ***********8320using accessKeyId: ***********mTN4using timeout: 60Waiting for service apk to be deployed... make sure role 'aliyunfcgeneratedrole-cn-shanghai-apk' is exist role 'aliyunfcgeneratedrole-cn-shanghai-apk' is already exist attaching policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk attached policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk Waiting for function apk to be deployed... Waiting for packaging function apk code... The function apk has been packaged. A total of 15 files files were compressed and the final size was 3.13 MB function apk deploy successservice apk deploy success
6.执行函数
提供两种方式:
- 登陆云函数计算控制台,手动执行。
- 项目根目录下
fun invoke apk
命令远端调用:
$ fun invoke apkusing template: template.yml========= FC invoke Logs begin =========FC Invoke Start RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be62019-10-14 17:06:35.971 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] cmd: java -jar /code/walle-cli-all.jar put -c aliyun-fc /tmp/input.apk /tmp/output.apk2019-10-14 17:06:36.152 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] Success!FC Invoke End RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6Duration: 666.13 ms, Billed Duration: 700 ms, Memory Size: 1024 MB, Max Memory Used: 254.55 MB========= FC invoke Logs end =========FC Invoke Result:Success
查看结果
登陆 oss 查看已经生成新的 apk 包:
将 oss 中 qq-v2-signed.apk 下载到本地。
查看渠道信息是否写入:
~/Downloads ⍉$ java -jar /Users/ellison/Downloads/walle-cli-all.jar show qq-v2-signed.apk/Users/ellison/Downloads/qq-v2-signed.apk : {channel=aliyun-fc}
渠道信息 {channel=aliyun-fc}
已写入,成功!
关于Serverless实现移动应用包分发服务的过程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。