根据很多例子,启用Android数据绑定需要在build.gradle文件中放入以下代码片段:
build.gradle文件中放入以下代码片段启用Android 数据绑定。android {
....
dataBinding {
enabled = true
}
}
然而,我正在AOSP上开发一个Android项目,它使用构建文件(Android.mk)进行构建。
所以我的问题是:我们如何在Android构建文件中添加对数据绑定依赖项的支持?
根据很多例子,启用Android数据绑定需要在build.gradle文件中放入以下代码片段:
build.gradle文件中放入以下代码片段启用Android 数据绑定。android {
....
dataBinding {
enabled = true
}
}
然而,我正在AOSP上开发一个Android项目,它使用构建文件(Android.mk)进行构建。
所以我的问题是:我们如何在Android构建文件中添加对数据绑定依赖项的支持?
我找到了一个适合我的解决方法!
要克服的第一个障碍看起来会是这样:error: package net.mulliken.pinenotenotebook.databinding does not exist
我发现Android Studio会自动生成这些文件。它在app/build/generated/data_binding_base_class_source_out/debug/out/net/mulliken/pinenotenotebook/databinding
中。为了将其纳入我的构建中,我在我的Android工作区中从databinding_src
到我的包文件夹中创建了符号链接。
之后仍然无法工作,因为它无法找到视图绑定包。你可能会得到这样的错误:error: package androidx.viewbinding does not exist
我发现Google有一个存储库,其中包括此包,所以我将其克隆到我的AOSP工作空间下的frameworks
中。
[me aosp/frameworks] $ git clone -b studio-main https://android.googlesource.com/platform/frameworks/data-binding data-binding
[me packages/apps/MyAPP] $ ln -s ../../../../frameworks/data-binding/extensions/viewbinding/src/main/java/ androidx_viewbinding_src
最后,我的Android.bp
文件看起来像这样:
android_app {
name: "PineNoteNotebook",
static_libs: [
"androidx.appcompat_appcompat",
"com.google.android.material_material",
"androidx-constraintlayout_constraintlayout",
"androidx.navigation_navigation-fragment",
"androidx.navigation_navigation-ui",
],
certificate: "platform",
srcs: [
"./**/*.java",
],
resource_dirs: ["res"],
product_specific: true,
sdk_version: "current",
optimize: {
enabled: false
},
required: ["libpinenote"],
}
我的包树结构如下:
.
├── Android.bp
├── AndroidManifest.xml -> /home/mulliken/AndroidStudioProjects/PineNoteNotebook/app/src/main/AndroidManifest.xml
├── androidx_viewbinding_src -> ../../../../frameworks/data-binding/extensions/viewbinding/src/main/java/
├── databinding_src -> /home/mulliken/AndroidStudioProjects/PineNoteNotebook/app/build/generated/data_binding_base_class_source_out/debug/out
├── res -> /home/mulliken/AndroidStudioProjects/PineNoteNotebook/app/src/main/res/
└── src -> /home/mulliken/AndroidStudioProjects/PineNoteNotebook/app/src/main/java/
android {
...
viewBinding {
enabled = true
}
}
请查看:https://developer.android.com/topic/libraries/view-binding
LOCAL_DATA_BINDING := true
,但对我没有起作用。 - ziLk