apk被play protect blocked的解决方案(ADB+Appium+webdriverio)

起因:公司有海外项目,需要推广apk ,数量多,但是由于被play protect阻止安装,初版解决方案 apk加固、换签名、垃圾代码、修改资源文件的MD5,但是由于原生代码标记过于严重,推广成本高,又换了一种方案,有所缓解,原先每天固定时间查看是否被block,效果不是很好,需要写一些脚本程序自动检测,

前期准备
国际版手机,代理,play保护机制保持最新(某些带谷歌服务的模拟器也行,但是效果有时候会差),USB调试打开-通过USB验证应用
第一版方案

通过ADB命令安装app,查看是否有弹窗,而弹窗是play应用的弹窗,adb解决不了,需要人工点击弹窗确认,有一定成本,

//安装前先检测是否已安装,卸载已安装应用
adb uninstall com.xx.xx
//安装应用
adb install com.xx.xx
第二版

在上面的基础上使用Appium+webdriverio来实现自动检测、点击弹窗(其实也可以安装apk,但是第一版已经实现了就没再用),加固-签名-上传-清缓存

官网

Welcome - Appium Documentation

官网讲解很详细,配置好环境,使用Appium Inspector来查看页面元素,第一次使用还遇到版本有bug,通过回退才能用(Error: Cannot start Appium session on real android device with Mac M1 - Device UDID is being dropped by Appium · Issue #19713 · appium/appium (github.com)),当然最新版本已经修复

主要代码如下,逻辑上可以循环检测,也可以监听,根据业务实现就好

const { remote } = require('webdriverio');

const capabilities = {
  "platformName": "Android", 
  "appium:udid": "xxxxxx",
  "appium:platformVersion": "9",
  "appium:automationName": "UiAutomator2"
};

const wdOpts = {
  hostname: process.env.APPIUM_HOST || 'localhost',
  port: parseInt(process.env.APPIUM_PORT, 10) || 4723,
  logLevel: 'info',
  capabilities,
};
const driver = await remote(wdOpts);
const  btn= await driver.$('//*[@text="知道了"]');
await btn.click();

检测完,把有问题的apk,加固好换签名(可api实现,可人工),上传,刷新缓存

签名

const { execSync } = require('child_process');

execSync(` java -jar apksigner.jar sign --ks ./bazel_debug.keystore -ks-key-alias xxx  -ks-pass pass:xxx -key-pass pass:xxx --out ./signed/xxx.apk ./unsigned/xxx.apk `);

上传 、清缓存

公司使用的oss、aws,需要接对应的SDK上传、刷新DNS或者失效。

相关推荐
测试杂货铺5 天前
Appium怎样连接多台设备?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
csdn_金手指7 天前
MacOS系统 快速安装appium 步骤详解
macos·appium
川石课堂软件测试11 天前
实用|金融银行项目测试业务流分析+常问面试题
功能测试·测试工具·金融·appium·自动化·压力测试
测试老哥17 天前
appium怎样连接多台设备
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
枫萏17 天前
【Appium】AttributeError: ‘NoneType‘ object has no attribute ‘to_capabilities‘
appium
测试杂货铺20 天前
如何进行Appium实现移动端UI自动化测试呢?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例
qq_433716951 个月前
测试用例编写的八大要素及编写详细指南
自动化测试·软件测试·jmeter·appium·jenkins·接口测试·测试工程师
Enougme1 个月前
Appium常用的使用方法(一)
python·appium
大今野1 个月前
windows系统中实现对于appium的依赖搭建
windows·appium
Enougme1 个月前
mac安装appuim
macos·appium