使用Gradle打包apk
發表時間:2020-11-13
發布人:葵宇科技
浏覽次數:39
前提
Eclipse 4.4.1
ADT 23.0.4
Gradle 2.2.1
流程:
1.安裝gradle以及配置環境變量就不多說了,網上搜一下(xià)一大堆。
2.首先在eclipse中(zhōng)選中(zhōng)的自己項目,然後export-》Android-》Genearte Gradle build files
此時,會在項目文(wén)件的最下(xià)面會出現一個(gè)build.gradle的文(wén)件,這個(gè)就是gradle的自動(dòng)打包的配置文(wén)件。
3.我們還需要把項目轉為為Gradle項目(如(rú)果你(nǐ)創建項目的時候以及功能選中(zhōng)了Gradle項目,就忽略這個(gè)步驟),選中(zhōng)自己的項目,右擊鼠标Configure->Conver to Gradle Project。稍等一會,項目就會自動(dòng)轉化成功。此時你(nǐ)再右擊項目的時候就會出現Gradle這個(gè)選項。
4.我們還需要更新一下(xià)Gradle的引用資(zī)源,以免打包的時候出現資(zī)源文(wén)件丢失,右擊Gradle-》Refresh All。如(rú)果出現無法找到資(zī)源文(wén)件,檢查一下(xià)項目的Properties的Java Path的Resource有沒有引用項目的gen和(hé)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') ....//你(nǐ)所應用的包,這裡是每個(gè)項目不同,不需要更改 } android { compileSdkVersion 17 buildToolsVersion "21.1.2" signingConfigs { myConfig{ storeFile file("/home/eminem/my.keystore") //雙引号裡面填是簽名文(wén)件的絕對路(lù)徑,我這裡的是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 } } }
修改完畢保存。
注意:如(rú)果你(nǐ)的項目引用了一些Library Project,你(nǐ)還需要吧整個(gè)項目目錄最外層的項目目錄中(zhōng)的build.gradle的
dependencies { classpath 'com.android.tools.build:gradle:0.14.+' }
修改一下(xià)。
6.修改項目中(zhōng)的gradle配置
你(nǐ)還需要修改項目目錄中(zhōng)的gradle-》wrapper-》gradle-wrapper.properties 修改distributionUrl指向的版本
static/file/attachment;filename=xxx.html
7.修改完畢,在終端或者windows下(xià)的運營中(zhōng),打開項目的路(lù)徑,執行gradle clean 等built的success後再執行gradle build。打包成功後,會在項目的build-》outputs-》apk
在這個(gè)目錄可(kě)以看到四個(gè)apk,分辨是debug版,debug未簽名版,發布簽版本,發布未簽版。那需要的apk去用就。
其他:如(rú)果你(nǐ)的項目中(zhōng)調用jni,也就是包含了so文(wén)件,這個(gè)時候你(nǐ)還需要添加這些内容
在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中(zhōng)的sourceSets-》main中(zhōng)添加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'] }
關(guān)于adt的版本跟gradle的對應關(guān)系,參考這篇文(wén)章
http://blog.csdn.net/qq634416025/article/details/40361931