我正在尝试将 Jetpack Compose 添加到我的项目中,但在对我的build.gradle文件进行所有更改后,我无法构建它。原因是项目中有匿名类。
我没有描述我的项目、build.gradle文件和所做的所有更改,而是使用android-compose-codelabs项目作为沙箱。
onCreate所以基本上,我克隆了 BasicsCodelab 项目并可以成功构建它,但是在方法 ( )末尾添加此块之后MainActivity.kt:
val listener = object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String): Boolean {
return false
}
override fun onQueryTextChange(newText: String): Boolean {
return true
}
}
SearchView(this).setOnQueryTextListener(listener)
Run Code Online (Sandbox Code Playgroud)
并清除该项目,我无法再构建它。因此,向项目添加匿名类(使用 Jetpack Compose)会导致构建失败。
错误:
LiveLiterals$MainActivityKt.class
com.android.tools.r8.errors.b: Space characters in SimpleName
'Boolean$fun-onQueryTextSubmit$class-$no name provided$$val-listener$fun-onCreate$class-MainActivity'
are not allowed prior to DEX version 040
Run Code Online (Sandbox Code Playgroud)
我认为这no name provided部分是原因(应该是no-name-provided?),但我不太熟悉构建管道来解决问题。我尝试禁用 R8 但没有结果。
我现在正在开发 P2P 聊天应用程序(适用于 Android)。我想添加一些 UI 测试,以便在每次更改代码的很大一部分后,不要手动检查所有用例(发送/接收消息、连接请求、断开连接、失去连接等)。
因此,我最初的想法是为两个设备创建两组 Espresso 测试,一个将发送请求和消息,另一个将作为接收器并同时运行它们。这只是抽象的想法,我的问题是:是否可以运行两组相互交互的测试?即使答案是“是”,我应该实现这种方法,还是应该以某种方式模拟连接机制并仅在一台设备上运行测试?(如果这种方法很好,我该如何实现?)你能建议一个正确/更好的方法吗?
我没有找到任何类似的问题,我认为这可能很愚蠢,对于每个有丰富测试经验的人来说答案都是显而易见的。无论如何,答案可能对其他处于类似情况的人有用。
提前致谢。