Jenkins AWS Device Farm插件无法找到APK文件问题求助
解决Jenkins上传AWS Device Farm时的APK找不到问题
我之前帮好几个开发者解决过类似的问题,核心都是路径匹配错误或者Jenkins归档环节没做好,咱们一步步来排查:
第一步:先搞清楚APK到底在哪
别瞎猜路径,直接在Jenkins构建步骤里加一个shell命令(Windows节点用dir命令):find ${WORKSPACE} -name "*PlayerSDK-debug-androidTest*.apk"运行构建后看控制台输出的完整路径,这是最准确的。也可以登录Jenkins节点服务器,直接去工作区目录里找这个文件,确认它确实存在,以及路径和你填的是否一致。
第二步:确保Jenkins正确归档Artifacts
AWS Device Farm插件很多时候依赖Jenkins归档的文件来上传,所以必须先把APK归档:- 在Jenkins任务的「构建后操作」里添加「归档Artifacts」
- 把刚才找到的相对路径填进去(比如
build/outputs/apk/androidTest/debug/PlayerSDK-debug-androidTest.apk,或者用通配符**/PlayerSDK-debug-androidTest.apk) - 运行构建后,去任务的「Artifacts」标签页看看能不能看到这个APK,如果能看到,说明归档成功了。
第三步:修正AWS Device Farm插件的路径配置
- 如果插件支持选择已归档的Artifacts,直接从下拉列表里选刚才归档的APK,绝对不会错;
- 如果必须手动输入路径,要么用和归档完全一致的相对路径,要么用
${WORKSPACE}变量拼接绝对路径,比如:
别直接写固定绝对路径,因为不同节点的工作区路径可能不一样。${WORKSPACE}/build/outputs/apk/androidTest/debug/PlayerSDK-debug-androidTest.apk
第四步:确认测试APK确实被生成了
有时候构建日志显示“成功”,但其实没生成androidTest的APK——因为你的Gradle命令里没包含对应的任务。检查Jenkins的构建命令,必须包含assembleDebugAndroidTest,比如:./gradlew clean assembleDebug assembleDebugAndroidTest这个任务才会生成androidTest目录下的测试APK。
第五步:排查文件权限问题
极少数情况是Jenkins运行用户没有读取APK的权限,你可以在构建步骤里加个命令检查:ls -l ${WORKSPACE}/build/outputs/apk/androidTest/debug/PlayerSDK-debug-androidTest.apk如果权限显示不是
-rw-r--r--这类可读的,就加个chmod命令修改权限:chmod 644 ${WORKSPACE}/build/outputs/apk/androidTest/debug/PlayerSDK-debug-androidTest.apk
按这个流程走,基本就能解决找不到文件的问题了。
内容的提问来源于stack exchange,提问作者Arveen
相关产品推荐
相关产品推荐

