十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
简介
创新互联建站专注于网站建设|成都网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖成都服务器托管等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身制作品质网站。这篇文章主要介绍Android用gradle打包,并且调用python脚本将打包好的apk上传到fir.im供相关人员下载,对于学习gradle 打包和python 几个常用网络库有一定帮助
关键字 :Android Gradle Python fir.im
1 开发前准备
开发前需要下载 AndroidStudio ,gradle(3.3版本),python3.6,Curl,pycurl
准备fir.im账号一个,有账号对应的apitoken,具体fir.im的细节可查看文档fir.im
开发环境为macOS,windows推荐把pycurl部分全部替换为requests,即上传apk部分代码换为上传图标的那种方式,详细见代码
2 Gradle 脚本编写
我们脚本需要做的事情就是在APK打包完成以后,把apk的路径传递给python脚本即可,如何保证打包好了,就用gradle的dependsOn方法,例如打debug包,我们就可以写一个task ,这个task dependsOn ‘assembleDebug',这样这个task调用时,会先执行assembleDebug,然后在执行里面的代码,即符合我们的需要
具体代码
//这个task 需要放在 app/build.gradle文件中的android 代码块里 task assemblewithlog { dependsOn 'assembleDebug' doLast { //这个需要配置一下,app的图标 def appicon = "app/src/main/res/drawable/icon.png" //这个需要配置一下,app的输出到fir.im的名称 def outId = "yitiji_Debug" //取 apk的版本名和apk的输出文件目录 def verName = project.android.defaultConfig.versionName; def apkpath = applicationVariants.first().outputs.first().outputFile //调用python脚本 这个脚本需要放在工程目录下 def process = "python3 uploadfirim.py ${outId} ${verName} ${appicon} ${apkpath}".execute() // Wait till the process completes before continuing println("上传apk中") //将python代码里面打印的内容在gradle窗口中打印出来 ByteArrayOutputStream result = new ByteArrayOutputStream(); def inputStream = process.getInputStream() byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) != -1) { result.write(buffer, 0, length); } println(result.toString("UTF-8")); //阻塞gradle代码直到python代码执行结束 int exitValue = process.waitFor() println "上传结束 with value $exitValue" } }