0
点赞
收藏
分享

微信扫一扫

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
Android10(Android Q) 适配_极光推送
把项目运行到安卓10的手机上实际测试下,哪里崩溃就解决哪里

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

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

我遇到的问题

知乎选择控件崩溃

一般活跃的项目早已适配了Android10。例如项目中用了知乎的图片选择器Matisse,打开github matisse主页,点击 releases
Android10(Android Q) 适配_极光推送_02
Android10(Android Q) 适配_极光推送_03
可以看到在最新的版本中已经修复了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) 适配_极光推送_04
需要注意的是,gradle.properties 中的 COMPILE_SDK_VERSION、BUILD_TOOLS_VERSION 都要改为 29 版本,否则运行时,Manifest 会提示找不到这个属性
Android10(Android Q) 适配_android_05

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) 适配_极光推送_06

鸿洋大神推荐的文章

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

举报

相关推荐

0 条评论