国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

gradle 詳解

2019-11-06 09:59:04
字體:
來源:轉載
供稿:網友

前段時間忽然發現自己對于Android studio的Gradle打包并不了解,這篇博客參考網上眾多教程,為大家詳細介紹Gradle。

Gradle簡介

We would like to introduce Gradle to you, a build system that we think is a quantum leap for build technology in the java (JVM) world. Gradle PRovides:

A very flexible general purpose build tool like Ant.Switchable, build-by-convention frameworks a la Maven. But we never lock you in!Very powerful support for multi-project builds.Very powerful dependency management (based on Apache Ivy).Full support for your existing Maven or Ivy repository infrastructure.Support for transitive dependency management without the need for remote repositories or pom.xml and ivy.xml files.Ant tasks and builds as first class citizens.Groovy build scripts.A rich domain model for describing your build。上面這段是grade官方介紹的grade的特性:一個像 Ant 一樣的靈活的構建工具 一種可切換的, 像 maven 一樣的基于合約構建的框架 支持強大的多工程構建 支持強大的依賴管理(基于 ApacheIvy ) 支持已有的 maven 和 ivy 倉庫 支持傳遞性依賴管理, 而不需要遠程倉庫或者 pom.xml 或者 ivy 配置文件 優先支持 Ant 式的任務和構建 基于 groovy 的構建腳本 有豐富的領域模型來描述你的構建

gradle屬于任務驅動型構建工具,它的構建過程是基于Task的。Gradle是以 Groovy 語言為基礎,面向Java應用為主。基于DSL(領域特定語言)語法的自動化構建工具。

Gradle安裝與環境變量配置

。。。。。。。。。略!!!

網上有好多關于Windows,linux,MAC的grade安裝與配置的教程這里就不寫了。

Gradle腳本構建(build.gradle)

Gradle中的所有東西都是圍繞兩個基本概念:項目和任務。

每個Gradle構建都是由一個或多個項目組成。一個項目代表什么,取決于你用Gradle正在做的。比如,一個項目可能代表一個庫或一個網絡應用。它可能代表一個由其他項目產生的一個或多個jar包打包d一個zip包。一個項目不需要代表一個事物而被構建。它可以代表一個事物而被做出來,比如部署你的應用到暫存區或產品環境。不要擔心這個現在是否好像有一點含糊。Gradle的通過約定來構建的功能支持為一個項目添加一個更加具體的定義。

下面介紹一下build.gradle文件:

[java] view plain copy print?在CODE上查看代碼片apply plugin: ‘com.android.application’//說明module的類型,com.android.application為程序,com.android.library為庫  android {  compileSdkVersion 22//編譯的SDK版本  buildToolsVersion ”22.0.1”//編譯的Tools版本  defaultConfig {//默認配置  applicationId ”com.nd.famlink”//應用程序的包名  minSdkVersion 8//支持的最低版本  targetSdkVersion 19//支持的目標版本  versionCode 52//版本號  versionName ”3.0.1”//版本名  }  sourceSets {//目錄指向配置  main {  manifest.srcFile ’AndroidManifest.xml’//指定AndroidManifest文件  java.srcDirs = [’src’]//指定source目錄  resources.srcDirs = [’src’]//指定source目錄  aidl.srcDirs = [’src’]//指定source目錄  renderscript.srcDirs = [’src’]//指定source目錄  res.srcDirs = [’res’]//指定資源目錄  assets.srcDirs = [’assets’]//指定assets目錄  jniLibs.srcDirs = [’libs’]//指定lib庫目錄  }  debug.setRoot(’build-types/debug’)//指定debug模式的路徑  release.setRoot(’build-types/release’)//指定release模式的路徑  }  signingConfigs {//簽名配置  release {//發布版簽名配置  storeFile file(”fk.keystore”)//密鑰文件路徑  storePassWord ”123”//密鑰文件密碼  keyAlias ”fk”//key別名  keyPassword ”123”//key密碼  }  debug {//debug版簽名配置  storeFile file(”fk.keystore”)  storePassword ”123”  keyAlias ”fk”  keyPassword ”123”  }  }  buildTypes {//build類型  release {//發布  minifyEnabled true//混淆開啟  proguardFiles getDefaultProguardFile(’proguard-android.txt’), ‘proguard-project.txt’//指定混淆規則文件  signingConfig signingConfigs.release//設置簽名信息  }  debug {//調試  signingConfig signingConfigs.release  }  }  packagingOptions {  exclude ’META-INF/ASL2.0’//排除一些文件  exclude ’META-INF/LICENSE’  exclude ’META-INF/NOTICE’  exclude ’META-INF/MANIFEST.MF’  }  lintOptions {  abortOnError false//lint時候終止錯誤上報,防止編譯的時候莫名的失敗  }  }  dependencies {  compile fileTree(dir: ’libs’, exclude: [‘android-support*.jar’], include: [‘*.jar’])   //編譯lib目錄下的.jar文件  compile project(’:Easylink’)//編譯附加的項目  compile ’com.nostra13.universalimageloader:universal-image-loader:1.9.3’//編譯來自Jcenter的第三方開源庫  }  
apply plugin: 'com.android.application'//說明module的類型,com.android.application為程序,com.android.library為庫android {compileSdkVersion 22//編譯的SDK版本buildToolsVersion "22.0.1"http://編譯的Tools版本defaultConfig {//默認配置applicationId "com.nd.famlink"http://應用程序的包名minSdkVersion 8//支持的最低版本targetSdkVersion 19//支持的目標版本versionCode 52//版本號versionName "3.0.1"http://版本名}sourceSets {//目錄指向配置main {manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件java.srcDirs = ['src']//指定source目錄resources.srcDirs = ['src']//指定source目錄aidl.srcDirs = ['src']//指定source目錄renderscript.srcDirs = ['src']//指定source目錄res.srcDirs = ['res']//指定資源目錄assets.srcDirs = ['assets']//指定assets目錄jniLibs.srcDirs = ['libs']//指定lib庫目錄}debug.setRoot('build-types/debug')//指定debug模式的路徑release.setRoot('build-types/release')//指定release模式的路徑}signingConfigs {//簽名配置release {//發布版簽名配置storeFile file("fk.keystore")//密鑰文件路徑storePassword "123"http://密鑰文件密碼keyAlias "fk"http://key別名keyPassword "123"http://key密碼}debug {//debug版簽名配置storeFile file("fk.keystore")storePassword "123"keyAlias "fk"keyPassword "123"}}buildTypes {//build類型release {//發布minifyEnabled true//混淆開啟proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆規則文件signingConfig signingConfigs.release//設置簽名信息}debug {//調試signingConfig signingConfigs.release}}packagingOptions {exclude 'META-INF/ASL2.0'//排除一些文件exclude 'META-INF/LICENSE'exclude 'META-INF/NOTICE'exclude 'META-INF/MANIFEST.MF'}lintOptions {abortOnError false//lint時候終止錯誤上報,防止編譯的時候莫名的失敗}}dependencies {compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])   //編譯lib目錄下的.jar文件compile project(':Easylink')//編譯附加的項目compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//編譯來自Jcenter的第三方開源庫}

