生成文件中的 Android 数据绑定 (Android.mk)



根据很多例子,通过将以下代码片段放在build.gradle文件中来启用android数据绑定:

android {
....
dataBinding {
enabled = true
}
}

但是,我正在 AOSP 中开发一个 android 项目,该项目使用make 文件(Android.mk(构建。

所以我的问题是:我们如何在 android make file 中添加对数据绑定依赖项的支持?

我找到了一个适合我的解决方案!

攀登的第一个障碍看起来像这样: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

我发现谷歌有一个包含此包的存储库,因此我将其克隆到frameworks下的AOSP工作区中。

[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 Studio 3.6版本,以及最新的NDK + 将此添加到您的安卓毕业生中

android {
...
viewBinding {
enabled = true
}
}

检查这个 : https://developer.android.com/topic/libraries/view-binding

最新更新