Skip to main content

Android 自动打渠道包工具(walle+自动化)

AutomaticPackagingTool

Android 自动打渠道包工具,使用 python 3.7 使用之前必须安装并配置相关环境(Java、Android、Python)

自动化打包操作流程

1. 在 Android 项目的根目录 build.gradle 文件中添加 Walle Gradle 插件的依赖, 如下:

buildscript {
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }
}
当前 app 的 build.gradle 文件中 apply 这个插件,并添加上用于读取渠道号的AAR
apply plugin: 'walle'

dependencies {
    implementation 'com.meituan.android.walle:library:1.1.6'
}
通过以下代码获取渠道信息
String channel = WalleChannelReader.getChannel(this.getApplicationContext());

2. 打一个签名的apk

3. 将项目中的 jks 文件、channel 文件(如果没有请新建一个)、打包好的 apk 文件拷贝到 apk 目录里面

4. 在 python 中配置信息

# android_build_tools 路径
android_build_tools_path = 'D:/DevelopmentTools/Android/SDK/build-tools/28.0.0/'
# 生成的文件名
target_file_name = 'AP'
# jks keystore_password
keystore_password = "123456"
# jks 别名
key_alias = "AutomaticPackaging"
# jks key_password
key_password = "123456"

5. 在 include 文件夹中 run 一下就开始批量打包了

Android 代码:Android source
python 打包工具:AutomaticPackagingTool

手动打包操作流程

1. 对齐:
Win:zipalign -v 4 source.apk destination.apk

Mac:./zipalign -v 4 source.apk destination.apk
2. 优化:
Win:zipalign -c -v 4 destination.apk

Mac:./zipalign -c -v 4 destination.apk

3. 签名

Windows: apksigner sign --ks [你的签名文件] [apk路径]

Mac: apksigner sign --ks [你的签名文件] [apk路径]

4. 检查是否使用v2签名:

java -jar CheckAndroidV2Signature.jar destination.apk
{"ret":0,"msg":"ok","isV2":true,"isV2OK":true} 是 V2 签名的App
{"ret":0,"msg":"ok","isV2":false,"isV2OK":false} 不是 V2 签名的App

5. 写入渠道包信息:

java -jar [刚下载walle-cli-all.jar的路径] batch -f [项目里channel的路径]  [apk路径]

6. 获取渠道信息

String channel = WalleChannelReader.getChannel(context);
转载请注明出处

Popular posts from this blog

Publish an Android library to Maven with AAR ,android studio maven aar nexus 上传aar android上传aar到Maven Central 2022年最新最全

1. Github 1.1 注册github 点击下面链接进行注册 注册GitHub账号 2. 注册sonatype账号 2.1 注册 注册sonatype 输入 Email, Full name,Username,Password,输入验证码,最后点击Sign up就可以注册了。 required 2.2 登录 登录sonatype 2.3 新建group id 登录之后点击 新建 按照下图中的步骤一步一步来即可,最后别忘记点击新建。 2.4 github新建相关仓库 新建完成之后我们需要在github新建一个仓库,证明你是这个github的使用者(例如这个是我的 https://github.com/996dev) 等待审核通过之后,我们就可以往 mavenCentral 上传aar或者jar包了 3. GPG 3.1 下载软件 GPG官网下载地址 下载对应系统的文件 下载完成之后点击安装,直到完成。 3.2 生成密钥 创建密钥命令,在创建的时候一定要记住设置的密码,后面要用的 gpg --full-generate-key 导出 私钥,这个后面会用的到,使用下面命令进行导出 gpg --export-secret-keys -o secring.gpg 3.3 上传公钥到服务器 上传到这个三个地方 keyserver.ubuntu.com,pgp.mit.edu,keys.openpgp.org gpg --keyserver hkp://xxxx.xxx --send-keys YOUR KEY ID 3.3.1上传 使用下面命令进行上传 gpg --keyserver keyserver.ubuntu.com --send-keys YOUR KEY ID gpg --keyserver pgp.mit.edu --send-keys YOUR KEY ID gpg --keyserver keys.openpgp.org --send-keys YOUR KEY ID keys.openpgp.org 命令行出问题使用下面的网页直接上传 https://keys.openpgp.org/uploa 3.3.2 验证上传是否成功 使用下面的命令进行验证是否上传成功 gpg --keyserver keyserver.ubuntu.com --recv-ke

虚拟币交易平台 viabtc_exchange_server ubuntu 16.04 安装步骤

########1############ 下载宝塔: wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh Congratulations! Install succeeded! ================================================================== Bt-Panel: http://155.138.211.245:8888/37dfffff username: dbdiyxmj password: f2ec3b83 Warning: If you cannot access the panel, release the following port (8888|888|80|443|20|21) in the security group ================================================================== sudo apt update ########2############ sudo apt install libev-dev libjansson-dev libmpdec-dev libmysqlclient-dev libcurl4-gnutls-dev libldap2-dev libgss-dev librtmp-dev libsasl2-dev git default-jdk openssl libssl-dev mysql-server 数据库root 密码:root ########3############ wget http://www.digip.org/jansson/releases/jansson-2.12.tar.gz tar xzvf jansson-2.12.tar.gz cd jansson-2.12 ./configure --prefix=/usr --disable-static && make && make install  whereis libjansson cd .. ########4#######

MediaStore.Images.保存图片时生成两张图片的问题 并且在oppo手机上时间是1970-01-01 08:00:00

MediaStore.Images.保存图片时生成两张图片的问题 并且在oppo手机上时间是1970-01-01 08:00:00 正确方式如下 使用方式一 private void saveImage( String originFilePath) { File appDir = new File ( Environment . getExternalStorageDirectory() . getPath() + " /leikebaijing/images " ); if ( ! appDir . exists()) appDir . mkdirs(); String fileName; long dateTaken = System . currentTimeMillis(); if (originFilePath . contains( " / " )) { fileName = originFilePath . substring(originFilePath . lastIndexOf( " / " ) + 1 ); } else { fileName = dateTaken + " jpg " ; } File file = new File (appDir, fileName); if ( ! file . exists()) { try { file . createNewFile(); } catch ( IOException e) { e . printStackTrace(); }