一、多模块一起打包
在实际项目开发中,一个项目会有多个模块,那么如何用一个命令来依次生成多个APK呢?
答案是通过gradlew命令进行批量打包
如果项目名称为AProject,且包含模块B、C和D,那么根据实际需求,你可以使用以下命令单独打包不同渠道:assembleRelease、assembleDebug和assembleAndroidTest。你可以根据需要自行编写这些命令。
使用以下命令分别打包,将在各个模块的build目录生成apk文件: ``` ./gradlew :B:assembleRelease ./gradlew :C:assembleDebug ./gradlew :D:assembleAndroidTest ```那么,要想进行批量打包,可以使用gradlew命令来整合以下步骤即可:
合并后的指令如下:
执行以下命令后,各个模块的build目录将生成相应的apk文件:“”./gradlew clean :B:assembleRelease :C:assembleRelease :D:assembleAndroidTest
二、将多个APK包拷贝到新生成的outputs目录下
在工程的./build.gradle文件中增加如下配置:
subprojects() { def releaseTasks = project.getTasksByName(assembleRelease, false) def debugTasks = project.getTasksByName(assembleDebug, false) def androidTestTasks = project.getTasksByName(assembleAndroidTest, false) copyApkFile(releaseTasks, project) copyApkFile(debugTasks, project) copyApkFile(androidTestTasks, project) } def copyApkFile(Set tasks, Project project) { for (task in tasks) { def dir = project.getProjectDir().getAbsolutePath() println Assemble release directory: $dir def file = new File(dir + /build/outputs/apk/ // Rest of the code...会自动创建outputs目录,并将所有生成的APK拷贝到outputs目录中
三、shell脚本批量安装
请创建一个名为install_app.sh的文件,文件内容如下:
#!/bin/bash # install_app.sh echo ========== Start install apk ========== apkDir=$WORKSPACE/outputs apkDir=/Users/xxx/outputs # 设置读取outupts目录 path= subDir= cd $apkDir function readDir() { cd $apkDir filelist=$(ls $1) for file in $filelist; do # 这里写具体的操作逻辑 # # done } readDircom.aa.aaa
com.bb.bbb
请注意:脚本中会使用到all_list文件名。
2、编写 uninstall_pre.sh 脚本文件
编写脚本的思路如下:
1. 首先,将需要卸载的应用的包名(Package_Name)记录在一个名为all_list的文件中;
使用 adb shell pm list packages -3 命令,您可以提取测试设备中已安装的所有第三方应用的包名,并将其输出到一个名为list的文件中。
3.通过 for line in list 语句遍历 list 文件,取出每行字符串并截取出包名;
4. 对比截取的包名和 all_list 文件中的内容,如果存在相同或包含关系,则使用 adb uninstall 命令进行卸载。
5.被卸载的应用包名将输出在终端。
以下是已经完成的脚本编写:
#!/bin/bash# 第三方应用包名输出到list文件adb shell pm list packages -3 >list.txt# 等待3秒sleep 3s# 遍历手机里的第三方app的包名for line in $(cat list.txt); do # 将packagename截取出来 name=${line:8} # 遍历要卸载的包名 for line2 in $(cat all_list.txt); do # 判断是否包含 if [[ $name =~ $line2 ]]; then # 删除包名结尾的\r package_name=$(echo $name | tr '\r' ' ') # 执行adb卸载命令 adb uninstall $package_name # 打印已卸载的包名 echo $package_name"已卸载" fi donedone
四个步骤一气呵成,可以实现批量打包并将生成的多个APK通过gradle文件配置拷贝到outputs目录下,然后通过编写好的shell脚本来批量安装和批量卸载,完美!感谢朋友们支持~
还木有评论哦,快来抢沙发吧~