详解Android Studio3.5及使用AndroidX的一些坑

google的更新优化往往会牵动一大批开发者的心。去年的androidx,到今年studio3.5后都默认使用androidx了。其实对于我们开发者而言,我们都只是调用他的api,对我们的影响不大??!可是人性的习惯,还是比较不那么容易改变的。现在我就来说说我遇到的一些坑吧。话说还是很严重。不知道androidx的请自行百度。

一、我们从新建一个项目说。

3.5新建项目,是默认使用androidx的

看最后一样,Use androidx.* artifacts。而且不能取消掉的。

那么到我们项目里,这一点就对应于我们的 gradle.properties文件里的2句话

android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true

1.1、那么这两句话代表什么呢

意思就是,你所用的support的包,他会自动帮你迁移到androidx里。这里举个例子(接下来的例子出现的bug是针对系统库的),比如我们之前经常会用support里的AppBarLayout组合CoordinatorLayout实现很酷炫的效果。我们都知道,这个是在support的design里。那么我们还是把它添加进去, 注意:studio3.5后添加包会有点不一样

右键你的项目,选中Open Module Setting

在打开的界面,选中Dependencies,点击里面的加号,继续选择Library Dependency

在搜索框里,搜索design。出现一堆(androidx的版本就是这样选择的),这里我们选择com.android.support

选择加入后,studio会自动build,并加入依赖。build.gradle会加上

implementation 'com.android.support:design:28.0.0'

注意:此时你去xml打上AppBarLayout,并不会提示,甚至根本就没有。个人觉得的是因为studio3.5优化的太好了,不会随便你帮我们rebuild项目,也不知道是不是bug;这个时候点击build --> Rebuild Project,项目。之后xml使用正常,如下

<com.google.android.material.appbar.AppBarLayout
  android:layout_width="match_parent"
  android:layout_height="?actionBarSize"/>

你会发现,这里不是support的包,点进去已经是迁移完的androidx的包。正是因为 gradle.properties 那两句话,帮我们完成了。build.gradle显示的还是support的包,怎么办

额外注意:就如上面说的那个类似bug的问题,假如此时你再build.gradle去掉了这个依赖,如果按之前的操作,我们都会点击Sync Projec with Gradl Files,去更新下。之后项目就没这个包了。没错,studio3.5也是这样,但是你再xml里,继续打AppBarLayout后,依旧会提示,而且xml里不报错,能运行。只是运行后,才会崩溃报错。正确做法还是需要,在去掉依赖后,继续点击下Rebuild Project,这时候才会正常。(感觉这个时候就是bug了)

二、一键将build.gradle的support包改成andoridx

点击 Refactor --> Migrate to AndroidX

后续一直点默认,我这里就不贴图了,直接说操作,Migrate --> (选择我们的项目,点击OK) --> YES。后会弹出下图,

点击Do Refactor。之后,那么'com.android.support:design:28.0.0'会直接改变成响应的androidx包

implementation 'com.google.android.material:material:1.0.0'

三、可能有些人升级了studio,但是却不像使用androidx

正确做法是,把 gradle.properties 里那2句话去掉。同时,把你的build.gradle改成你之前的support包。我们知道support包最后一版本是28。之后一切导包,都不会在迁移了。是support,就是support包。

