Flutter build apk with --enable-software-rendering?

时间:2018-05-02 04:13:32

标签: dart flutter

是否可以做这样的事情:

flutter build apk --enable-software-rendering

我需要一个执行方式的发布版本:

flutter run --enable-software-rendering --profile

谢谢。

3 个答案:

答案 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 runam 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