边缘开发者平台
  • 边缘函数
    • 概述
    • 快速指引
    • 操作指引
      • 函数管理
      • 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

Feature Overview

本文主要介绍了如何通过腾讯云 EdgeOne +腾讯云 COS + 腾讯云 SCF 产品组合在边缘实现 Android APK 多渠道的动态打包方案,相比传统的打包方案,具备一站式动态打包和加速的能力,可减少 APK 多渠道包的维护难度,降低接入成本。
方案支持基于 Android APK V1 / V2 签名的多渠道打包,其中 V2 签名方式兼容开源多渠道打包方案 VasDollyWalle 并支持通过 v2-Custom 自定义渠道打包方式将渠道信息写入指定 blockId 以满足多样化的渠道分发和统计需求。

背景介绍

APK(Android 应用程序包)是 Android 应用程序的安装包, 当 App 发布新版本,通常需要为每个渠道制作不同的渠道安装包,并将其上传到对应的应用市场。当用户从特定渠道下载并安装 App 后再上报数据,管理人员通过渠道标识来统计各个渠道的数据,如渠道下载量、转化率等关键数据,但是会碰到如下问题:
1. 渠道包维护成本高:Android App 开发完成后通常会在线上线下多渠道推广,如线上的应用市场、网盟和搜索引擎,线下的地推等,线上线下渠道商加起来有的多达上千个,如每个渠道需要维护一套渠道包,则投入成本高昂,效率低。
2. 渠道统计困难:渠道多的情况下,不同渠道的安装付费转化率需要统计,但传统的渠道统计依赖邀请码或手工等方式,自动化统计效果不佳。
3. 加速效果不理想:使用 CDN 对 APK 进行下载加速时,每一个 APK 渠道包都需要各自缓存,加速效果不均匀。
因此 EdgeOne 在上述背景下推出了边缘 Android APK 多渠道的动态打包方案。

原理介绍

Android APK 多渠道的动态打包的实现有如下关键条件:
1. APK 包预处理:对 APK 母包注入空白数据,并将 APK 包处理为合法文件。
2. 下载 APK 包时注入渠道信息:当用户执行下载操作,将渠道信息动态地注入到 APK 包的适当位置并返回给用户下载。
通过以上方式将预处理 APK 包和渠道信息注入操作完成解耦,整个方案流程如图所示:




方案优势

1. 降低渠道包维护成本:开发者只需维护一份原始的 Android APK 母包,不必为每个渠道商单独维护,EdgeOne 默认提供打包工具,用户只需简单 UI 配置模板即可完成部署,有效提升多渠道打包的效率。
2. 精准高效的渠道统计:用户只需通过访问 URL + 带有渠道参数触发边缘函数,即可动态将渠道标识插入到 APK 包并返回给用户下载,同时可完成数据的上报统计。




操作步骤

假设您是一家游戏厂商,有 Android App 新游戏(例如:v2_src.APK)要发布到多个不同的渠道增加曝光量吸引更多玩家,例如:各大应用市场、应用商店、社交媒体平台、游戏论坛、广告平台等,您期望高效地针对每个渠道注入渠道标识、统计渠道收益和加速 APK 的下载。发布统一使用 apk.example.com 的域名进行分发。