- 环境要求
Ubuntu:20PHP7.4Swoole4.xComposer
- 打包工具
Java1.8打包工具环境基础apksigner.jarAPK签名工具V1&V2apktool.jarAPK编译与反编译工具zipalignAPK文件对齐工具
- 实现原理
-
- 通过向外提供接口服务
-
- 请求进来后 扔进异步队列中处理打包
-
- 处理成功后 安装包上传到腾讯云
-
- 上传成功后 通知下载地址到服务器
-
- 特别说明
- APK安装包的渠道信息应当在
AndroidManifest.xml中定义
- APK安装包的渠道信息应当在
/start.php启动程序/config.php配置文件/runtime/lock/*进程锁文件/runtime/key/<md5>.jks签名文件/runtime/apk/<md5>.apk传入原始APK文件/runtime/recompile/<md5>/*反编译后压缩文件/runtime/compile/<md5>/<index>/app/*正在编译文件(多位用户操作多个索引)/runtime/compile/<md5>/<index>/user.json是否正在占用(存放替换信息,方便重置环境)/runtime/compile/<md5>/<index>/reapp.apk编译后APK/runtime/compile/<md5>/<index>/zipalign.apk对齐后APK/runtime/compile/<md5>/<index>/app.apk签名后APK
- 传入参数
mch_id商户IDapp_url安装文件下载地址key_url密钥文件下载地址key_secret密钥文件密码key_alias密钥文件别名key_alias_secret密钥文件别名密码notify_url通知发送地址files增加文件信息files.*.path路径files.*.content内容
replaces替换AndroidManifest.xml字符串内容replaces.*.key主键replaces.*.value内容
attach回传参数
- 判断 下载安装文件
- 判断 下载密钥文件
- 判断 反编译安装文件
- 判断 压缩反编译文件到 zip
- 判断 解压到编译环境目录
- 写入 渠道文件信息
- 执行 文件编译命令
- 执行 文件对齐命令
- 执行 文件签名命令
- 上传 签名后文件到云
- 通知 打包后下载地址
- 通知参数
mch_id, download_url, attach - 判断返回
SUCCESS
- 通知参数
- 前期准备
- 安装
docker - 拉取
代码并配置腾讯云OSS配置
- 安装
- 映射目录运行
- 执行命令
composer update /worker/project这个路径是我宿主机的路径,请根据实际路径来- 执行命令
docker run -p 9501:9501 -v /worker/project:/opt --privileged -u root --entrypoint /opt/start.sh h6play/apk-subcontract:v1
- 执行命令
- 构建镜像运行
- 执行命令
docker build -t apkbb:v1 . - 执行命令
docker run -it apkbb:v1
- 执行命令
- 安装
Ubuntu:20- 购买云主机/搭建虚拟机
- 执行命令
sudo apt-get update -y
- 安装
Java1.8- 执行命令
sudo apt-get install openjdk-8-jdk -y - 执行命令
java -version
- 执行命令
- 安装
zipalign- 执行命令
sudo apt-get install zipalign -y
- 执行命令
- 安装
PHP7.4- 执行命令
sudo apt-get install wget vim -y - 执行命令
sudo apt-get install libzip-dev bison autoconf build-essential pkg-config git-core libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev librecode-dev libsqlite3-dev libonig-dev -y - 执行命令
wget https://www.php.net/distributions/php-7.4.0.tar.gz - 执行命令
tar zxvf php-7.4.0.tar.gz && cd php-7.4.0/ - 执行命令
./configure --prefix=/usr/local/php7 --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-config-file-path=/usr/local/php7/etc --enable-mbstring --enable-zip --enable-bcmath --enable-pcntl --enable-ftp --enable-xml --enable-shmop --enable-soap --enable-intl --with-openssl --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-opcache --enable-fpm --enable-session --enable-sockets --enable-mbregex --enable-wddx --with-curl --with-iconv --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv --with-openssl --with-pdo-mysql=mysqlnd --with-gettext=/usr --with-zlib=/usr --with-bz2=/usr --with-recode=/usr --with-xmlrpc --with-mysqli=mysqlnd - 执行命令
sudo make install - 执行命令
sudo cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf - 执行命令
sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf - 执行命令
sudo cp php.ini-production /usr/local/php7/etc/php.ini - 编辑文件
sudo vim /etc/profile末尾加入行PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH - 执行命令
source /etc/profile - 编辑文件
sudo vim /etc/sudoers在Defaults secure_path后加入行/usr/local/php7/bin:/usr/local/php7/sbin: - 执行命令
php -v
- 执行命令
- 安装
Swoole4.x- 执行命令
sudo wget http://pecl.php.net/get/swoole-4.4.18.tgz - 执行命令
tar zxvf swoole-4.4.18.tgz && cd swoole-4.4.18 - 执行命令
sudo /usr/local/php7/bin/phpize - 执行命令
sudo ./configure --with-php-config=/usr/local/php7/bin/php-config --enable-coroutine --enable-openssl --enable-http2 --enable-async-redis --enable-sockets --enable-mysqlnd - 执行命令
sudo make clean - 执行命令
sudo make - 执行命令
sudo make install - 编辑文件
sudo vim /usr/local/php7/etc/php.ini末尾加入extension=swoole.so - 执行命令
php -m
- 执行命令
- 安装
Composer- 执行命令
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" - 执行命令
php composer-setup.php - 执行命令
php -r "unlink('composer-setup.php');" - 执行命令
sudo mv composer.phar /usr/local/bin/composer - 执行命令
composer self-update - 执行命令
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 执行命令
- 部署
服务代码- 执行命令
sudo apt-get install git -y - 拉取代码
git clone https://github.com/yog-union/android-subcontract - 执行命令
cd android-subcontract - 执行命令
composer update - 执行命令
sudo chmod 777 -R * - 更改配置
sudo vim config.php - 执行命令
php start.php
- 执行命令
# POST http://127.0.0.1:9501
{
"mch_id": "xxx",
"app_url": "https://cos.ap-chongqing.myqcloud.com/app.apk",
"key_url": "https://cos.ap-chongqing.myqcloud.com/keystore",
"key_secret": "B6570A1B5AF373D269BE27B8C1244650",
"key_alias": "xxx",
"key_alias_secret": "B6570A1B5AF373D269BE27B8C1244650",
"notify_url": "http://service.com/notify",
"files": [
{"path": "/META-INF/services/channel", "content": "10086"}
],
"replaces": [
{"key":"CHANNEL_VALUE", "value":"10086"}
],
"attach": "10086"
}