【问题标题】:Androidx Camera: Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 21Androidx 相机:清单合并失败:uses-sdk:minSdkVersion 16 不能小于版本 21
【发布时间】:2020-03-01 15:34:24
【问题描述】:

您好,我正在使用 CameraX api 构建自定义相机,在将更新的库依赖项添加到 build.gradle 文件后,我收到以下构建错误


清单合并失败:uses-sdk:minSdkVersion 16 不能小于库 [androidx.camera:camera-extensions:1.0.0-alpha08] /Users/.gradle/caches/transforms-2/files 中声明的版本 21 -2.1/f20dc98c605a4c4dbd6030601f9665d3/camera-extensions-1.0.0-alpha08/AndroidManifest.xml 因为该库可能正在使用 16 中不可用的 API 建议:使用 minSdk 最多为 16 的兼容库, 或者将此项目的 minSdk 版本增加到至少 21, 或者使用 tools:overrideLibrary="androidx.camera.extensions" 强制使用(可能导致运行时失败)


build.gradle 文件

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
        compileSdkVersion 29
        buildToolsVersion "29.0.3"

        defaultConfig {
                    applicationId ""
                    minSdkVersion 16
                    targetSdkVersion 29
                    versionCode 1
                    versionName "1.0"
                    multiDexEnabled true
                    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
                    vectorDrawables.useSupportLibrary = true
            }

            buildTypes {
                    release {
                        minifyEnabled false
                        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                    }
            }

            compileOptions {
                    sourceCompatibility JavaVersion.VERSION_1_8
                    targetCompatibility JavaVersion.VERSION_1_8
            }

            dataBinding {
                    enabled = true
            }

            flavorDimensions 'dimensions'

            productFlavors {

                    dev {
                        //assembleDevDebug crashlyticsUploadDistributionDevDebug
                        applicationId ""
                        versionName "D(0.0)"   //for QA Release
                        versionCode 00
                        proguardFile("proguard-rules.pro")
                    }

                    prod {
                        applicationId ""
                        versionName "1.3" //for prod release
                        versionCode 13
                        proguardFile("proguard-rules.pro")
                        resValue "string", "app_name", "Prod Android"
                    }
            }

    }

dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation "androidx.camera:camera-core:1.0.0-beta01"
        implementation "androidx.camera:camera-camera2:1.0.0-beta01"
        implementation "androidx.camera:camera-extensions:1.0.0-alpha08"

}
apply plugin: 'com.google.gms.google-services'

【问题讨论】:

  • 看起来很清楚 - CameraX 仅支持 API 21 及更高版本。
  • 将 minSdkVersion 16 更改为 minSdkVersion 21 或高于 21

标签: android androidx android-camerax


【解决方案1】:

您可以通过将以下内容添加到清单文件来坚持最低版本 16。

<uses-sdk tools:overrideLibrary="androidx.camera.view, androidx.camera.camera2, androidx.camera.lifecycle, androidx.camera.core"/>

为避免运行时失败,您需要在使用 CameraX 之前检查设备是否在 api 21 及更高版本上运行

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
        // Use camera2 or cameraX
}else{
        // Use Camera1
}

【讨论】:

    【解决方案2】:

    更新您的 app.gradle minSdkVersion

    来自:

     minSdkVersion 16
    

    收件人:

    minSdkVersion 21
    

    【讨论】:

    • 虽然这解决了问题,但它可能不是理想的解决方案。如果您仍想保留minSdkVersion 16,请使用@adekola-akano 建议的解决方案
    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2014-08-24
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多