Gradle常用命令

直接執行gradle build會生成debug包和release包如果不想要debug包可以使用gradleasR命令。

上面大家接觸了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 這里注意是./gradlew./代表當前目錄,gradlew代表 gradlewrapper,意思是gradle的一層包裝,大家可以理解為在這個項目本地就封裝了gradle,即gradle wrapper,在9GAG/gradle/wrapper/gralde-wrapper.properties文件中聲明了它指向的目錄和版本。只要下載成功即可用grdlew wrapper的命令代替全局的gradle命令。z理解了gradlewrapper的概念,下面一些常用命令也就容易理解了。

·      ./gradlew-v版本號

·      ./gradlewclean清除9GAG/app目錄下的build文件夾

·      ./gradlewbuild檢查依賴并編譯打包

這里注意的是 ./gradlew build 命令把debug、release環境的包都打出來,如果正式發布只需要打Release的包,該怎么辦呢,下面介紹一個很有用的命令 assemble,如

·      ./gradlewassembleDebug編譯并打Debug包

·      ./gradlewassembleRelease編譯并打Release的包

除此之外,assemble還可以和productFlavors結合使用,具體在下一篇多渠道打包進一步解釋。

·      ./gradlewinstallRelease Release模式打包并安裝

·      ./gradlewuninstallRelease卸載Release模式包

local.properties文件:

這個文件主要是配置sdk、 ndk路徑,格式必須符合要求。

settings.gradle文件

include ‘:app’

該文件中就僅僅只包含了一句話,在你的項目中如果有多個Model存在的時候,就可以選擇包含哪些進行編譯。 

這個文件是全局的項目配置文件,里面主要聲明一些需要加入gradle的module,如:

include’:app’, ‘:extras:ShimmerAndroid’

文件中的 appextras:ShimmerAndroid 都是module,如果還有其他module都需要按照如上格式加進去。

gradle-wrapper.properties 文件

可以看到里面聲明了gradle的目錄與下載路徑以及當前項目使用的gradle版本,這些默認的路徑我們一般不會更改的,這個文件里指明的gradle版本不對也是很多導包不成功的原因之一。

default.properties文件

我們看紅色框中圈的兩句,第一句說:不要修改這個文件,您的修改將被清除。第二句說:這個文件必須被版本控制系統檢查。

意思就說這個文件我們不能動。這個文件的內容是配置混淆文件及android系統版本。

project.properties文件

這個文件和上個文件一樣,我們不能修改。

參考資料

http://avatarqing.github.io/Gradle-Plugin-User-Guide-Chinese-Verision/basic_project/general_tasks.html

http://wiki.jikexueyuan.com/project/GradleUserGuide-Wiki/using_ant_from_gradle/importing_an_ant_build.html

http://www.2cto.com/kf/201501/366464.html

https://segmentfault.com/a/1190000002439306

http://doc.okbase.net/tanlon/archive/125036.html

http://www.android100.org/html/201507/12/164312.html


上一篇:mqtt

下一篇:方便開發的軟件工具

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 裕民县| 正安县| 云阳县| 汉寿县| 泗水县| 伊吾县| 靖西县| 社旗县| 岳阳市| 四平市| 安徽省| 和林格尔县| 黑山县| 乐至县| 石首市| 牡丹江市| 南丰县| 精河县| 波密县| 错那县| 宿州市| 外汇| 麻城市| 萨嘎县| 皮山县| 渭南市| 徐闻县| 华安县| 逊克县| 台中县| 靖安县| 高台县| 栖霞市| 永善县| 尚义县| 法库县| 镇坪县| 临邑县| 扎兰屯市| 招远市| 子长县|