【问题标题】:Where are generated data binding classes located?生成的数据绑定类在哪里?
【发布时间】:2015-09-18 14:43:04
【问题描述】:

当我构建一个Android应用程序时,代码中用于引用资源的文件R.java在以下位置生成:

/app/build/generated/source/r/debug/com/example/R.java

我的理解是,新的 Android 数据绑定库以类似的方式工作,在构建过程中根据布局文件名生成绑定类。比如这个布局名为view_drawer_page_header.xml

<data>
    <variable name="viewModel" type="com.example.ViewModel" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- actual layout -->

</LinearLayout>

应该生成一个名为ViewDrawerPageHeaderBinding 的类。文档mentions 表明此类将位于com.example.databinding 包中。但是,如果我在构建后在我的项目中搜索具有此名称的文件,则不会得到任何结果。该应用程序在设备上运行良好,因此我假设生成的文件是最终 .apk 的一部分。是否可以检查它们的内容?

同样的问题适用于例如生成的BR 类,用于引用带有@Bindable 注释的可更新Observable 属性。

【问题讨论】:

    标签: android android-databinding


    【解决方案1】:

    经过一番摸索,我在以下位置挖掘了生成的文件:

    /app/build/intermediates/classes/debug/com/example/databinding/ViewDrawerPageHeaderBinding.java

    /app/build/intermediates/classes/debug/com/example/BR.java

    【讨论】:

    • 在 Android Studio 3.0 中,您只会在其中找到 .class 文件。 Java 文件现在位于\MODULE\build\generated\source\apt\debug\com\example\PACKAGE
    • 在AS北极狐2020.3.1补丁4中,可以在/app/build/intermediates/javac/debug/classes/YOUR_APP_PACKAGE/databinding/下找到
    猜你喜欢
    • 2017-01-21
    • 1970-01-01
    • 2013-10-15
    • 2012-01-31
    • 2017-12-20
    • 2011-08-04
    • 2014-11-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多