Android.mk 中的数据绑定(Data Binding)

13

根据很多例子,启用Android数据绑定需要在build.gradle文件中放入以下代码片段:

build.gradle文件中放入以下代码片段启用Android 数据绑定。
android {
    ....
    dataBinding {
        enabled = true
    }
}

然而,我正在AOSP上开发一个Android项目,它使用构建文件(Android.mk)进行构建。

所以我的问题是:我们如何在Android构建文件中添加对数据绑定依赖项的支持?


不,还没有。我很久以前就放弃了这个想法,因为找不到解决方案 :) - waqaslam
@MattD,我不记得我为什么发布那个链接的确切原因了。无论如何,我也无法使其工作。我找到了一些示例(例如:http://androidxref.com/6.0.0_r1/xref/frameworks/data-binding/Android.mk),但它们都没有起作用。 - Banana droid
请查看此链接:https://dev.to/manishkherde/comment/an8 - Shweta Chauhan
有进展了吗?@waqaslam。我尝试了 LOCAL_DATA_BINDING := true,但对我没有起作用。 - ziLk
当我将默认模板本地代码移植到AOSP时,我也遇到了这个问题。我通过删除数据绑定代码并使用常规的Android方式进行了处理。如果有其他方法,我会很高兴的。 - zeitgeist
显示剩余8条评论
2个回答

2

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

要克服的第一个障碍看起来会是这样: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/

谢谢!这帮助我解决了数据绑定依赖的问题。我喜欢使用符号链接来连接AOSP的想法。我期待着一个永久性的解决方案。 - code
这个解决方案真是救星。虽然几乎没有相关的文档,但感谢您的分享。 - Devidas

-5

那是ViewBinding,不一样的东西。此外,AOSP中的构建不使用Gradle,这就是为令我们要求使用make(甚至Soong)配置文件的原因。 - Abdelilah El Aissaoui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接