边缘开发者平台
  • 边缘函数
    • 概述
    • 快速指引
    • 操作指引
      • 函数管理
      • Web调试
      • 触发配置
      • 环境变量
      • Code Replica
    • Runtime APIs
      • addEventListener
      • Cache
      • Cookies
      • Encoding
      • Fetch
      • FetchEvent
      • Headers
      • Request
      • Response
      • Streams
        • ReadableStream
        • ReadableStreamBYOBReader
        • ReadableStreamDefaultReader
        • TransformStream
        • WritableStream
        • WritableStreamDefaultWriter
      • Web Crypto
      • Web standards
      • Images
        • ImageProperties
    • 示例函数
      • 示例概述
      • 获取客户端URL信息
      • 基于客户端地理位置的自定义
      • 获取客户端地理位置信息
      • 批量重定向
      • URL rewrite based on regular expressions
      • 返回 HTML 页面
      • 返回 JSON
      • Fetch 远程资源
      • 请求头鉴权
      • 修改响应头
      • AB 测试
      • 设置 Cookie
      • 基于请求区域重定向
      • Cache API 使用
      • 缓存 POST 请求
      • 流式响应
      • 合并资源流式响应
      • 防篡改校验
      • m3u8 改写与鉴权
      • 图片自适应缩放
      • 图片自适应 WebP
      • 自定义 Referer 限制规则
      • 远程鉴权
      • HMAC 数字签名
      • 自定义下载文件名
      • 获取客户端 IP
      • Complex origin-pull URL rewriting
      • Web Bot Auth
    • 最佳实践
      • Overview
      • Origin retrieval based on user IP/geographic location
        • EdgeOne Implementation of Session Persistence Based on Client IP Addresses
        • EdgeOne Implementation of Origin-Pull Based on Client's Geo Location
      • APK dynamic packaging
        • EdgeOne enables dynamic packaging of Android APKs.
          • Feature Overview
          • Step 1: Preprocess the Android APK Parent Package
          • Step 2: Write the Channel Information into the APK Package with EdgeOne Edge Functions
      • Canary Release and Region-specific Execution
      • 通过边缘函数实现自适应图片格式转换
      • Two Ways to Implement CDN Origin-pull Via Edge Function: Fetch and Passthrough
  • KV Storage
    • Overview
    • Operation Guide
  • Edge reasoning
    • Edge Inference Overview
    • Quick Guide

Step 1: Preprocess the Android APK Parent Package

本文将介绍如何通过对象存储 COS 和云函数 SCF,实现对 Android APK 母包的预处理。

准备工作

1. 已开通 对象存储 COS云函数 SCF,记录该存储桶名称及地域信息。
2. 根据 站点接入 指引添加站点,购买 EdgeOne 套餐。
3. 已在 EdgeOne 控制台 添加加速域名www.example.com,且源站配置为腾讯云 COS。

步骤1:上传 Android APK 母包

在对象存储 COS 中,上传 Android APK 母包。
1. 登录 对象存储 COS 控制台,在左侧菜单栏中,单击存储桶列表。
2. 在存储桶列表页面,单击用于存储 APK 母包存储桶名称
3. 在文件列表,单击创建文件夹用于上传 APK 母包的目录,输入文件夹名称,例如:v2-vasdolly/,单击确定
注意:
请勿直接将根目录作为 APK 母包的上传目录。




步骤2:新建模板函数

在云函数 SCF 通过 EdgeOne APK 动态打包的模板新建函数。
1. 登录 云函数服务控制台,在左侧菜单栏中,单击函数服务。
2. 在函数服务页面,单击新建,选择使用模板创建,在模糊搜索中输入 EdgeOne APK 动态打包并选中,单击下一步



3. 在“函数配置”页面分别配置如下参数
基础配置
函数名称:创建函数时将自动生成一个函数名称,您可以选择自定义修改为一个易识别的函数名称。
地域:请选择 步骤1 中所使用的对象存储桶 COS 的所在地域,例如:广州。
描述:说明此函数的用途。
运行角色:默认勾选启用,配置并使用SCF模板运行角色。如使用已有角色,请确保已有角色已包含 QcloudCOSFullAccess 的预设策略。



函数代码:模板已内置默认函数代码实现 Android APK 处理母包的能力,无需改动。
环境配置:
单击高级配置,选择环境配置,您需要在环境变量中添加以下 key 和对应的 value 值,其余配置保持默认即可:
outputPath(必填):自定义云函数 SCF 处理 APK 母包后输出到 COS 存储桶的目录,如:/v2-vasdolly_output
packVersion(必填): 不同的 APK 版本所使用的签名版本信息,不同签名版本填写的值如下:
APK 签名版本
packVersion 值
v1
v1
v2
请填写 v2-VasDolly、v2-Walle 或 v2-Custom:
v2-VasDolly:将渠道信息保存在 ID 为 0x881155ff(VasDolly 默认)的 ID-Value 对。
v2-Walle:将渠道信息保存在 ID 为 0x71777777(Walle 默认)的 ID-Value 对。
v2-Custom:将渠道信息保存在 ID 为 blockId(由 blockId 环境变量指定)的 ID-Value 对。
blockId(选填): 如果使用 v2-Custom 方式进行预处理,需要指定 blockId。
填写示例:



(可选)文件系统:如果上传到 COS 的 APK 母包大于 200M,需前往 文件存储控制台 开通 CFS 服务,并启用文件系统,用于扩展云函数的本地存储空间:



注意:
由于 SCF 侧的限制,每个云函数在执行过程中,拥有一块 500MB 的临时磁盘空间,处理 APK 文件时,磁盘中同时存在原始 APK 文件和处理后的 APK 文件,因此处理过大的 APK 文件,需要挂在额外的文件存储系统,详情请参见 挂载 CFS 文件系统
触发器管理
在触发器配置中,选择 COS Bucket 为与此云函数 SCF 同地域的存储桶,可输入存储桶名称进行模糊查询,例如:apk-test-1251557890.cos.ap-guangzhou.myqcloud.com。其余配置项保持为默认配置即可。
触发方式:选择 COS 触发。
COS Bucket:请选择该可用区下母包所在的 COS 存储桶。
事件类型:选择全部创建。
前缀过滤:请输入母包上传的目录,如您的母包在v2-vasdolly目录下,即填写 v2-vasdolly/
后缀过滤:请输入 .apk
上述信息填写完成后,即只针对指定指定 COS 存储桶的 v2-vasdolly/目录下且文件后缀为 .apk 的文件上传时才会触发云函数 SCF 执行。



4. 单击完成,即可完成 EdgeOne APK 动态打包函数的创建。

步骤3:验证云函数 SCF 是否已成功完成对 Android APK 母包的预处理

1. 登录 对象存储 COS 控制台,在左侧菜单栏中,单击存储桶列表。
2. 在存储桶列表页面,单击用于存储 APK 母包存储桶名称
3. 在文件列表页面,单击进入v2-vasdolly/文件目录,单击上传文件并选择.apk结尾的文件v2_src.apk,单击上传



4. 如云函数 SCF 已成功完成对 Android APK 母包的处理,则会在对象存储 COS 上传目录的同级目录下自动生成在一个文件输出的目录,具体路径为 新建模板函数 中,环境配置 outputPath 所填写的目录,例如:/v2-vasdolly_output,单击该目录的名称进入到目录,即可看到云函数 SCF 已预处理好的新的 APK 母包。