我将Flutter升级到stable 1.12.13+hotfix.5之后,在一些老手机老安卓系统遇到了这个问题。
闪退的错误内容为android.permission.UPDATE_DEVICE_STATS
。
通过搜索flutter android.permission.UPDATE_DEVICE_STATS
可以搜到本站有一个相关的文章 修复 flutter_gallery_app 运行崩溃问题 提到这个错误,但这篇文章与我提到的问题无关,文章里说到的操作也无法解决我的问题。
真正跟问题相关并且有解答的在这 Github iusse。
翻译一下:
这个崩溃问题是由于Android api level 19及以下的一个java原生代码Activity.reportFullyDrawn
内部逻辑要求app有android.permissions.UPDATE_DEVICE_STATS
权限,但这个是Android内部权限(开发者自己在AndroidMainifest.xml中添加是无效的)而app又没有,然后app就崩了,就闪退了。
解决方法
Java
参考以下代码修改android/app/src/main/java/appid/MainActivity.java
文件
import android.os.Build;
// 其它import
public class MainActivity extends FlutterActivity {
// 其它代码
@Override
public void onFlutterUiDisplayed() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
reportFullyDrawn();
}
}
}
Kotlin
参考以下代码修改android/app/src/main/kotlin/com/appid/MainActivity.kt
文件
import android.os.Build
// 其它import
class MainActivity: FlutterActivity() {
// 其它代码
override fun onFlutterUiDisplayed() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
reportFullyDrawn()
}
}
}