Gradle 編譯環(huán)境

Gradle 是一個開源構(gòu)建自動化工具谢鹊,其設(shè)計(jì)足夠靈活,可以構(gòu)建幾乎任何類型的軟件 介紹

由于Android項(xiàng)目是諸多內(nèi)容的整合, 所以在編譯Android項(xiàng)目時(shí)也需要具備多種環(huán)境:

1双谆、JDK環(huán)境

因?yàn)镚radle 在 JVM 上運(yùn)行返干,您必須安裝 Java 開發(fā)工具包 (JDK) 才能使用它

下載jdk https://jdk.java.net/ 查看下載結(jié)果執(zhí)行 java -version 輸出jdk版本

build.gradle配置jdk環(huán)境

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

2兴枯、Gradle工具和插件環(huán)境

安裝Gradle 參考 https://docs.gradle.org/current/userguide/installation.html
build.gradle配置gradle插件
buildscript {
repositories {
maven { url 'http://sdk.pt.miui.com/miuisdk/maven2/' }
maven { url 'http://sdk.pt.miui.com/miuisdk/miuix/' }
maven { url 'http://artifactory.d.xiaomi.net/artifactory/artifactory-releases/' }
google()
mavenCentral()

}
dependencies {
    classpath 'com.miui.tools.build:gradle:3.4.0'
}

}

Wrapper 是一個腳本,它調(diào)用已聲明的 Gradle 版本,可以快速啟動并運(yùn)行 Gradle 項(xiàng)目矩欠,而無需遵循手動安裝過程

b42c1134-49f9-4dde-90d8-f94c452b656d.png

使用wrapper好處:

  • 在給定的 Gradle 版本上標(biāo)準(zhǔn)化項(xiàng)目财剖,從而產(chǎn)生更可靠和更健壯的構(gòu)建。
  • 為不同的用戶和執(zhí)行環(huán)境(例如 IDE 或持續(xù)集成服務(wù)器)提供新的 Gradle 版本就像更改 Wrapper 定義一樣簡單癌淮。

添加 Gradle wrapper
執(zhí)行 gradle wrapper
// 升級 Wrapper 版本
執(zhí)行 ./gradlew wrapper --gradle-version 7.4.2

成功后形成如下結(jié)構(gòu)
├── a-subproject
│ └── build.gradle
├── settings.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat

gradle-wrapper.properties

1躺坟、distributionUrl是要使用版本的gradle的地址 官方倉庫

gradle的3種版本:

gradle-xx-all.zip是完整版,包含了各種二進(jìn)制文件该默,源代碼文件瞳氓,和離線的文檔。例如栓袖,https://services.gradle.org/distributions/gradle-3.1-all.zip

gradle-xx-bin.zip是二進(jìn)制版匣摘,只包含了二進(jìn)制文件(可執(zhí)行文件),沒有文檔和源代碼裹刮。例如音榜,https://services.gradle.org/distributions/gradle-3.1-bin.zip

gradle-xx-src.zip是源碼版,只包含了Gradle源代碼捧弃,不能用來編譯你的工程赠叼。例如擦囊,https://services.gradle.org/distributions/gradle-3.1-src.zip

2、zipStoreBase和zipStorePath組合在一起嘴办,是下載的gradle-3.1-bin.zip所存放的位置瞬场。

zipStorePath是zipStoreBase指定的目錄下的子目錄。

3涧郊、distributionBase和distributionPath組合在一起贯被,是解壓gradle.zip之后的文件的存放位置

distributionPath是distributionBase指定的目錄下的子目錄。

4妆艘、zipStoreBase和distributionBase有兩種取值:GRADLE_USER_HOME和PROJECT彤灶。

其中,GRADLE_USER_HOME表示用戶目錄批旺。

在windows下是%USERPROFILE%/.gradle幌陕,例如C:\Users<user_name>.gradle\。

在linux下是$HOME/.gradle汽煮,例如~/.gradle搏熄。

PROJECT表示工程的當(dāng)前目錄,即gradlew所在的目錄逗物。

gradlew搬卒、gradlew.bat

gradlew.bat 是bat 腳本,Windows 用戶可以通過它執(zhí)行 Gradle 任務(wù)翎卓,配合gradle文件夾使用。

gradlew是一個shell 腳本摆寄,Unix Linux通過它來執(zhí)行 Gradle 任務(wù)失暴。

更多指南 參考 wrapper

gradle api https://docs.gradle.org/current/javadoc/index.html?overview-summary.html

android gradle plugin api https://developer.android.com/reference/tools/gradle-api

3、Android環(huán)境
運(yùn)行android項(xiàng)目, 需要設(shè)定好Android SDK
local.properties用于配置本地Android SDK目錄, 即Android環(huán)境
sdk.dir="你本地的sdk目錄"

如果本地沒有Android SDK , 參考下面文檔進(jìn)行下載

下載Android IDE IDE指南 更新 IDE 和 SDK 工具 命令行更新sdk

