使用Gradle打包apk - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

使用Gradle打包apk

发表时间:2020-11-13

发布人:葵宇科技

浏览次数:39


前提
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
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的
 dependencies {
        classpath 'com.android.tools.build:gradle:0.14.+'
    }

修改一下。
6.修改项目中的gradle配置
你还需要修改项目目录中的gradle-》wrapper-》gradle-wrapper.properties 修改distributionUrl指向的版本
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
//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']
    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

相关案例查看更多