手动构建Android Gradle项目

1 配置编译环境

配置Android开发环境(Android SDK),下载安装gradle工具并配置执行环境。

2 新建构建项目的目录

如果没有项目目录,新建一个目录作为项目目录。

3 拷贝源代码和资源文件到构建目录中

将源码拷贝到新建的项目目录中,最基本包括以下目录和文件
文件/目录
描述
assets/
assets文件目录
libs/
第三方库目录
src
java源文件目录
res
资源文件目录
AndroidManifest.xml
配置文件
如下图:
手动构建Android Gradle项目
 
说明:其实以上目录不是硬性规定的,可以自定义,只需要在后续步骤在build.gradle中正确设置即可

4 配置local.properties文件

在local.properties文件增加以下配置(若没有该文件需要新建)
sdk.dir=YOUR_SDK_HOME_DIR
将以上的值替换成你的Android SDK的目录

5 配置build.gradle文件

配置build.gradle文件,包含以下内容:

5.1 插件声明

// 这里声明使用到的gradle插件
apply plugin: 'maven' // 仓库加载插件
apply plugin: 'com.android.application' // Android项目编译插件

5.2 项目配置声明

// 这部分其实相当于AndroidStudio项目根目录中的build.gradle文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}

allprojects {
repositories {
jcenter()
}
}

5.3 Android编译配置声明

// 接着项目配置声明,就是Android编译配置声明了,不同于AndroidStudio项目,手动构建的Android Gradle项目只有一个build.gradle文件,需要将这两部分合并。sourceSets配置中,需要根据自己的目录结构正确配置,下面的代码是根据前面的目录结构来配置的。
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml' // Android配置文件
java.srcDirs = ['src'] // 源码根目录位置
resources.srcDirs = ['src'] //
aidl.srcDirs = ['src'] // AIDL文件根目录位置
renderscript.srcDirs = ['src']
res.srcDirs = ['res'] // 资源文件根目录位置
assets.srcDirs = ['assets'] // assets根目录位置
jniLibs.srcDirs = ['libs'] // jni库根目录位置
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests') // tests目录,没有可以不配置
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug') // buildType的目录 debug
release.setRoot('build-types/release') // buildType的目录 release
}
defaultConfig {
applicationId "YOUR_APP_PACKAGE_NAME" //请替换成你的应用包名
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0.0"
}
}
说明:除了以上必要配置外,Android的相关配置还可以添加签名、代码混淆等配置
注意:上面的sourceSet中的内容必须跟你在项目目录下的文件类型对应起来。

5.4 依赖配置声明

// 依赖配置,如果依赖jar包,直接放到libs目录下,如果是仓库,添加仓库依赖
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) // 这一句会编译libs下所有jar文件
compile 'com.android.support:appcompat-v7:25.2.0'
}

6 编译

打开命令行,执行以下命令对项目进行初始化(一般来说直接build就可以,init wrapper会将原来的项目直接就变成了Android Gradle项目,可以直接导入到AndroidStudio中):
Windows:
gradle.bat -p D:/H5GameLite init wrapper
MAC/Linux:
gradle -p H5GameLite init wrapper

这里的gradle.bat是下载的gradle编译工具可执行文件(如果没有配置环境变量,请使用绝对路径),gradle的命令参数请自行学习研究,可选参数项可以通过gradle帮助命令“gradle -h”查看。初始化成功后,将会得到BUILD SUCCESS字样,如下图:手动构建Android Gradle项目手动构建Android Gradle项目
此时项目目录下会多了一些目录和文件
接下来执行clean task,清理项目
Windows:
gradle.bat clean
MAC/Linux:
gradle clean

最后一步是执行编译命令,进行编译。

Windows:
gradle.bat -p D:/H5GameLite/ assembleRelease
MAC/Linux:
gradle -p H5GameLite/ assembleRelease
 
编译成功后将看到BUILD SUCCESSFUL字样,如下图:
手动构建Android Gradle项目
手动构建Android Gradle项目
如果编译失败请根据错误提示检查修改再编译。

编译成功后,在项目目录下的\build\outputs\apk(这个目录跟前面的目录配置有关)可以看到apk,在build.gradle中配置好签名及混淆配置,可实现一步到位的打包
 
说明:最后一步的编译有多种task可以实现,比如assembleDebug,assembleRelease等等,详细请参考gradle官方说明自行学习,一般直接用build更容易编译出现错误。