返回
Gradle 编译改造之旅:赋予 Google Camera2 新生
Android
2023-10-24 21:14:14
在移动摄影领域,Google Camera2 凭借其卓越的性能和可定制性备受推崇。然而,作为 AOSP 的一部分,Camera2 源码是使用 Android.mk 编译的,这就限制了开发人员使用 Android Studio 进行编译和调试。为了克服这一限制,我踏上了将 Camera2 迁移为 Gradle 编译的旅程,现在我将与大家分享这趟充满技术挑战和突破的经历。
源码下载
第一步是获取 Camera2 的源码。前往 AOSP 代码库并下载与您的 Android 设备兼容的版本。注意,您需要使用 repo 命令行工具进行下载。
repo init -u https://android.googlesource.com/repo -b master
repo sync
迁移为 Gradle
下载源代码后,就可以开始将其迁移到 Gradle 编译系统了。按照以下步骤进行操作:
- 创建 Gradle 项目: 在您选择的工作目录中,创建新的 Android Gradle 项目。
- 复制源码: 将 Camera2 源码复制到新项目的
src/main/cpp
目录中。 - 创建
build.gradle
文件: 在项目的根目录中创建build.gradle
文件,并添加以下内容:
apply plugin: 'com.android.library'
android {
compileSdkVersion 33
buildToolsVersion "33.0.2"
defaultConfig {
minSdkVersion 21
targetSdkVersion 33
externalNativeBuild {
cmake {
cppFlags "-std=c++17"
}
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
- 创建
CMakeLists.txt
文件: 在src/main/cpp
目录中创建CMakeLists.txt
文件,并添加以下内容:
cmake_minimum_required(VERSION 3.10.2)
add_library(
camera2
SHARED
camera2_api.cpp
camera2_buffer.cpp
...
)
target_link_libraries(
camera2
...
)
- 编译并运行: 运行
./gradlew assembleDebug
命令进行编译。如果一切顺利,您应该会在build/intermediates/cmake/debug/obj
目录中看到已编译的库文件。
享受 Gradle 编译的优势
将 Camera2 迁移为 Gradle 编译后,您就可以享受以下优势:
- 轻松集成: 使用 Android Studio 进行编译和调试变得轻而易举。
- 模块化开发: Gradle 使得以模块化的方式开发 Camera2 应用程序变得更加容易。
- 依赖管理: Gradle 可以帮助管理 Camera2 的依赖项。
- 持续集成: Gradle 与持续集成工具(如 Jenkins)集成得很好。
结论
将 Google Camera2 迁移为 Gradle 编译是一种有益的体验,它为我打开了 Android Studio 编译和调试的大门。这一过程需要耐心和对 Gradle 构建系统的了解。但是,最终的结果是值得的:一个现代化、可扩展的 Camera2 应用程序,可以更轻松、更有效地进行开发。