Android 适配

1. Android 发展简介

1.1 Android发展历程

  1. 2003年10月,Andy Rubin等人创建Android公司,话说Android也是00后
  2. 2005年8月17日,Google低调收购Android及其团队。安迪鲁宾成为Google工程部副总裁,继续负责Android项目
  3. 2007年11月5日,Google正式向外界展示了这款名为Android的操作系统
  4. 2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图。在2008年9月,谷歌正式发布了Android 1.0系统
  5. 2009年4月,正式推出了Android 1.5这款手机,从Android 1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,Android 1.5命名为Cupcake(纸杯蛋糕)
  6. 2009年9月,发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的手机HTC Hero(G3)
  7. 2010年5月,正式发布了Android 2.2,命名为Froyo(冻酸奶)
  8. 2010年10月,Android达到第一个里程碑,即电子市场上获得官方数字认证的Android应用已经达到了10万
  9. 2010年12月,正式发布了Android 2.3操作系统Gingerbread (姜饼)
  10. 2011年1月,Google称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统
  11. 2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一
  12. 2011年9月,Android系统的应用数目已经达到了48万,而在智能手机市场,Android系统的占有率已经达到了43%。继续在排在移动操作系统首位。谷歌将会发布全新的Android 4.0操作系统,这款系统被谷歌命名为Ice Cream Sandwich(冰激凌三明治)
  13. 2012年1月6日,Google Play已有10万开发者推出超过40万活跃的应用,大多免费
  14. 2013年11月1日,Android4.4正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情图案,UI的改进也更现代,如全新的HelloiOS7半透明效果

1.2 Android各个版本发布情况

  1. 1.1 2008年09月
  2. 1.5 2009年04月
  3. 1.6 2009年09月
  4. 2.0 2009年10月
  5. 2.3 2010年12月
  6. 3.0 2011年02月
  7. 3.1 2011年05月
  8. 3.2 2011年07月
  9. 4.0 2011年10月
  10. 4.1 2012年06月
  11. 4.2 2012年10月
  12. 4.4 2013年09月
  13. 5.0 2014年10月
  14. 6.0 2015年09月
  15. 7.0 2016年08月 N
  16. 8.0 2017年08月 O
  17. 9.0 2018年05月 P
  18. 10.0 2019年09月 Q

从4.2开始,基本上都是每年秋季发布新版本

1.3 参考链接

  1. 自己整理的 Android 版本简况
  2. 还在期待安卓9.0吗?Android 10.0要来了
  3. Android设备联网方式占比 (腾讯移动分析)

2. Android 适配 7.0 N

2.1 分屏模式

Android N允许用户一次在屏幕中使用两个App。用户可以左右并排/上下摆放两个App来使用,还可以左右/上下拖拽中间的分割线来改变两个App的尺寸

2.3 参考

2.3.1 android7.0分屏适配

3. Android 适配 9.0

1. 限制 HTTP 网络请求

Android 9.0 中限制了 HTTP(明文传输)网络请求,若仍继续使用HTTP请求,则会在日志中提示以下异常(只是无法正常发出请求,不会导致应用崩溃)

// 在资源目录中新建一个xml文件作为网络安全配置文件
// 例如 xml/net_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

// 在Application配置一下即可
<application
    ...
    android:networkSecurityConfig="@xml/net_config">
    ...
</application>

Android9.0开始必须https,和iOS10一样的规定

解决办法如下,在manifest.xml的application节点下:

android:usesCleartextTraffic="true"
2. 弃用 Apache HTTP Client

Android 9.0 中移除了所有 Apache HTTP Client 相关的类,因此我们的应用或是一些第三方库如果使用了这些类,就会抛出找不到类的异常

 // 在 AndroidManifest.xml 中添加以下内容
 <uses-library android:name="org.apache.http.legacy" android:required="false"/>
3. 限制非 SDK 接口的调用

一直以来,官方提供的接口分为了 SDK 接口和非 SDK 接口

  • SDK 接口即官方支持的接口
  • 非 SDK 接口我们通常利用反射或者JNI间接调用的方式进行
4. 前台服务权限

Android 9.0 中,应用在使用前台服务之前必须先申请 FOREGROUND_SERVICE 权限,否则就会抛出 SecurityException 异常

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
5. 强制执行 FLAG_ACTIVITY_NEW_TASK 要求

在 Android 7.0(API 级别 24)之前,若开发者需要通过非 Activity context 启动 Activity,就必须设置 Intent 标志 FLAG_ACTIVITY_NEW_TASK,否则会启动失败并抛出以下异常

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

但这个要求在更新 Android 7.0 以后由于系统问题被临时取消了,开发者即使不设置标志也可以正常启动 Activity。

在 Android 9.0 中官方修复了这个问题,这个要求重新开始强制执行,因此开发者在适配 Android 9.0 时需要注意这个问题

6. 不允许共享 WebView 数据目录
7. Build.SERIAL 被弃用

Android 9.0 之前,开发者可以使用 Build.SERIAL 获取设备的序列号。现在这个方法被弃用了,Build.SERIAL 将始终设置为 “UNKNOWN” 以保护用户的隐私。

适配的方法为先请求 READ_PHONE_STATE 权限,然后调用 Build.getSerial() 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初心一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值