最近在工作中遇到一个需求,记录一下处理过程。
Android项目需要动态生成“项目名、程序图标、特定的标识符数据“,用户在web页面上填写打包的信息,然后后台打包生成apk文件。
1、利用gradle把apk信息通过参数传到打包环境,定义变量接收参数(def appName = project.getProperty("appName"))。
然后利用gradle的多渠道打包方式,把需要动态改变的信息赋值,例如:productFlavors{ app { resValue"string","app_name","${appName}" } },
注意:这样填写了以后string.xml文件就不能有app_name这个item,会造成多次定义。
2、把整个工程弄到生产环境,在local.properties配置文件中配置好sdk所在位置。
3、下载Android SDK解,包内只有一个tools目录, 需要我们使用命令将build-tools、platforms、platform-tools三个目录部分下载下来,
我们可以使用tools/bin/sdkmanager下载。
sdkmanager --install "build-tools;28.0.3",sdkmanager --install "platforms;android-28",sdkmanager --install "platform-tools"(版本根据项目版本而定)
4、然后利用服务器的Java代码调用sh命令,(sh gradlew assembleDebug -P appName=彩票云),每一个参数前面都需要加 -P,执行该命令需要在项目根路径下。
5、在文件生成后把文件拿到文件服务器,做好关系映射。