1. 程式人生 > >關於AndroidStudio升級到3.0以上的問題總結

關於AndroidStudio升級到3.0以上的問題總結

AndroidStudio升級後gradle配置出現的問題

                                                                       (可以 ctrl+F 搜尋 (需改動) 可以快速定位到要改動的位置)

專案的build.gradle裡面有改變

buildscript {
    repositories {
        google()     //(需改動)AS3.0以上這裡要配置
        jcenter()
    }
    dependencies {
//C:\Program Files\Android\Android Studio\gradle\m2repository\com\android\tools\build\gradle
//C:\Program Files\Android\Android Studio 你自己本機的Android Studio路徑(需改動) classpath 'com.android.tools.build:gradle:3.1.2' } } allprojects { repositories { google() //(需改動)AS3.0以上這裡要配置 jcenter() maven { url "https://maven.google.com" } maven { url 'https://dl.bintray.com/oschinaapp/maven/'
} } } task clean(type: Delete) { delete rootProject.buildDir } ext { //這個給module裡的build.gradle配置的常量 compileSdkVersion = 26 buildToolsVersion = "26.1.0" applicationId = "cn.cn.oschinadome" minSdkVersion = 19 targetSdkVersion = 24 versionCode = 288 versionName = "v2.8.8(1708301525)"
supportVersion = '25.1.0' }

專案下的gradle檔案配置

project(專案目錄下)\gradle\wrapper\gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
#目錄:例如 C:\Users\MACHENIKE\.gradle\wrapper\dists 這個在你使用者目錄下的.gradle\wrapper\dists看有沒有
#3.5以上的gradle版本,gradle-4.4-all是我目錄下的
#也可以直接刪除gradle檔案,直接使用線上的gradle

module下的build.gradle檔案需要改動

apply plugin: 'com.android.application'
android {
    compileSdkVersion rootProject.ext.compileSdkVersion     //在專案中的build.gradle ext{}裡面
//   buildToolsVersion rootProject.ext.buildToolsVersion    //(需改動)在AS3.0以上不需要這個配置了

    defaultConfig {
        applicationId rootProject.ext.applicationId
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode rootProject.ext.versionCode
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        versionName rootProject.ext.versionName
//        jackOptions.enabled = true //(需改動) 如果你有這個需註釋掉
    }
    // rename the apk with the version name
//    applicationVariants.all { variant ->  //(需改動)AS3.0之後這個是隻讀,不能這樣修改apk的名字,需要註釋掉
//        variant.outputs.each { output ->
//            output.outputFile = new File(
//                    output.outputFile.parent + "/${variant.buildType.name}",
//                    "dome-osc-android-${variant.versionName}-${variant.buildType.name}.apk".toLowerCase())
//        }
//    }
    //signing files settings
    signingConfigs {
            debug {
                storeFile ""
                storePassword ""
                keyAlias ""
                keyPassword ""
            }
            release {
                storeFile ""
                storePassword ""
                keyAlias ""
                keyPassword ""
            }
    }

    sourceSets { //jni進入專案
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    // 移除lint檢查的error
    lintOptions {
        abortOnError false
    }

    //build type setting
    buildTypes {

        debug {
            zipAlignEnabled false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }

        release {
            minifyEnabled true  //混淆
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            zipAlignEnabled true  //zip演算法壓縮
            signingConfig signingConfigs.release
        }
    }

//    productFlavors {  //(需改動)(如果有的話)新增flavorDimensions "default" dimension "default" 這兩個欄位
//        oschina {
//            manifestPlaceholders = [UMENG_CHANNEL: "oschina"]
//        }
//    }

//或者另一種改動請檢視(https://blog.csdn.net/small_technical/article/details/72782671) 改動的 start
    flavorDimensions "default"
    productFlavors {
        oschina {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL: "oschina"]
        }
    }
    //改動的 end
}

dependencies {
    compile project(':open')      //open專案的引用
     //(需改動)這裡的所有 compile 變為 implementation或者api 
     //api(如果open裡引用裡另一個A專案,implementation的話不能使用A專案裡的介面,api的話就可以使用A專案的介面) 
     //Ctrl+R 快捷鍵 按鍵把  (compile ) 替換所有為 (implementation ) (區分大小寫)
     //例如(改動後的)  implementation "com.android.support:design:$rootProject.ext.supportVersion"   
    compile "com.android.support:design:$rootProject.ext.supportVersion"   
    compile fileTree(include: ['*.jar'], dir: 'libs')

    //(需改動)這兩個也要替換  這個為替換前的
//    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
//        exclude group: 'com.android.support', module: 'support-annotations'
//    })  //android測試框架
//    testCompile 'junit:junit:4.12'  //測試框架
    //替換後的為
    testImplementation 'junit:junit:4.12'  //測試框架
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}