Android Studio 2.3.3 如何成功編譯 3.0+ 項(xiàng)目

正如從 2017 跨 2018 一樣树姨,Android Studio 也要從 2+ 升級(jí)至 3+ 匿辩。

但是由于條件限制浑侥,不能及時(shí)升級(jí)的話级解,如何打開一個(gè) 3+ 項(xiàng)目贰锁?
我用 Picasso 來進(jìn)行直播一下窃祝,從 GitHub 導(dǎo)入到 Android Studio 后


編譯錯(cuò)誤一.png

原因:是由于項(xiàng)目編譯時(shí)所使用的 Gradle 插件更新至 3+ 了沛简,那么對(duì)應(yīng)的 Android Studio 也需要同步更新才行秽晚,是有匹配關(guān)系的呕缭。

首先堵泽,我很自然的打開了項(xiàng)目的全局 build.gradle 文件,想將 Gradle 插件版本降低成 2.3.3

插一嘴恢总,我們要分清楚什么是 Gradle 什么是 Gradle 插件迎罗,兩者不能混為一談。>>>不是很清楚的戳這里<<<

build.gradle 中依賴的 classpath 'com.android.tools.build:gradle:2.3.3'
是編譯所需要的 Gradle 插件版本(下載AS時(shí)會(huì)下載)
gradle-wrapper.properties 中的distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip
是 Android Studio 中使用了Gradle Wrapper 指定 Gradle 版本進(jìn)行項(xiàng)目構(gòu)建

想具體了解的也可以去全面熟悉一下 Gradle

發(fā)現(xiàn)結(jié)構(gòu)有點(diǎn)不對(duì)勁片仿,長得不一樣纹安,以前我們的項(xiàng)目該文件一般長這樣

// 依賴的插件
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

現(xiàn)在 Picasso 項(xiàng)目的 build.gradle 長這樣

subprojects {
  buildscript {
    repositories {
      jcenter()
      google()
    }
  }
  repositories {
    jcenter()
    google()
  }

  plugins.apply('checkstyle')

  task('checkstyle', type: Checkstyle) {
    configFile rootProject.file('checkstyle.xml')
    source 'src/main/java'
    ignoreFailures false
    showViolations true
    include '**/*.java'

    classpath = files()
  }

  group = GROUP
  version = VERSION_NAME

  afterEvaluate {
    tasks.findByName('check').dependsOn('checkstyle')
  }
}

apply from: rootProject.file('gradle/dependencies.gradle')

現(xiàn)在連 classpath 'com.android.tools.build:gradle:2.3.3' 都看不到了,一臉懵逼.jpg
傷心過度又眼力過好的我在最后一行瞟了一眼這個(gè)

apply from: rootProject.file('gradle/dependencies.gradle')

根據(jù)相對(duì)路徑找到該文件:


dependencies.gradle.png

打開一看:

ext {
  compileSdkVersion = 26
  buildToolsVersion = '26.0.2'
  minSdkVersion = 14
  targetSdkVersion = 26
  sourceCompatibilityVersion = JavaVersion.VERSION_1_7
  targetCompatibilityVersion = JavaVersion.VERSION_1_7
  okhttpVersion = '3.6.0'
  supportLibrariesVersion = '26.0.1'

  dep = [
      androidPlugin      : 'com.android.tools.build:gradle:3.0.1',
      okhttp             : "com.squareup.okhttp3:okhttp:$okhttpVersion",
      mockWebServer      : "com.squareup.okhttp3:mockwebserver:$okhttpVersion",
      pollexor           : 'com.squareup:pollexor:2.0.4',
      supportV4          : "com.android.support:support-v4:$supportLibrariesVersion",
      supportAnnotations : "com.android.support:support-annotations:$supportLibrariesVersion",
      junit              : 'junit:junit:4.12',
      truth              : 'com.google.truth:truth:0.36',
      robolectric        : 'org.robolectric:robolectric:3.1',
      mockito            : 'org.mockito:mockito-core:1.9.5'
  ]

  isCi = "true" == System.getenv('CI')
}

