是否可以做这样的事情:
flutter build apk --enable-software-rendering
我需要一个执行方式的发布版本:
flutter run --enable-software-rendering --profile
谢谢。
答案 0 :(得分:1)
对于那些因为挣扎着Flutter Android应用而崩溃并出现以下错误的人
ERROR:flutter/shell/gpu/gpu_surface_gl Failed to setup Skia Gr context
置于后台后回到前台时,只需将 enable-software-rendering 添加到“ onCreate”方法中即可,正如我们的朋友 Matej Snoha 所说。 >
换句话说,将android/app/src/main/kotlin/[project]/MainActivity
文件更改为以下Kotlin代码:
class MainActivity : FlutterActivity() {
// add onCreate method (if not exists)
override fun onCreate(savedInstanceState: Bundle?) {
// add this line to "onCreate" method
this.getIntent().putExtra("enable-software-rendering", true)
// don't forget to call "super"
super.onCreate(savedInstanceState)
}
}
对我来说,它就像是一种魅力(无需致电Flutter.startInitialization(this);
)。
答案 1 :(得分:0)
TL; DR 将getIntent().putExtra("enable-software-rendering", true);
放在您的onCreate()
顶部
注意-我假设问题标题中的“ apk”是Android,并且需要软件渲染。
看看源代码,--enable-software-rendering
的{{1}}标志使活动通过flutter run
与am start
一起使用来启动,这将布尔值作为布尔值添加到了意向。
如果您希望控制何时使用代码中的软件渲染(例如,取决于API级别或设备模型),请在--ez enable-software-rendering true
中尽早设置上述意图。
完整示例:
onCreate()
答案 2 :(得分:0)
Matej的答案为基于Java的Flutter应用程序提供了解决方案。对于使用Kotlin进行启动的新创建的应用,代码如下:
import android.os.Bundle;
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// use software rendering (ideally only when you need to)
getIntent().putExtra("enable-software-rendering", true)
// start Flutter
super.onCreate(savedInstanceState)
}
}
在此路径中找到MainActivity
类:
android/app/src/main/kotlin/com/.../.../MainActivity.kt