Android Q行为变化

App行为变化,影响所有App

以下行为会影响所有运行在Android Q机型上的App,不管你的App指定的targetSdkVersion是不是Android Q。

  1. 非SDK接口限制。

  2. WiFi直连广播。
    以下两个与WiFi直连有关的广播不再是sticky模式

  1. 系统悬浮窗权限(在Go版本上)

什么是Go版本,在2017年 5 月的 Google I/O 开发者大会上,Google 宣布了 Android Go 项目,即为入门级智能设备打造的简化版 Android 系统。而随着 Android 8.1 的正式推送,这一系统也揭开了其神秘的面纱)

运行在Android Q Go Edition的App将不再接受SYSTEM_ALERT_WINDOW权限的申请。这是因为悬浮窗会使用额外的内存,这对于低内存配置的Android设置带来很明显的性能消耗。

如果你的App目前是运行在Android 9 或 更低版本的Go Edition上,并且你的APP使用了悬浮窗权限,那么当该设备升级到Android Q时,该APP会保留悬浮窗权限的授权信息。但是,在设备升级之后,就无法再对这些APP授权悬浮窗权限。

在Go设备上,如果APP发送action是ACTION_MANAGE_OVERLAY_PERMISSION的intent,那么系统会自动拒绝该请求,并且跳转到系统设置界面,并在设置界面给用户提示悬浮窗权限不可用,因为这会让你的设备变慢。如果调用Settings.canDrawOverlays()方法,该方法会始终返回false。

  1. 低版本target警告
    在Android Q的设备上运行的APP,如果该APP的targetSdkVersion低于23(Android 6.0),那么在第一次运行该APP时,系统会给用户警告。如果APP需要用户授权,那么用户在首次运行APP之前还有机会调整APP的权限。
    Google Play Store对APK级别的要求.png

  2. SHA-2 CBC 密钥算法套件被删除
    以下SHA-2 CBC 密钥算法套件已被移除:

  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    以上这些密钥算法套件的安全性没有GCM高。
    可以通过调用getSupportedCipherSuites()方法来获取系统支持的密钥算法套件。
  1. App使用情况
    UsageStats应用使用体验升级。
    Android Q可以设置app为grayscale display mode
    进入Suspended状态的APP不能播放音频
    android.preference库被弃用。使用AndroidX preference库作为替代。

设置targetSdkVersion为Q的APP

  1. 非SDK接口限制。
  2. Shared memory。
    target Q的APP不能再直接使用ashmem(/dev/ashmem),可通过NDK的AShareMemory类访问shared memory。
    In addition, apps cannot make direct IOCTLs to existing ashmem file descriptors and must instead use either the NDK’s ASharedMemory class or the Android Java APIs for creating shared memory regions. (这里不是很熟悉,没有翻译,sorry)
    这些改变会增加使用shared memory时的安全性和鲁棒性,提升性能和Android系统的安全性。
  3. ART只接受系统生成的OAT文件。
    ART(Android Runtime)不再通过应用进程调用dex2oat。
  4. 强化了ART的AOT检查。
  5. Fullscreen intent的权限变化。
    使用fullscreen intent的app,必须在manifest文件中声明USE_FULL_SCREEN_INTENT权限,该权限是一个普通权限,系统会自动授权。
    如果APP在没有申请USE_FULL_SCREEN_INTENT权限的情况下,通过fullscreen intent创建一个通知,那么系统会忽略该请求,并在控制台输出以下信息:
    Package [pkg]: Use of fullScreenIntent requires the USE_FULL_SCREEN_INTENT permission

参考链接:https://developer.android.google.cn/preview/behavior-changes-all

猜你喜欢

转载自blog.csdn.net/rui574081323/article/details/88892610