終于發(fā)現(xiàn)了

androidPlugin      : 'com.android.tools.build:gradle:3.0.1'

那就將其改成我們熟悉的 2.3.3

編譯走起砂豌。厢岂。。噠噠噠阳距。塔粒。。

編譯錯(cuò)誤二.png

根據(jù)路徑找到 picasso moudle 下的 build.gradle 在 dependencies {} 中可找到 api

dependencies {
  api dep.okhttp
  compileOnly dep.supportAnnotations
  testImplementation dep.junit
  testImplementation dep.truth
  testImplementation dep.supportV4
  testImplementation dep.robolectric
  testImplementation dep.mockito
  testImplementation dep.mockWebServer
}

Google 一下便知 這是 Gradle 3.0.0 以上的編譯語法筐摘,我們還是要改成以前的窗怒,修改規(guī)則:

  • api / compileOnly / implementation ——> compile
  • testImplementation ——> testCompile
    然后 Gradle 就會(huì)去下載所需的依賴了,再編譯就成功了蓄拣,噢耶扬虚!

如果還會(huì)出現(xiàn)其他錯(cuò)誤也可以根據(jù)提示,一步步來球恤,一些項(xiàng)目用到的依賴或者Support 版本是不是更新到最新的了辜昵,好好檢查下,一定可以成功跑起來咽斧。

例如檢查 dependencies.gradle 中的


support 版本是否更新堪置?.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末躬存,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舀锨,更是在濱河造成了極大的恐慌岭洲,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎匿,死亡現(xiàn)場(chǎng)離奇詭異盾剩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)替蔬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門告私,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人承桥,你說我怎么就攤上這事驻粟。” “怎么了凶异?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵蜀撑,是天一觀的道長。 經(jīng)常有香客問我剩彬,道長酷麦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任襟衰,我火速辦了婚禮,結(jié)果婚禮上粪摘,老公的妹妹穿的比我還像新娘瀑晒。我一直安慰自己,他們只是感情好徘意,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布苔悦。 她就那樣靜靜地躺著,像睡著了一般椎咧。 火紅的嫁衣襯著肌膚如雪玖详。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天勤讽,我揣著相機(jī)與錄音蟋座,去河邊找鬼。 笑死脚牍,一個(gè)胖子當(dāng)著我的面吹牛向臀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诸狭,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼券膀,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼君纫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起芹彬,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤蓄髓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舒帮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體会喝,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年会前,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了好乐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓦宜,死狀恐怖蔚万,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情临庇,我是刑警寧澤反璃,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站假夺,受9級(jí)特大地震影響淮蜈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜已卷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一梧田、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侧蘸,春花似錦裁眯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晌坤,卻和暖如春逢艘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骤菠。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工它改, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人商乎。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓搔课,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子爬泥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,309評(píng)論 25 707
  • 太長了柬讨,還是轉(zhuǎn)載吧...今天在看博客的時(shí)候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個(gè)項(xiàng)目Android開源...
    龐哈哈哈12138閱讀 20,214評(píng)論 3 283
  • 文章摘要1、創(chuàng)建一個(gè)新的Android Studio項(xiàng)目2境输、查看生成的Gradle文件列表3蔗牡、查看頂級(jí)Gradle...
    Android那些事兒閱讀 5,268評(píng)論 0 52
  • 思涵創(chuàng)業(yè)平臺(tái)第四期領(lǐng)導(dǎo)人培訓(xùn)學(xué)員辩越; 思涵創(chuàng)業(yè)平臺(tái)資深講師; 安利(中國)高級(jí)營養(yǎng)經(jīng)理信粮; 從事科研工作20多年黔攒,曾白...
    財(cái)富健康1閱讀 133評(píng)論 0 0
  • 2012年,在去拉薩的路上遇到了寶馬車隊(duì)强缘,摩托車督惰,保障車全是路虎,他們不是全程騎行旅掂,而是遇到風(fēng)景好的路段才騎赏胚,路段...
    牛哥語錄閱讀 693評(píng)論 0 0