Android10(Android Q) 适配

文章目录

  • 前言
  • 升级步骤
  • 我遇到的问题
    • 知乎选择控件崩溃
    • 极光推送在安卓10上失效
    • open failed: EACCES (Permission denied)
    • Didn't find class "org.apache.http.client.methods.HttpPost"
  • 鸿洋大神推荐的文章

前言

如果项目还没适配AndroidX,请 先适配Android X

然后再适配Android10,关于Android10的一些变化,请 查看官方文档

升级步骤

1、先把 gradle.properties 中的 TARGET_SDK_VERSION 改为 29
在这里插入图片描述
把项目运行到安卓10的手机上实际测试下,哪里崩溃就解决哪里

2、然后根据 官方文档 中的一些变化,针对性的再查找项目中涉及到的地方

3、第三方库更新,一般活跃的项目早已适配了Android10,我们只需要更新到最新版本即可

我遇到的问题

知乎选择控件崩溃

一般活跃的项目早已适配了Android10。例如项目中用了知乎的图片选择器Matisse,打开github matisse主页,点击 releases
Android10(Android Q) 适配_第1张图片
Android10(Android Q) 适配_第2张图片
可以看到在最新的版本中已经修复了Android Q上的崩溃问题,所以我们可以放心的把版本改为最新版了,这个问题就解决了

极光推送在安卓10上失效

极光推送在2、3月份进行了更新,使用 tag 和 alias 都发生了变化,因此,sdk需要更新,按照 官方3分钟demo 修改自己项目中的极光推送

open failed: EACCES (Permission denied)

项目中有一个图片剪裁控件,选择图片后,报错 open failed: EACCES (Permission denied),开始以为是没有读写权限造成的,结果并不是

解决办法是在AndroidManifest.xml的 application 节点增加 android:requestLegacyExternalStorage="true",即
Android10(Android Q) 适配_第3张图片
需要注意的是,gradle.properties 中的 COMPILE_SDK_VERSION、BUILD_TOOLS_VERSION 都要改为 29 版本,否则运行时,Manifest 会提示找不到这个属性
Android10(Android Q) 适配_第4张图片

Didn’t find class “org.apache.http.client.methods.HttpPost”

网址是http://开头的网址网络请求,就报错Didn't find class "org.apache.http.client.methods.HttpPost"https://的网址就没问题

解决办法是在manifest中添加

android:usesCleartextTraffic="true"

<uses-library android:name="org.apache.http.legacy" android:required="false" />

如图
Android10(Android Q) 适配_第5张图片

鸿洋大神推荐的文章

Android 10存储适配一一我们项目是这么干的!

你可能感兴趣的:(#,app开发问题)