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

Android应用使用camera2库在SDK19启动崩溃,适配旧SDK及依赖排除咨询

解决SDK19上Camera2库导致的启动崩溃问题

这个问题我之前也碰到过,核心原因是Camera2Initializer这个ContentProvider会在应用启动早期(甚至在Application.onCreate()之前)被系统初始化,它的静态代码块里引用了SDK21才新增的android.util.Size类,所以你的SDK版本检查代码根本没机会执行就崩溃了。下面是完整的解决方案:

1. 调整Gradle依赖,针对旧SDK排除Camera2的强制依赖

首先在你的app/build.gradle(或对应的Module构建文件)里修改Camera2库的依赖配置,让它成为可选依赖,避免在SDK<21的设备上引入不兼容的类:

dependencies {
    // 保留CameraX核心库(如果使用CameraX的话)
    implementation 'androidx.camera:camera-core:1.3.0' // 替换成你实际使用的版本
    
    // 将Camera2依赖设置为可选,禁止传递依赖
    implementation('androidx.camera:camera-camera2:1.3.0') {
        transitive = false // 阻止引入SDK21+的传递依赖类
        optional true // 让该依赖仅在满足SDK要求时生效
    }
}

2. 在Manifest中禁用Camera2的初始化Provider

Camera2库自带的Camera2Initializer会自动注册为ContentProvider,我们需要在AndroidManifest.xml里移除它,避免旧设备上触发初始化:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.myapp.android">

    <application ...>
        <!-- 移除Camera2的初始化Provider,防止SDK<21时加载 -->
        <provider
            android:name="androidx.camera.camera2.impl.Camera2Initializer"
            android:authorities="${applicationId}.camera2-initializer"
            android:exported="false"
            tools:node="remove" />
    </application>
</manifest>

tools:node="remove"会把依赖库中声明的这个Provider从最终的Manifest中移除,确保旧设备不会加载它。

3. 代码中动态加载Camera2功能

最后,确保所有Camera2相关的代码都被包裹在SDK版本判断的分支里,只有当设备SDK>=21时才初始化Camera2逻辑:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // 这里才初始化Camera2相关的功能,比如CameraX的Camera2配置
    // 示例:
    CameraX.initialize(context, Camera2AppConfig.create(context));
    // 你的相机业务逻辑...
} else {
    // 处理SDK<21的情况:比如使用旧Camera API,或者提示用户相机功能受限
    Toast.makeText(context, "相机功能仅支持Android 5.0及以上版本", Toast.LENGTH_SHORT).show();
}

注意:不要在全局代码(比如类的静态变量、非条件分支的代码)中直接引用Camera2库的类,否则依然会触发类加载失败。

这样调整后,SDK19的设备就能正常启动应用,而SDK21+的设备依然可以使用Camera2的功能。

内容的提问来源于stack exchange,提问作者actin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:59:41