4微饥、NDK環(huán)境
http://www.reibang.com/p/8930df7a82b2

5逗扒、Q&A

  1. 執(zhí)行./gradlew報(bào)錯 "沒有那個文件或目錄"
4c554e70-419d-4dd4-9ad8-6e7a8751f1e7.png

解決辦法: 執(zhí)行g(shù)radle init, 此時(shí)生成了gradle編譯所必須的成員

  1. 執(zhí)行./gradlew build報(bào)錯 "找不到或無法加載主類"
a0dbc2ab-82a6-4a03-852f-9a045b75efa0.png

解決辦法: 執(zhí)行g(shù)radle wrapper

  1. JDK環(huán)境報(bào)錯 "java version"
d683acb7-b6fb-43c2-90b9-5d251b90dd47.png

修改編譯環(huán)境為jdk1.8

  1. 執(zhí)行完gradle wrapper后, 執(zhí)行命令可能報(bào)錯 "gradle version"
830fee91-596d-42ae-8cba-b9d5584d9944.png

解決辦法: 修改gradle版本

distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip

5015ec3d-9aa4-4cda-abda-fe0ef396c3ed.png
a395b6ff-5ac5-4893-abe6-8ca9563dbf15.png
  1. 沒有g(shù)radle-wrapper.properties報(bào)錯
Exception in thread "main" java.lang.RuntimeException: Wrapper properties file '/media/duchao/worK/packages/apps/MiRcs/project/gradle/wrapper/gradle-wrapper.properties' does not exist.
        at org.gradle.wrapper.WrapperExecutor.forWrapperPropertiesFile(WrapperExecutor.java:45)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:60)

解決辦法: 下載成員壓縮包, 放入gradle目錄

  1. 未配置Android sdk報(bào)錯
* What went wrong:
> SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at '/media/duchao/worK/packages/apps/MiRcs/project/local.properties'.

解決辦法: 見local.properties

官方參考文檔 https://developer.android.com/studio/build

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市欠橘,隨后出現(xiàn)的幾起案子矩肩,更是在濱河造成了極大的恐慌,老刑警劉巖肃续,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黍檩,死亡現(xiàn)場離奇詭異,居然都是意外死亡始锚,警方通過查閱死者的電腦和手機(jī)刽酱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞧捌,“玉大人棵里,你說我怎么就攤上這事润文。” “怎么了殿怜?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵典蝌,是天一觀的道長。 經(jīng)常有香客問我头谜,道長赠法,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任乔夯,我火速辦了婚禮砖织,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘末荐。我一直安慰自己侧纯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布甲脏。 她就那樣靜靜地躺著眶熬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪块请。 梳的紋絲不亂的頭發(fā)上娜氏,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機(jī)與錄音墩新,去河邊找鬼贸弥。 笑死,一個胖子當(dāng)著我的面吹牛海渊,可吹牛的內(nèi)容都是我干的绵疲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼臣疑,長吁一口氣:“原來是場噩夢啊……” “哼盔憨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讯沈,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤郁岩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缺狠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體问慎,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年儒老,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝴乔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡驮樊,死狀恐怖薇正,靈堂內(nèi)的尸體忽然破棺而出片酝,到底是詐尸還是另有隱情,我是刑警寧澤挖腰,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布雕沿,位于F島的核電站,受9級特大地震影響猴仑,放射性物質(zhì)發(fā)生泄漏审轮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一辽俗、第九天 我趴在偏房一處隱蔽的房頂上張望疾渣。 院中可真熱鬧,春花似錦崖飘、人聲如沸榴捡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吊圾。三九已至,卻和暖如春翰蠢,著一層夾襖步出監(jiān)牢的瞬間项乒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工梁沧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留檀何,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓趁尼,卻偏偏與公主長得像埃碱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子酥泞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • 前言 這三個知識點(diǎn)不難芝囤,但經(jīng)常用到,如果不看官方文檔辛萍,有時(shí)候并不知道怎么使用悯姊,出現(xiàn)問題也不知道原因,所以有必要做一...
    十思葉閱讀 10,232評論 2 6
  • 說明 本文主要介紹和Gradle關(guān)系密切贩毕、相對不容易理解的配置悯许,偏重概念介紹。部分內(nèi)容是Android特有的(例如...
    jzj1993閱讀 15,649評論 1 62
  • http://www.reibang.com/p/7c288a17cda8 總的來說辉阶,Android的系統(tǒng)體系結(jié)...
    燕京博士閱讀 1,206評論 0 6
  • 是什么先壕? 在語法上是基于Groovy語言的(Groovy 是一種基于JVM的敏捷開發(fā)語言瘩扼,可以簡單的理解為強(qiáng)類型語...
    千山萬水迷了鹿閱讀 99,584評論 4 122
  • 編譯vlc源 官方文檔:https://wiki.videolan.org/AndroidCompile/ 我們按...
    o_30ca閱讀 996評論 0 0