Android Gradle项目 打包,【Android】使用Gradle打包apk

前提

Eclipse 4.4.1

ADT 23.0.4

Gradle 2.2.1

流程:

1.安装gradle以及配置环境变量就不多说了,网上搜一下一大堆。

2.首先在eclipse中选中的自己项目,然后export-》Android-》Genearte Gradle build

files

此时,会在项目文件的最下面会出现一个build.gradle的文件,这个就是gradle的自动打包的配置文件。

3.我们还需要把项目转为为Gradle项目(如果你创建项目的时候以及功能选中了Gradle项目,就忽略这个步骤),选中自己的项目,右击鼠标Configure->Conver

to Gradle Project。稍等一会,项目就会自动转化成功。此时你再右击项目的时候就会出现Gradle这个选项。

4.我们还需要更新一下Gradle的引用资源,以免打包的时候出现资源文件丢失,右击Gradle-》Refresh

All。如果出现无法找到资源文件,检查一下项目的Properties的Java

Path的Resource有没有引用项目的gen和src目录。

5.配置build.gradle

[html] view plain

copy

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'com.android.tools.build:gradle:0.14.+'

}

}

apply plugin: 'android'

dependencies {

compile fileTree(dir: 'libs', include: '*.jar')

....//你所应用的包,这里是每个项目不同,不需要更改

}

android {

compileSdkVersion 17

buildToolsVersion "21.1.2"

signingConfigs {

myConfig{

storeFile file("/home/eminem/my.keystore")  //双引号里面填是签名文件的绝对路径,我这里的是Ubuntu系统

storePassword "签名的密码"

keyAlias "包名"

keyPassword "签名应用的密码"

}

}

buildTypes{

release {

signingConfig signingConfigs.myConfig

}

}

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')

packagingOptions {

exclude 'META-INF/DEPENDENCIES'

exclude 'META-INF/NOTICE'

exclude 'META-INF/LICENSE'

exclude 'META-INF/LICENSE.txt'

exclude 'META-INF/NOTICE.txt'

}

lintOptions {

<

span

style

=

"white-space:pre"

>

span

>

abortOnError false

}

}

}

修改完毕保存。

注意:如果你的项目引用了一些Library

Project,你还需要吧整个项目目录最外层的项目目录中的build.gradle的

[html]

view plaincopy

dependencies {

classpath 'com.android.tools.build:gradle:0.14.+'

}

修改一下。

6.修改项目中的gradle配置

你还需要修改项目目录中的gradle-》wrapper-》gradle-wrapper.properties

修改distributionUrl指向的版本

[html]

view plaincopy

distributionUrl

=

http

\://services.gradle.org/distributions/gradle-2.1-all.zip

7.修改完毕,在终端或者windows下的运营中,打开项目的路径,执行gradle clean

等built的success后再执行gradle build。打包成功后,会在项目的build-》outputs-》apk

在这个目录可以看到四个apk,分辨是debug版,debug未签名版,发布签版本,发布未签版。那需要的apk去用就。

其他:如果你的项目中调用jni,也就是包含了so文件,这个时候你还需要添加这些内容

在progurad-project.txt

[html]

view plaincopy

//noinspection all

task copyNativeLibs(type: Copy) {

// third party lib so

from(new File(projectDir, 'libs')) { include 'armeabi/*.so' }

into new File(buildDir, 'native-libs')

}

tasks.withType(JavaCompile) {

compileTask ->

//noinspection all

compileTask.dependsOn copyNativeLibs

}

//noinspection all

tasks.withType(com.android.build.gradle.tasks.PackageApplication) {

pkgTask ->

pkgTask.jniFolders

=

new

HashSet

<

File

>

()

pkgTask.jniFolders.add(new File(buildDir, 'native-libs'))

}

在build.gradle中的sourceSets-》main中添加jniLibs.srcDirs=['libs']

[html]

view plaincopy

sourceSets {

main {

manifest.srcFile 'AndroidManifest.xml'

java.srcDirs

= ['src']

resources.srcDirs

= ['src']

aidl.srcDirs

= ['src']

renderscript.srcDirs

= ['src']

res.srcDirs

= ['res']

assets.srcDirs

= ['assets']

jniLibs.srcDirs

= ['libs']

}

关于adt的版本跟gradle的对应关系,参考这篇文章

http://blog.csdn.net/qq634416025/article/details/40361931

P.S 最近新浪博客在改版,看不惯的点这里我的CSDN博客:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值