android2.2项目迁移到AS4.2

一、准备

1.升级AS

将AS更新至 AS 3.2及以上,我用的是4.2.1

2.Gradle 版本改为 4.6及以上,项目下gradle/wrapper/gradle-wrapper.propertie文件中的distributionUrl改为:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

3.升级插件版本:

buildscript{
  dependencies {
    classpath 'com.android.tools.build:gradle:3.3.1'
  }
}
4.修改SdkVersion 

compileSdkVersion 版本升级到 28 及以上buildToolsVersion 版本改为 28.0.2 及以上。

android{
  compileSdkVersion 28
}
 

  1. compileSdkVersion: 29

  2. targetSdkVersion : 29

  3. buildToolsVersion "29.0.0"

 

5.在gradle.properties文件中添加下列项。

# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true

二、迁移

1、使用 Migrate to androidx

如果是AS 3.2或更高版本,则提供了一键迁移,选择菜单Refactor-> Migrate to AndroidX,会提示备份当前工程,勾选Backup project as Zip file,可以自动帮你备份。

  

直接File->Invalidate Caches / restart,重新启动。

三、项目改动

这波操作以后,你的项目就会有大变动了:

例如:原来的android.xxx.xxx.28.0.2全部变为androidx.xxx.xxx.1.0.0;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
 
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.AppCompatTextView;

包更改对应关系,可以看官网:

https://developer.android.google.cn/jetpack/androidx/migrate/class-mappings

可以下载gradle:https://services.gradle.org/distributions/

 

改变后有的依赖包可以改变过来,但是有的需要手动修改,特别是需要java文件和XML文件;本人改完Java文件后,编译没错,但是就是运行不起来,结果发现布局XML文件中的依赖包也需要改。尽量检查所有文件(配置文件等);

例如:

旧版本android包

java 代码:
//import android.support.v4.view.PagerAdapt
//import android.support.v4.view.ViewPager;

新版本androidx包中改为

import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

 

下拉刷新swiperefreshlayout

导入swiperefreshlayout库

implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"

使用:androidx.swiperefreshlayout.widget.SwipeRefreshLayout

 

android:line 不推荐使用。

替换为:android:singleLine="true"

 

android.support.v4.content.FileProvider

改为:androidx.core.content.FileProvider 即可

 

四、解决各种问题’

1、AndroidStudio Gradle 解决Error:All flavors must now belong to a named flavor dimension. Learn more at

是(Gradle)这个插件现在(3.0.0)需要将你原来所有的flavor进行统一管理,用属性名flavor dimension进行配置,即使你只有一维属性也需要这样做,否则你就会得到如题的错误。解决的方式就是首先你需要用flavorDimensions这个属性声明一个或多个维度,然后,给每个flavor分配一个你已经声明好的维度(就像下面的例子中给出的)。因为这个插件会为你自动匹配依赖所以你应该仔细的命名你的flavor dimension是,最好不要太随意。这样做的好处就是让你对你本地的代码和资源与它们相应版本的App进行匹配时更具可控性。其实就是进行版本差异化开发时,不同版本的App能够很好的访问与它相对应的资源(比如图片,字符串)和依赖库之类。

读不懂没关系,看个大概或者google翻译,然后照猫画虎的去做,如图:

其中,flavorDimensions这个属性在模块(module,一般就是项目中的app目录)下的build.gradle文件的android{}节点中任意一个位置写就行,里面的参数就是你原来想要配置的多个flavor,比如xiaomi{},360{},anzhi{}等等,这里写成多个字符串就行了,是可变参数。比如这例子中只有一个FUN。
然后就可以像原来一样在productFlavors{}节点中使用这个维度(dimension)了,它里面的这个大括号的名字(FUN)是你自己随便起的,不一定要和里面的dimension相同,里面的dimension FUN就是flavorDimensions中的一个。

————————————

 

注意:flavorDimensions中带括号;

————
版权声明:本文为CSDN博主「Builder_Tony」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Builder_Taoge/article/details/78406734

2.Disable Gradle 'offline mode' and sync project

需要添加依赖:goole()

allprojects {
    repositories {
        mavenCentral()
        jcenter()
        maven { url "https://jitpack.io" }
        google()
    }
}
buildscript {
    repositories {
        google()
        jcenter()
        jcenter { url "http://jcenter.bintray.com/" }//关键
        maven { url 'https://maven.fabric.io/public' }//关键
        maven { url 'https://jitpack.io' }//关键
        maven { url 'https://maven.fabric.io/public' }//关键
        maven { url "https://maven.google.com" }//关键
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath 'com.bugtags.library:bugtags-gradle:latest.integration'
        classpath 'com.growingio.android:vds-gradle-plugin:1.1.1'
    }
}

 

参考:https://www.jianshu.com/p/4aab863ae86d

3.Android Studio Debug 调试时一直卡在 waiting for debugger 界面

AS3.0.1版本中:

1.在Androidmainfest.xml文件中,注释掉:

android:process=":remote"

2.查看build.gradle文件里面的配置

buildTypes {
    debug {
        minifyEnabled false
        debuggable true
        jniDebuggable true
 
    }
    release {
        minifyEnabled false
        debuggable true
        jniDebuggable true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

3.点击settings-Instance Run的配置

4.点击左下角的build Variants,把app设置为debug

参考:https://blog.csdn.net/songzi1228/article/details/83544000

4.Android9.0 默认是禁止所有的http请求

解决办法有好以下几种。

  1. 符合规范,改用https,需要后台支持
  2. 将targetSdkVersion 改成27及以下
  3. 更改默认属性,使它支持Http链接

详细讲下第三种配置:

  1. 在res/xml 目录下新建一个 network_security_config.xml 的文件。 文件内容为:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

2.在 AndroidManifest 的 application 标签中添加

        android:networkSecurityConfig="@xml/network_security_config"
        android:usesCleartextTraffic="true"

3.添加该权限:

 

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

man配置文件:

需要在AndroidManifest.xml的application节点中加上android:usesCleartextTraffic="true"属性,

<application
            android:name=".application.MyApplication"
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:largeHeap="true"
            android:theme="@style/QMUI.Compat.NoActionBar"
            android:usesCleartextTraffic="true"
            tools:ignore="GoogleAppIndexingWarning">
        <!--android9闪退-->
        <uses-library
                android:name="org.apache.http.legacy"
                android:required="false" />

 

https://blog.csdn.net/gwx905133627/article/details/95475198?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

 

https://blog.csdn.net/u011368551/article/details/104437327/

 

 

参考:https://cuichen.blog.csdn.net/article/details/99307055?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

 

https://blog.csdn.net/Builder_Taoge/article/details/78406734?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值