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