天天看点

关于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())
//        }
//    }
		applicationVariants.all { variant ->
                variant.outputs.all { output ->	//以前的each改为all
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        def fileName = "dev_测试_v${defaultConfig.versionName}_${defaultConfig.versionCode}_${releaseTime()}.apk"
                        outputFileName = fileName	//对输出文件名直接赋值,不用new File
                    }
                }
            }
    //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'
	
}

           

继续阅读