You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Go编译AAR库的Android Kotlin应用触发OpenGL错误的问题排查求助

集成Go编译AAR库的Android Kotlin应用触发OpenGL错误的问题排查求助

大家好,我目前在开发一个基于Kotlin的Android应用,需要集成一个由Go语言编写的第三方库。这个库已经通过gomobile -target=android编译成AAR文件,并且我已经通过Gradle的build.gradle.kts完成了集成。

这个Go库对外暴露了一个名为MyGoClass的类,里面包含了各类方法,但只要我调用这个类中的任意方法,Logcat就会输出一系列OpenGL相关的错误日志,示例如下:

11:12:44.543 GoLog E s_glBindAttribLocation: bind attrib 0 name inPosition
11:12:44.543 GoLog E s_glBindAttribLocation: bind attrib 1 name inColor
11:12:44.543 GoLog E s_glBindAttribLocation: bind attrib 2 name inCircleEdge

这些错误仅在Android Studio的Pixel 7模拟器上出现,而且是在特定场景下才会触发,下面是两个能稳定复现问题的场景:

场景1:初始渲染与首次点击事件时触发错误

当绘制一个按钮并第一次点击它时,就会出现上述错误,复现代码如下:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            GoImportLibraryTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    MyGoClass.test()
                    Button(
                        onClick = {
                            Toast.makeText(applicationContext, "Hello, this is a Toast!", Toast.LENGTH_SHORT).show()
                        },
                        modifier = Modifier.padding(innerPadding)
                    ) {}
                }
            }
        }
    }
}

场景2:仅首次点击时触发错误(方法调用移至OnClick监听内)

如果我把MyGoClass.test()的调用移到按钮的onClick事件监听器内部,那么错误只会在第一次点击按钮时出现,代码如下:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            GoImportLibraryTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Button(
                        onClick = {
                            MyGoClass.test()
                            Toast.makeText(applicationContext, "Hello, this is a Toast!", Toast.LENGTH_SHORT).show()
                        },
                        modifier = Modifier.padding(innerPadding)
                    ) {}
                }
            }
        }
    }
}

补充说明:MyGoClass只是一个占位符,我测试了多个不同的Go编译AAR库,都会出现完全相同的行为,而且所有库都是通过gomobile -target=android命令编译的。

想请教各位大佬,这些OpenGL相关的错误到底是什么原因导致的?我应该采取哪些步骤来解决这个问题呢?非常感谢大家的帮助!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 11:49:30