尝试安装一个使用 Android Room 构建数据库的简单应用程序,作为 AOSP 中的系统应用程序。坚持要在 Android.mk makefile 中包含的内容。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under,src)
LOCAL_RESOURCE_DIR := /home/<username>/WORKING_DIRECTORY/packages/apps/appname/res
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_MODULE_TAGS := optional
LOCAL_USE_AAPT2 := true
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.annotation_annotation \
androidx.legacy_legacy-support-core-ui \
androidx.appcompat_appcompat \
androidx.core_core \
androidx.recyclerview_recyclerview \
androidx.room_room-common \
androidx.room_room-migration \
androidx.room_room-runtime \
androidx.room_room-testing \
android-support-annotations \
androidx.cursoradapter_cursoradapter \
androidx.sqlite_sqlite \
androidx.sqlite_sqlite-framework \
androidx.lifecycle_lifecycle-common \
androidx.lifecycle_lifecycle-common-java8 \
androidx.lifecycle_lifecycle-runtime \
androidx.lifecycle_lifecycle-service
LOCAL_ANNOTATION_PROCESSOR_CLASSES := \
androidx.room.RoomProcessor
LOCAL_PACKAGE_NAME := com.app.appname
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
include $(BUILD_PACKAGE)
但是,在“make -j4”之后运行模拟器时,它会给出错误 -
E AndroidRuntime: java.lang.RuntimeException: 找不到 com.app.appname.RoleManagerDB 的实现。RoleManagerDB_Impl 不存在
E AndroidRuntime:在 com.app.appname.RoleManagerDB.getDatabase(RoleManagerDB.java:27) E AndroidRuntime:在 com.app.appname.MainActivity.lambda$onCreate$0$MainActivity(MainActivity.java:28)
E AndroidRuntime: at com.app.appname.-$$Lambda$MainActivity$xxx.run(Unknown Source:4) W ActivityTaskManager: 强制完成活动 com.app.appname/.MainActivity
我的应用程序可以在 Android Studio 上顺利编译和运行,那么我在 makefile 中缺少什么?
我的猜测是我似乎无法翻译 gradle 行:
annotationProcessor "androidx.room:room-compiler:$room_version"
到它的makefile等价物。任何帮助深表感谢!