我的应用程序不使用设备序列号(至少不是故意的),但有时它会意外崩溃,我收到错误消息:
E/libc: Access denied finding property "ro.serialno"
Run Code Online (Sandbox Code Playgroud)
它以随机频率发生,但在两项活动中始终如一,有时在开始后不久,有时在稍后,有时根本没有。查看代码,它只能与使用 Intent.ACTION_GET_CONTENT 和/或使用 CLIPBOARD_SERVICE 将文本从 TextView 复制到剪贴板的这两个活动有关。
项目 min sdk 为 23,编译/目标为 29。此外,在将 Android Studio 更新到 4.1 之前并没有发生这种情况,并且该问题似乎不会在使用 Android 8 的物理设备上发生。从我在这里读到的内容, Android 10 限制对剪贴板和序列号的访问,但它并没有真正回答我的问题。
如果不清楚,问题是:可能是某些系统服务(如剪贴板)在我不知道的情况下访问了序列号,这是否意味着我需要请求一些特殊权限?
我有一个多模块应用程序,最近我开始在其中实现 Jetpack Compose。我定义了一些由不同模块共享的可组合项。我将它们放在另一个库模块中并导入到相关位置。可组合示例:
// Nothing special here, any composable function fails the same way
@Composable
fun AppTheme(content: @Composable () -> Unit) {
val appColors = lightColors(
primary = Blue
)
MaterialTheme(colors = appColors, content = content)
}
Run Code Online (Sandbox Code Playgroud)
一切似乎都工作正常,除了所说的可组合项无法构建预览:
@Preview(showSystemUi = true, showBackground = true)
@Composable
fun HistoryScreenPreview() {
AppTheme {
HistoryScreen()
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,如果我删除“AppTheme”,预览效果会非常好。
堆栈跟踪:
java.lang.NoSuchMethodError: 'void com.somepackage.lib.ui_theme.AppComposablesKt.AppTheme(_layoutlib_._internal_.kotlin.jvm.functions.Function2, androidx.compose.runtime.Composer, int)'
at com.somepackage.feature.home.ui.history.view.HistoryFragment.HistoryScreenPreview(HistoryFragment.kt:238)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at androidx.compose.ui.tooling.CommonPreviewUtils.invokeComposableMethod(CommonPreviewUtils.kt:150)
at androidx.compose.ui.tooling.CommonPreviewUtils.invokeComposableViaReflection$ui_tooling_release(CommonPreviewUtils.kt:194)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:593)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3$1$composable$1.invoke(ComposeViewAdapter.kt:591)
at …
Run Code Online (Sandbox Code Playgroud) android-module android-jetpack-compose android-jetpack-compose-preview