Android P新特性

编辑...
导读:

  • 移动开发知识体系总章(Java基础、Android、Flutter)
  • 非SDK接口限制
  • 默认情况下启用网络传输层安全协议
  • androd P Apache HTTP 客户端弃用影响采用非标准 ClassLoader 的应用(即 androd P Apache HTTP API 不可用)
  • 全面禁止了非安全的http连接
  • socket连接也必须要使用安全连接
  • 对WebView的数据进行了进程隔离
    很有必要讲一下Android的network security config.
    Android network security config可以让我们通过配置文件来增加对于网络安全的配置。
    它可以允许我们配置:
    我们的app信任哪些CA证书
    允许我们的app可以访问或者不能访问哪些非安全连接

全面禁止了非安全的http连接

Android P 全面禁止了非安全的http连接,如果要使用非加密连接,需要配置network security config.步骤如下:
1.1 在res/xml下建立我们自己的network security config文件,名字任意,可以叫做network_security_config.xml
1.2 如果我们相对某些网址使用非安全连接,可以使用如下配置


    
      
        insecure.example.com
        insecure.cdn.example.com
    

1.2 如果我们想要允许所有的非安全连接,可以使用如下配置


    
      
        example.com
        cdn.example2.com
    
 
    

1.3 然后在AndroidManifest的标签中增加如下属性

android:networkSecurityConfig="@xml/network_security_config"

Android network security config可以让我们通过配置文件来增加对于网络安全的配置。它可以允许我们配置:
我们的app信任哪些CA证书
允许我们的app可以访问或者不能访问哪些非安全连接

socket连接也必须要使用安全连接

socket连接也必须要使用安全连接,必须要使用SSLSocketFactory,而不能使用SocketFactory.
请注意,SSLScoket本身并不校验hostname的安全性,我们必须使用getDefaultHostnameVerifier的verify方法对hostname进行校验。

注意,Android只是说我们必须在Socket中也是用安全连接,我们要使用Verifier进行校验。但是并没有强制我们这样做,也就是说在使用socket的时候,不进行校验,使用非安全连接也是可以的,但是不推荐。

对WebView的数据进行了进程隔离

在Android P上,对WebView的数据进行了进程隔离,同一个应用程序的不同进程无法访问其他进程中WebView的数据,包括Cookie等。
谷歌推荐的做法是只在一个进程中使用WebView,所以我们应该把所有使用到WebView的Activity都放置在同一个进程中。我们可以在不需要使用WebView的进程中调用WebView的静态方法disableWebView来强制要求该进程不能使用WebView.

如果一定要在不同的进程中使用WebView,那么我们必须调用WebView.setDataDirectorySuffix来为该进程中的WebView设置数据目录。不同的进程是没有办法访问其他进程中的WebView数据的,包括Cookie.我们可以使用setCookie和getCookie来在不同的进程之间复制WebView的Cookie.

你可能感兴趣的:(Android P新特性)