android studio 升级踩坑之路

突发奇想,把android studio升级,真是痛不欲生的回忆啊,我把我踩的坑分享出来希望可以帮助大家.......

本想着学习一下kotlin,但是在安装完插件时,发现低版本的android studio并不能支付,,,上火啊,于是一不做二不休升级!

android studio升级到的版本是3.2.1

然后升级SDK,升级gradle   一系列全套升级!

1.首先是修改的项目下的build.gradle的改变

buildscript {
    repositories {
        google() //新增的
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'  //这个跟android studio版本号一致

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

    }

}

allprojects {
    repositories {
        google()  //新增的
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2.然后是项目下gradle文件夹->gradle-wrapper.properties  这个文件

#Wed Aug 29 11:08:34 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip  //最新的
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

3.修改app  下的build.gradle

 //项目配置改到当前的版本  
 compileSdkVersion 28
 buildToolsVersion '28.0.3'

File-->Project structure,打开如下界面,这个是改整个工程的SDK版本。选择你要的sdk的版本

 

android升级后某认渠道  defaultConfig下配置

flavorDimensions "umeng"

 

android studio3.0之前的配置 

   //给apk添加对应的版本号:
//    applicationVariants.all { variant ->
//        variant.outputs.each { output ->
//            def outputFile = output.outputFile
//            if (outputFile != null && outputFile.name.endsWith('.apk')) {
//                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
//                output.outputFile = new File(outputFile.parent, fileName)
//            }
//        }
//    }
android studio3.0之后的配置
 
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
                outputFileName = fileName
            }
        }
    }

导入包的方式也变了: compile变成了implementation 

 implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation files('libs/snappydb-0.5.0.jar')
    implementation files('libs/alipaySdk-20170922.jar')
    implementation project(':base')
    implementation 'com.android.support:appcompat-v7:28.+'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.yanzhenjie:permission:1.1.2'
    implementation 'com.android.support:design:28.0.0-alpha1'
    implementation 'liji.library.dev:citypickerview:0.7.0'
    implementation 'com.yanzhenjie:album:1.0.3'
    implementation 'com.feezu.liuli:timeselector:1.1.3'
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
    implementation 'cn.jiguang.sdk:jpush:3.1.6'
    implementation 'cn.jiguang.sdk:jcore:1.2.5'
    implementation 'com.androidkun:XTabLayout:1.1.3'
    implementation 'com.contrarywind:Android-PickerView:3.2.5'
    implementation 'com.umeng.sdk:common:latest.integration'
    implementation 'com.umeng.sdk:analytics:latest.integration'
    implementation 'com.jakewharton:butterknife:7.0.1'
    testImplementation 'junit:junit:4.12'

implementation 'com.jakewharton:butterknife:7.0.1'引入的时候会出现问题

需要在 defaultConfig 下配置

javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }

 

然后是自己写的库base  之所以用api 是因为他在库里面不是在自己的项目下  间接引用的时候用api

    api fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    api files('libs/volley.jar')
    api 'com.google.code.gson:gson:2.5'
    api 'com.inkapplications.viewpageindicator:library:2.4.3'
    api files('libs/universal-image-loader-1.8.6-with-sources.jar')
    api files('libs/libammsdk.jar')
    api files('libs/open_sdk_r5509_lite.jar')
    api 'com.android.support:recyclerview-v7:26.0.0-alpha1'
    api 'com.android.support:support-v4:25.3.1'
    api 'com.squareup.okhttp3:okhttp:3.6.0'
    api 'com.umeng.sdk:analytics:7.5.3'

然后所有的都结束的时候程序正常运行,然后发现了奇怪的时候.程序爆红!

所有继承fragmentActivity的界面,所有的生命周期都爆红!  这个图是别人的  我的错误已经没了

发生了这个问题.我就把fragmentactivity 换成了 activity,发现不红了

然后有出现了下面这个问题

 adapter = new TabAdapter(getSupportFragmentManager(), fragments);

getSupportFragmentManager不能用了

注意:

此时要注意是否是在Activity中使用,因为Activity中并没有此方法的定义,必须是继承FragmentActivity或者AppCompatActivity,然后使用。

然后整个项目变动太大了.然后又改回了fragmentactivity

 

 

 

如果出现这两个错误就是缺少v4包   或者有v4还有v7冲突了:

Program type already present: android.support.v4.app.BackStackRecord$Op 

Program type already present: android.support.v4.app.ActionBarDrawerToggle$Delegate
 

android studio会退2.2这个错误就清除了

最后发现了是com.android.support:support-v4:25.3.1  这个包的版本过高. 这个应该是android studio的一个小bug.看着实在难受降低了版本,大功告成! 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值