标签:
新建一个 gradle-repo文件夹配置环境变量
GRADLE_USER_HOME
D:\Gradle\gradle-repo
测试gradle环境是否配置成功。
在命令提示符中输入:gradle -version
出现如上图结果,表示gradle配置成功。
二.使用gradle进行打包
1.查看需要打包的项目中的gradle.build文件(默认生成的文件)并添加相关脚本代码
buildscript {
//buildscript中的声明是gradle脚本自身需要使用的资源。
//可以声明的资源包括依赖项、第三方插件、maven仓库地址等
repositories {
mavenCentral()
}
dependencies {
classpath ‘com.android.tools.build:gradle:0.12.+‘
}
}
apply plugin: ‘android‘
//在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源
dependencies {
compile fileTree(dir: ‘libs‘, include: ‘*.jar‘)
}
android {
compileSdkVersion 19
buildToolsVersion "19.1.0"
sourceSets {
main {
manifest.srcFile ‘AndroidManifest.xml‘
java.srcDirs = [‘src‘]
resources.srcDirs = [‘src‘]
aidl.srcDirs = [‘src‘]
renderscript.srcDirs = [‘src‘]
res.srcDirs = [‘res‘]
assets.srcDirs = [‘assets‘]
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot(‘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‘)
release.setRoot(‘build-types/release‘)
}
lintOptions {
abortOnError false
}
////////////////////以上代码打出了最简单的包,一般情况下生成了两个包////////////////////
//*-debug-unaligned.apk:未进行zipAlign优化的apk包
//*-release-unsigned.apk:未签名的apk包
//以上两种包都不是正式所需要的包,添加下面代码打出签名包
signingConfigs {
myConfig {
//绝对路径和相对路径都可以
storeFile file("E:\\sjjywork\\key\\key4VipOneToOne\\JyVipKey.keystore")
storePassword "sjjy,vip"
keyAlias "jiayuan_vip_key"
keyPassword "sjjy,vip"
}
}
buildTypes{
release {
//1.添加签名
signingConfig signingConfigs.myConfig
//2.runProguard 执行混淆代码
runProguard true
//混淆规则文件
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-project.txt‘
}
}
//添加了上述代码之后,打出了已经签名的apk:其中xxx-release-unaligned.apk是签名为进行zipAligned优化的包
//xxx-release.apk是签名和zipAlign优化过的包
//添加混淆代码的执行代码如上第二步,就可以实现打出混淆包
//下面的代码开始打批量包
productFlavors {
GooglePlay{
//替换manifest文件中的占位符(placeHolder)
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"GooglePlay"]
}
Store360{
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"Store360" ]
}
//在下面继续添加不同渠道的渠道代码
}
//通过以下方式是批量的设置
// productFlavors.all { flavor ->
// flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
//}
}
tasks.withType(Compile) { options.encoding = "UTF-8" }
<!-- 渠道id,key直接使用umeng的,方便接入umeng sdk -->
<meta-data android:name="UMENG_APPKEY" android:value="YOUR_APP_KEY" ></meta-data>
<!--配置placeHolder(占位符),用于多渠道打包的时候替换-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
至此算是打包的所有流程真正的结束了。加入统计功能的代码,直接根据友盟统计的文档添加相应位置的代码就可以了。
以上参见部分,未完待续....
标签:
原文地址:http://www.cnblogs.com/xgjblog/p/4599381.html