Android studio 版本升級 導致專案報錯 終極解決方案

2020-08-12 02:00:43
這個Android studio調了一天,終於不報錯了…

不管你是升級,還是別的專案拷貝,首先檢查Gradle,而且跟Android studio的版本有關。

1. 版本,classpath改成新的

在这里插入图片描述
在这里插入图片描述

studio安裝好後,一個SDK目錄,一個軟體安卓目錄
在这里插入图片描述

2. 下載Gradle,設定自定義Gradle

先隨便新建一個安卓專案,重要的是:要看新建專案後他預設使用的Gradle版本是多少
這裏預設的是 6.1.1.all,下載版本高了也不行!然後去官網https://services.gradle.org/distributions/ 下載6.1.1.all.zip,建議用FDM下載比較快

在这里插入图片描述
下載後,在Android studio安裝目錄下新建資料夾gradle,開啓設定,如下設定剛纔的gradle目錄,點ok
在这里插入图片描述
然後把下載的6.1.1zip包丟到那個gradle目錄,設定改成這樣
distributionUrl=file:///D:/Android_Studio/gradle/gradle-6.1.1-all.zip

在这里插入图片描述
然後sync now,他會在這個目錄自動下載這四個資料夾,然後把6.1.1zip包再丟到wrapper/dists裏面,他會自動解壓
在这里插入图片描述
在这里插入图片描述
gradle就設定好了!現在可以把C槽的C:\Users\xxx 下面 下麪的.gradle刪掉了、
檢視sdk下載好了沒,我這下了三個sdk
在这里插入图片描述

3. build.gradle(module:app) 設定

apply plugin: 'com.android.application'   	//宣告是安卓程式
apply plugin: 'org.greenrobot.greendao'

android {
    //lint檢查
    lintOptions {
        checkReleaseBuilds false    	//true--所有正式版構建執行規則生成崩潰的lint檢查,如果有崩潰問題將停止構建
        abortOnError false         		//true--錯誤發生後停止gradle構建
    }
    //aapt編譯資原始檔設定
    aaptOptions.cruncherEnabled = false     //關閉Android Studio的對PNG .9圖合法性檢查
    
    compileSdkVersion 29           //編譯sdk的版本 === 對應sdk目錄下 D:\Android_SDK\platforms裏面的版本
    buildToolsVersion = '30.0.1'   //構建工作的版本 === 對應sdk目錄下 D:\Android_SDK\build-tools裏面的版本
    defaultConfig {
        applicationId "com.xxxxxxx.xxx"     //專案包名
        minSdkVersion 25                    //專案最低相容版本
        targetSdkVersion 29                 //專案的目標版本    一般跟compileSdkVersion一樣
        versionCode 1                       //版本號
        versionName "1.0"                   //版本名
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"   //測試用
    }
    buildTypes {
        release {
            //是否對專案程式碼進行混餚
            minifyEnabled false
            //指定混餚使用的規則檔案:proguard-android.txt是通用規則,proguard-rules.pro 編寫專案特有的規則
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    //指定jdk版本
    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
}

//greenDao設定
greendao {
    schemaVersion 1                       //數據庫版本
    daoPackage 'com.xxxxxxx.xxx.greenDao' //生成的位置
    generateTests false                   //設定爲true以自動生成單元測試。
    targetGenDirTests 'src.main.java'     //應儲存生成的單元測試的基本目錄
}

//已經用上androidx了
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')   //宣告本地依賴,將libs下所有jar包添到專案中
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.2.0'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    //數據庫依賴
    implementation 'org.greenrobot:greendao:3.3.0'

    //註解控制元件butterknife
    implementation 'com.jakewharton:butterknife:10.2.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
    
    //lombok,Androidstudio要下載外掛
    implementation 'org.projectlombok:lombok:1.18.12'
    annotationProcessor 'org.projectlombok:lombok:1.18.12'
}

3. build.gradle(Project: xxx) 設定

buildscript {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'
        
        //數據庫GreenDao依賴,這個好像版本也要跟gradle版本相容,不然報錯
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
        //控制元件註解,這個好像版本也要跟gradle版本相容,不然報錯
        classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
    }
}

//全域性的設定,專案本身需要的依賴庫
allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://jitpack.io' }   //設定私有maven庫
    }
}

// 執行gradle clean時,執行此處定義的task。
// 該任務繼承自Delete,刪除根目錄中的build目錄。
// 相當於執行Delete.delete(rootProject.buildDir)。
// gradle使用groovy語言,呼叫method時可以不用加()。
task clean(type: Delete) {
    delete rootProject.buildDir
}

AndroidManifest.xml 看看裏面的包名等等
settings.gradle 看看裏面 include ‘:app’
local.properties 裏面設定sdk的目錄 sdk.dir=D\:\\Android_SDK
把這些設定都調對,專案基本不會報錯了。其他的錯誤就是依賴問題!