手把手教你一步步用批处理程序打包你的android App

写在前面:这篇博客介绍关于用命令行或者批处理程序用gradle把已有的android项目打包成apk,现在开发android大都使用android studio,有些开发者还在使用Eclipse配合ADT插件开发android。不论使用哪种IDE,打包都是点击几个按钮就可以了。那是不是命令行打包就无用武之地了呢?非也。现在有这样一个需求,我们卖给客户一个app,客户要求自己可以随时更换app内任何资源,甚至更改源码(写这个是让你们瞬间放弃热修复,热更新的念头)。客户都是小白,怎么实现呢?(不得不说这个世界就是不缺奇葩)。如果,我们把程序放到服务器上,客户通过网页上传项目资源文件,然后点击打包,(一段迷之loading之后)批处理程序自动把项目打包成apk,打包完成后的apk,通过网页上的下载链接传给客户,so? ,干的漂亮~~~现在就剩下怎么使用批处理程序打包app了。这里我把批处理程序打包app的过程写出来,事实上我们已经实现了通过这种方式让用户随心所欲更改自己的项目。这是我写的第一篇博客,也是第一次使用markdown编辑器。格式排版方面的错误,我只想说。。。请自行忽略。。。+_+

进入正文

开始打包前 你需要有一个android项目,配置gradle,JDK,SDK,好在这些配置都很简单

项目结构如图所示

手把手教你一步步用批处理程序打包你的android App

gradle配置

gradle传送门https://services.gradle.org/distributions选择一个你项目中使用的gradle版本下载(项目中使用的gradle版本可在项目根目录\gradle\wrapper\gradle-wrapper.properties中获取 如distributionUrl=https://services.gradle.org/distributions/2.14.1-all.zip)。我这里需要下载gradle-2.14.1-all.zip,解压gradle-2.14.1-all.zip,将其路径配置到新建的环境变量GRADLE_HOME中, 如图

手把手教你一步步用批处理程序打包你的android App

将GRADLE_HOME环境变量加入到Path环境变量中 如 %GRADLE_HOME%\bin

JDK配置

JDK配置是java,android开发的基本功(建议通过创建JAVA_HOME的方式配置JDK),这里不再累述。

SDK配置

SDK使用我们开发app时用的SDK就好,不需要配置

接下来是稍微麻烦点的项目配置

修改项目根目录下文件local.properties文件中sdk.dir为本地sdk文件夹的绝对路径如图

手把手教你一步步用批处理程序打包你的android App

SDK目录

手把手教你一步步用批处理程序打包你的android App

修改app/build.gradle文件,在android闭包下加入lintOptions { abortOnError false }如图

手把手教你一步步用批处理程序打包你的android App

在android闭包下加入signingConfigs签名配置 如

signingConfigs {
release {
keyAlias ‘android’
keyPassword ‘android’
storeFile file(‘D:/branch/EcologicalCitySVN/app/key/EcologicalCity.jks’)
storePassword ‘android’
}
}

signingconfigs 是签名配置,keyAlias 是签名文件别名,keyPassword是签名文件的密码,storeFile是签名文件的绝对路径,storePassword 签名文件储存密码

在android闭包下配置buildTypes 如

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
signingConfig signingConfigs.release
}
}

打开记事本输入”gradle clean && gradle assembleRelease”保存格式为.bat批处理格式后放到项目根目录下即可。双击批处理程序gradle会自动打包,打包完成后 在app\build\outputs\apk目录下的release.apk即为打包完成的apk。

写在后面:纯命令行(不通过gradle)一步步打包app的方式不仅过程繁琐,且极容易出错,已经被谷歌禁用。打包方式没用通用性,需要根据每个项目进行不同的操作。而使用gradle命令打包与在AS上通过按钮打包的方式是一致的,且具有通用性(项目中可以有so库,三方库)。通过gradle进行打包,过程中可能会出现这样那样的问题,这些问题都是很容易解决的问题,只要成功打包一次,以后就能正常使用了.关于使用gradle命令行打包有什么问题或见解可以通过邮箱[email protected]与我交流.多多指教O(∩_∩)O~~~