适配 Android 9

Android 9 已经发布,是时候开始适配了.

修改 ./app/build.gradle

1
2
3
4
compileSdkVersion 28
defaultConfig {
targetSdkVersion 28
}

然后编译,模拟器运行,发现以下问题:

  • 在 Android 9 上读取应用图标时候会崩溃
1
2
08-12 01:17:50.181 7481-7490/web1n.stopapp A/libc: FORTIFY: pthread_mutex_destroy called on a destroyed mutex (0xe5528f00)
Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 7490 (FinalizerDaemon), pid 7481 (web1n.stopapp)

查看源码:
捕获.PNG
大概是因为 Android 9 上限制了反射使用 hiddenapi 吧..尝试使用 https://github.com/anggrayudi/android-hidden-api
捕获.PNG
也会崩溃,一样的报错.

只好使用标准的获取图标方法了..

1
packageItemInfo.loadIcon(packageManager);
  • 在静默安装应用时会崩溃

在安装应用时会开启一个前台服务,前台服务在 Android 9 上必须申请普通权限:

1
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

炸机修复.


适配 Android 9
https://https.gs/archives/185/
作者
web1n
发布于
2018年8月12日
许可协议