希望本篇能帮助一些人。再放一个support迁移到androidx的对照 support To androidx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android Studio3.5开发工具(安卓开发工具)安装步骤详解

    本文实例为大家分享了Android Studio3.5开发工具安装步骤,供大家参考,具体内容如下 主页有带SDK的 Android Studio(低版本) Android Studio3.5下载地址: 点击下载, 提取码: ei42 1.下载好该安装包之后,点击进行安装,依次出现以下界面,点击Next 2.在这里自己选择程序安装路径 3.点击Finish 4.这里Android studio程序安装完毕,但是还需要继续对其进行配置:勾选Start Android Studio,然后点击finis

  • 详解Android Studio3.5及使用AndroidX的一些坑

    google的更新优化往往会牵动一大批开发者的心.去年的androidx,到今年studio3.5后都默认使用androidx了.其实对于我们开发者而言,我们都只是调用他的api,对我们的影响不大??!可是人性的习惯,还是比较不那么容易改变的.现在我就来说说我遇到的一些坑吧.话说还是很严重.不知道androidx的请自行百度. 一.我们从新建一个项目说. 3.5新建项目,是默认使用androidx的 看最后一样,Use androidx.* artifacts.而且不能取消掉的. 那么到我们项目

  • 详解android 人脸检测你一定会遇到的坑

    笔者今年做了一个和人脸有关的android产品,主要是获取摄像头返回的预览数据流,判断该数据流是否包含了人脸,有人脸时显示摄像头预览框,无人脸时摄像头预览框隐藏,看上去这个功能并不复杂,其实在开发过程中,遇到的问题也不多,全部都处理了,在正式推出前,这个产品在公司内部也测试了几个月,也没发现bug,但最近实施人员,在客户公司做实施时,反馈回来各种问题,这些问题有部分是程序bug,也有一部分是和硬件有关,因为测试环境有限,笔者无法对各种型号,各个厂家的硬件进行测试,这篇文章主要是记录,摄像头给我们

  • 详解Android studio 3+版本apk安装失败问题

    studio2.3升级到3.1之后将apk发给别人下载到手机上安装,华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装. 在网上找了一下,发现是studio3.0之后的instant run功能引起的,直接点击绿色箭头按钮烧出来的apk都是不完整的,也就是魅族指的测试版,并且这个apk的路径在app\build\intermediates\instant-run-apk\debug下,而原来的app\build\outputs\apk\debug路径下已经没有ap

  • 详解Android 进程

    多进程 如果需要的时候,app可以创建多进程. 在进程里面 各类组件元素的清单文件条目 . . 和 - 均支持 android:process 属性,此属性可以指定该组件应在哪个进程运行. 默认进程就是主进程.其他进程一般来说都是子进程. 2个activity在不同的进程里面,可以刷新UI吗? <activity android:name=".androidsample.ActivityProgressB" android:process=":progressb&quo

  • 详解Android studio 动态fragment的用法

    fragment的使用时Android的基础,它有两种用法,第一个就是静态的fragment.第二个则是动态的fragment. 静态fragment直接在layout创建你想要的fragment的XML的文件,然后在你的Java包里面创建对应fragment的class文件 布局代码如下所示 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:

  • Android+OpenCV4.2.0环境配置详解(Android studio)

    仅是个人记录,希望能对有需要的给予一些小小的帮助 首先我们肯定是要去到OpenCV的官网下载对应的SDK,并解压得到文件夹(opencv-4.2.0-android-sdk) 其次是NDK环境搭建(双击shift,输入sdk,找到sdk manager,将下面红色框框勾选安装) 创建项目,我选用的是(并不是只有这一选择) 导入Module File->New->Import Module 路径选择**\opencv-4.2.0-android-sdk\OpenCV-android-sdk\sd

  • 详解Android性能优化之启动优化

    1.为什么要进行启动优化 网上流行一种说法,就是8秒定律,意思是说,如果用户在打开一个页面,在8秒的时间内还没有打开,那么用户大概的会放弃掉,意味着一个用户的流失.从这里就可以看出,启动优化的重要性了. 2.启动的分类 2.1 冷启动 先来看看冷启动的流程图 从图中可以看出,APP启动的过程是:ActivityManagerProxy 通过IPC来调用AMS(ActivityManagerService),AMS通过IPC启动一个APP进程,ApplicationThread通过反射来创建App

  • 详解android在mob平台实现qq登陆和分享

    个人感觉mob平台功能还是比较强大的,很多功能都可以通过他们平台来实现. 建议仔细观看每一个步骤,如果一个步骤没处理好,可能就会让你的这个功能无法实现.相信我一定可以成功的. 废话少说,先看一下效果: 1.在mob平台配置ShareSDK环境 1.如何在mob平台创建应用 下面为我创建的应用,如图所示,我们选择接入的接口为ShareSDK 2.获取你的App Key和App Secret(建议用自己的) 获取你先创建应用的App Key和App Secret,这里主要告诉你在哪里找App Key

  • 详解Android 裸眼3D效果View控件

    描述:这是一个裸眼3D效果的控件View. Tips:本项目代码部分逻辑参考于其他文章(自如的3D裸眼实现),众人拾柴火焰高,希望大家能多多补充. 项目代码:https://gitee.com/jiugeishere/uidesign 控件效果如下: 实现功能: 实现三层图片叠加效果(裸眼3D效果) 可设置每层图片移动速率 可设置每层图片移动的限制度数 可直接设置图片或引入图片 设计核心: 主要的设计核心是依赖于传感器对手机晃动的监听(重力感应监听器),对每层图片进行不同的移动,实现仿3D效果.

  • 详解Android如何自定义view实现圆形进度条

    Android中实现进度条有很多种方式,自定义进度条一般是继承progressBar或继承view来实现,本篇中讲解的是第二种方式. 先上效果图: 实现圆形进度条总体来说并不难,还是跟往常一样继承view,初始化画笔,按下面的步骤一步步来就好了.对初学者来说动画效果可能比较陌生,我们可以使用属性动画中的valueAnimator来实现动画效果. 实现步骤: 1.画出一个灰色的圆环作为背景. 2.画出上层的圆环覆盖下方的圆环. 3.加入动画效果 值得注意的是怎么设置圆环和文字的位置. 画出矩形只需

随机推荐