小编J. *_*egg的帖子

Kotlin 多平台移动 targetSdk 已弃用

build.gradle.kts我在 KMM 项目的模块中设置了文件shared,如下所示:

android {
    namespace = "com.my.project"
    compileSdk = 33

    sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
    defaultConfig {
        minSdk = 24
        targetSdk = 33
    }
}
Run Code Online (Sandbox Code Playgroud)

对于targetSDK我收到以下警告:

targetSdk: Int?' is deprecated. Will be removed from library DSL in v9.0
Run Code Online (Sandbox Code Playgroud)

如何迁移这部分并targetSdk在我的 KMM 项目中为 Android 项目正确设置版本?

android kotlin-multiplatform

35
推荐指数
1
解决办法
5936
查看次数

如何在 Jetpack Compose 对话框中的系统状态栏后面绘制

我禁用了fitSystemWindowsviaWindowCompat.setDecorFitsSystemWindows(window, false)在状态栏后面绘制,并且我正在使用insets accompanist 库来获取相应的插图,以将填充添加到特定的可组合项。

但是,如果我显示全屏对话框,该对话框仍然具有系统栏和导航栏的填充,并且拒绝在状态栏后面绘制。

该对话框类似于以下代码片段:

Dialog(
    onDimissRequest = {},
    properties = DialogProperties(usePlatformDefaultWidth = false)
) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

是否需要任何其他设置才能让对话框绘制在系统状态栏后面?

android android-dialog android-dialogfragment android-jetpack-compose

15
推荐指数
1
解决办法
2484
查看次数

Android 导航和 Gradle 7.3.3 命名空间 Kapt 插件生成的方向无法解析资源

自新的 Android Studio版本“Chipmunk”以来,Gradle 更新帮助程序建议您package从 中删除关键字AndroidManifest.xml,而使用应用程序级别内的块namespace中的对象。androidbuild.gradle

但是,使用最新版本2.4.2以及标准导航库的版本,当为构建风格设置不同时2.5.0-rc01,kapt 插件生成的方向不再导入正确的资源路径。applicationId

例如,如果我的默认包名称是,并且我有一个名为“my.package.com.dev”my.package.com的风格,并且设置为,则生成的方向都会抛出构建错误:。devapplicationIdnamespacemy.package.comUnresolved reference: R

还有其他人遇到过这个问题吗?我们能做些什么来解决这个问题吗?

我必须删除namespace并放回packagemy 中的参数AndroidManifest才能解决此问题,但这似乎不对。

android gradle android-studio package-name

10
推荐指数
1
解决办法
5479
查看次数

Jetpack Compose WebView 处理后退导航并转到上一页

我正在使用 Jetpack Compose,并将其WebView封装在一个AndroidView可组合项中,如下所示:

AndroidView(modifier = modifier, factory = { context ->
        WebView(context).apply {
            layoutParams = ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT
            )
            webViewClient = WebViewClient()
            settings.javaScriptEnabled = true
        }
    }, update = { webView -> webView.loadUrl(url) })
Run Code Online (Sandbox Code Playgroud)

在传统方式中,我们可以向 中添加OnBackPressedDispatcherActivity拦截后按,并WebView通过 viewBinding 访问它来在 中导航,例如使用类似的函数WebViewgoBack()检查是否可以返回canGoBack()

但是我们如何使用 Jetpack Compose 方法实现相同的目标呢?

android android-webview kotlin onbackpressed android-jetpack-compose

7
推荐指数
1
解决办法
1万
查看次数

为什么 Google Play 应用内结算购买对象有一个 sku 列表?

我在我的 Android 应用程序中实现了 Google Play Billing API。

但我不明白为什么一个Purchase对象没有一个 sku 而是一个 sku 列表?在什么情况下a可以Purchase包含多个sku?

这使得后端站点上的验证有点尴尬,因为我需要迭代该 sku 列表并使用相同PurchaseToken.

是否存在任何用例,其中单个购买可以在该列表中包含多个 sku,或者我可以假设该列表始终只包含一个 sku?

android in-app-billing

7
推荐指数
0
解决办法
393
查看次数

Jetpack Compose BottomSheetScaffoldsheetGestures已禁用,但当子组件可滚动时手势仍然有效

我的 Android 应用程序内部有一个BottomSheetScaffold如下所示的内容:

 BottomSheetScaffold(
        sheetGesturesEnabled = false,
        sheetContent = { MyContent() },
        scaffoldState = bottomSheetScaffoldState,
    ) {
        ..
    }
Run Code Online (Sandbox Code Playgroud)

设置为sheetGesturesEnabledfalse,工作表不应可滑动。但是,如果MyContent()包含像 之类的可滚动组件LazyColumn,则仍然可以在模态底部表单上执行滑动关闭手势。

这怎么可能?这是一个已知的错误吗?有什么解决办法吗?

android kotlin bottom-sheet android-jetpack-compose lazycolumn

6
推荐指数
1
解决办法
3057
查看次数

拆箱 cameraCharacteristics 可能会产生 Nullpointer Exception 和 FindBugs

我无法处理导致FindBugs抛出错误的以下警告。

错误

我正在使用camera2 api。如您所见,我已经在检查 null 并另外捕获可能的 NullPointer 异常。CameraCharacteristics 类的 .get 方法使用 Nullable 进行注释,因此出现此错误。我不知道如何防止这种情况发生。检查 null 似乎不能完成这项工作。

同时,我将 SuppressFBWarnings Annotation 添加到我的项目中。但即使我抑制这样的警告:

@SuppressFBWarnings(value = "NP_NULL_ON_SOME_PATH")
private void setUpCamera(int width, int height) {
    try {
        for (String cameraId : cameraManager.getCameraIdList()) {
            CameraCharacteristics cameraCharacteristics = cameraManager.getCameraCharacteristics(cameraId);

            if (cameraCharacteristics != null && cameraCharacteristics.get(CameraCharacteristics.LENS_FACING) != null) {
                int lensFaceingCameraCharacteristics = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);

                if (cameraFacing == lensFaceingCameraCharacteristics) {
                    StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
                    previewSize = getPreviewSize(streamConfigurationMap.getOutputSizes(SurfaceTexture.class), width, height);
                    this.cameraId = cameraId;
                }
            }
        }
    } catch (CameraAccessException | NullPointerException …
Run Code Online (Sandbox Code Playgroud)

java android unboxing annotations findbugs

1
推荐指数
1
解决办法
1586
查看次数