Gradle 构建 android项目及APK打包(ubuntu)
2016-10-21 12:55
393 查看
Gradle介绍
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。Gradle环境配置
因本文是介绍在ubuntu下gradle构建android项目,故在此只介绍ubuntu环境下的配置。首先gradle在ubuntu官方也是有文件可以下,但版本太过陈旧,连Android Studio的 jcenter方法都不支持。如果强行编译,会出以下错误:
Could not find method jcenter()for arguments [] on repository container.
所以不要用sudo apt-get install gradle来安装 gradle,如果安装了,要用 sudo apt-get remove gradle卸载掉。
下载
下载地址为:http://www.gradle.org/downloads(官方)
http://services.gradle.org/distributions(直接点)
安装
复制下载的gradle-2.10-all.zip(假设你下载的是此版本)到~下,并在当前目录下解压:sudo unzip gradle-2.10-all.zip -d/opt/gradle/ sudo vim /etc/profile 在末尾添加: exportGRADLE_HOME=/opt/gradle/gradle-2.10 exportPATH=$GRADLE_HOME/bin:$PATH 然后重启: sudo reboot gradle -v
你就能看见下列信息:
------------------------------------------------------------ Gradle 2.10 ------------------------------------------------------------ 。。。。。。
看见gradle 2.10就表示已经配置成功。
构建android项目
到上一步为止准备工作已经做好!,下面我们就进行android项目的构建。我们知道在AS上新建一个新的android一般需要三个gradle配置文件,分别是根目录下的 build.gradle、settings.gradle 和 app 目录下的 build.gradle 文件,前两个文件配置比较简单,后文会一一介绍。我们的项目构建大体上适合AS产生的这三个文件是一致的。首先我们来看构建项目最最重要的一个build.gradle 需要的都加了注释,加深理解。apply plugin:'com.android.application' //表示该module是一个app module,应用了com.android.application插件 android { compileSdkVersion 24 //基于哪个SDK编译,这里是APILEVEL,是24 buildToolsVersion "24.0.2" //基于哪个构建工具版本进行构建的 defaultConfig { applicationId"com.xx.xx.info"//包名 minSdkVersion 21 targetSdkVersion 24 versionCode 1 //版本号 versionName "1.0" //版本名称 } buildTypes { //构建类型 release { //常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等 proguardFilesgetDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { //就不属于Android专有的配置了,它定义了该module需要依赖的jar,aar,jcenter库信息 compile fileTree(dir: 'libs', include:['*.jar']) testCompile 'junit:junit:4.12' compile'com.android.support:appcompat-v7:24.2.0' }
这个文件对全新的项目来说会包含三部分
apply plugin 声明
android {} 节点
dependencies {} 节点
apply plugin 声明
最顶部有一行代码是这样的:
apply plugin: ‘com.android.application’
代表该项目是一个 Android 项目,而且一个 Android 项目只有一句这个声明,别问为什么这样写,这是规范。 在旧的版本中一般用’android’来表示。但最新使用’com.android.application’,建议替换。
有了这个文件之后我们还需要jdk环境以及sdk环境。先来看sdk环境:
## This file is automaticallygenerated by Android Studio. # Do not modify this file -- YOURCHANGES WILL BE ERASED! # # This file must *NOT* be checkedinto Version Control Systems, # as it contains informationspecific to your local configuration. # # Location of the SDK. This isonly used by Gradle. # For customization when using aVersion Control System, please read the # header note. #Mon Sep 12 14:49:02 CST 2016 ndk.dir=/home/xxx/Sdk/ndk-bundle sdk.dir=/home/xxx/Android/Sdk
感觉是不是很熟悉,没错就是AS新建项目中根目录下的local.properties文件。我们只需要把AS里面的这个文件拷过来就行。
至于jdk环境看你的具体情况。先编译,如果报jdk错误就有三种解决办法:
第一:在你的build.gradle里面的android属性里添加
compileOptions { sourceCompatibilityJavaVersion.VERSION_1_7 targetCompatibilityJavaVersion.VERSION_1_7 }
第二:在gradle.properties中添加
org.gradle.java.home=your jdk path
第三:带参数的命令行形式
gradle build -Dorg.gradle.java.home=’yourjdk path’
可根据不同版本酌情处理。第二条未曾尝试,不知是否有效。因为开发中个人不可能只有一个jdk版本,故建议使用第三条。方便灵活。
接下来还有一个重要的文件就是gradle环境配置。即另一个build.gradle(注:此处这个是在你项目的根目录下的环境配置,上一个是你app的相关配置,应放在/app/下)
buildscript { //设置脚本的运行环境 repositories { //支持java依赖库管理(maven/ivy),用于项目的依赖。这也是gradle 强力的地方 jcenter() } dependencies { //依赖包的定义 classpath'com.android.tools.build:gradle:2.0.+' } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
这些都是格式化的东西,打开你的AS你会发现差不多,没多大区别。不过在依赖包这边com.android.tools.build:gradle:版本很多,你要视情况来写。如果是2.10的环境那么这边可以写2.0.x-2.2.x,避免麻烦直接写2.0.+ 。
最后你需要settings.gread这个文件把你根目录里的和app下的两个build.gradle联系起来。内容如下:
include ‘:app’
那么整理一下,到现在你的项目根目录里有app文件夹和build.gradle、local.properties、settings.gradle三个文件。app文件下下就是你的src文件和一个build.gradle文件。
打包APK
cd到你的项目根目录下进行以下命令$ gradle clean
如果是第一次使用gradle构建,则会下载相关依赖包并且对环境进行初始化,最后你会看到如下提示:BUILD SUCCESSFUL此时你会发现在根目录下多了一个隐藏文件.gradle。这个就是你的gradle环境的相关依赖包。接着执行:
$ gradle build
这个命令就是你项目的构建,如果成功的话你就可以在你的app路径里outputs文件夹下发现生成个三个app。看名字就猜到一个是调试模式没有进行优化的apk,一个是release模式但没有签名的apk。还有一个debug版的。
打签名包
默认输出 release apk 是没有签名的,那么我们需要签名的很简单,只需要在android{}里面补充加上如下代码即可。Debug {
versionNameSuffix”-debug1”
signingConfig signingConfigs.debug
}
release {
storeFilefile(“debug.keystore”)
storePassword “android”
keyAlias”androiddebugkey”
keyPassword “android”
}
假设你已经有一个keystore并且把它放到app路径下别名是androiddebugkey 密码是android。你还需要在buildTypes{release{}}里面加上:
signingConfigsigningConfigs.debug
signingConfigsigningConfigs.release
此处debug和release名字可以随便指定,只要相互对应就好。继续运行以下命令:
gradle clean
gradle build
可以得到签名以后的apk。
生成.keystore
上面介绍了通过.keystore打包apk。那么我们怎样得到一个.keystore文件呢。keytool 给我们提供了一些工具让我们可以直接在ubuntu上通过指令来得到。来看下面的命令。keytool -genkey -aliasandroid.keystore -keyalg RSA -validity 20000 -keystore android.keystore
-validity 20000代表有效期天数
-alias android.keystore 生成的别名叫android.keystore
运行上面命令系统就会提示你输入姓名、组织等等一些必要的信息。最终就会在当前目录下得到 .keystore这个文件。然后就可以愉快的打包有数字签名的apk了。
相关文章推荐
- Android项目构建--gradle常用知识小结与多渠道多Apk打包
- 使用gradle手动构建Android项目并打包成APK
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- 【Android Studio探索之路系列】之十:Gradle项目构建系统(四):Android Studio项目多渠道打包
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- 【Android Studio探索之路系列】之十:Gradle项目构建系统(四):Android Studio项目多渠道打包
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- [Android]配置Gradle的productFlavors构建项目用于多渠道打包或多环境运行
- Ubuntu下通过Gradle本地编译打包Android项目
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
- Android开发把项目打包成apk
- Android项目打包APK
- Android开发把项目打包成apk
- Android开发把项目打包成apk
- android项目打包成apk应用程序后部署到虚拟机上测试
- android项目打包成apk应用程序后部署到虚拟机上测试
- Android开发把项目打包成apk
- 使用Gradle构建Android项目
- 将Eclipse Android项目打包成APK文件