如何在模块(Android Studio)中使用 com.android.databinding?

Posted

技术标签:

【中文标题】如何在模块(Android Studio)中使用 com.android.databinding?【英文标题】:How to use com.android.databinding in module(Android studio)? 【发布时间】:2016-06-24 09:24:33 【问题描述】:

我想使用com.android.databinding: dataBinder 创建一个库。

项目的build.gradle:

buildscript 
    repositories 
        jcenter()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'com.android.databinding:dataBinder:1.0-rc4'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    


allprojects 
    repositories 
        jcenter()
        maven  url "https://jitpack.io" 
        //gradlew -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8580
    



task clean(type: Delete) 
    delete rootProject.buildDir

模块的build.gradle:

apply plugin: 'com.android.library'  // apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'


android 
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    aaptOptions 
        additionalParameters "--no-version-vectors"
    

    defaultConfig 
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.1"
        multiDexEnabled true
        generatedDensities = []
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    




dependencies 
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile 'com.android.support:support-v4:23.2.0'
 

我改变 apply plugin: 'com.android.application' 改为apply plugin: 'com.android.library'。但是当我将代码更改为以下错误时发生了。

错误:

信息:Gradle 任务 [:app:generateDebugSources, :app:generateDebugAndroidTestSources] :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preDebugAndroidTestBuild 最新 :app:preDebugUnitTestBuild 最新:app:preReleaseBuild UP-TO-DATE :app:preReleaseUnitTestBuild UP-TO-DATE :app:prepareComAndroidDatabindingAdapters10Rc3Library UP-TO-DATE :app:prepareComAndroidDatabindingLibrary10Rc3Library UP-TO-DATE :app:prepareComAndroidSupportAnimatedVectorDrawable2320Library 最新:app:prepareComAndroidSupportAppcompatV72320Library 最新:app:prepareComAndroidSupportCardviewV72320Library 最新:app:prepareComAndroidSupportDesign2320Library 最新 :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE :app:prepareComAndroidSupportPaletteV72320Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72320Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42320Library UP-TO-DATE :app:prepareComAndroidSupportSupportVectorDrawable2320Library 最新 :app:prepare ComGithubAfollestadMaterialDialogsCore0856Library 最新:app:prepareComGithubOrangegangstersSwipy122Library 最新:app:prepareComMakeramenRoundedimageview221Library 最新:app:prepareDeKeyboardsurferAndroidWidgetCrouton185Library 最新 :app:prepareMeZhanghaiAndroidMaterialprogressbarLibrary114Library 最新:app:prepareDebugDependencies:app:compileDebugAidl 最新:app:compileDebugRenderscript 最新 :app:generateDebugAssets 最新 :app:mergeDebugAssets :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources 最新:app:mergeDebugResources:app:processDebugManifest :app:dataBindingLayoutsProcessDebugResources :app:processDebugResources D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\build\intermediates\res\merged\debug\values-fa\values-fa.xml 警告:(70)警告:字符串“app_name”标记为不可翻译但 存在于语言环境“fa”中:app:dataBindingInfoClassProcessDebugResources :app:generateDebugBuildConfig UP-TO-DATE :app:generateDebugSources :app:prepareComAndroidSupportMultidexInstrumentation101Library 最新:app:prepareDebugAndroidTestDependencies :app:compileDebugAndroidTestAidl :app:compileDebugNdk UP-TO-DATE :app:compileLint :app:copyDebugLint 最新 :app:compileDebugJavaWithJavac D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\activities\common\MoreInfoAppActivity.java 错误:(9, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(14, 3) 错误:找不到符号类 ActivityMoreInfoAppBinding D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\activities\splash\SplashPresenterActivity.java 错误:(13, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(25, 12) 错误:找不到符号类 ActivitySplashBinding D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\section\fontManager\CardFont.java 错误:(16, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(64, 9) 错误:找不到符号类 CardFontBinding D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\section\language\CardLanguage.java 错误:(16, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(63, 9) 错误:找不到符号类 卡片语言绑定 D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\section\market\CardApp.java 错误:(15, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(58, 9) 错误:找不到符号类 CardAppBinding D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\section\themeManager\CardTheme.java 错误:(16, 39) 错误:包 com.xomorod.utility.databinding 没有 存在错误:(63, 9) 错误:找不到符号类 CardThemeBinding D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\activities\common\AbstractMainActivity.java 错误:(25, 15) 错误: 属性值必须是常数错误:(28, 15) 错误:属性值必须是常量错误:(31、15)错误: 属性值必须是常量 D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\activities\common\MoreApplicationActivity.java 错误:(25, 15) 错误: 属性值必须是常数错误:(28, 15) 错误:属性值必须是常量 D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\activities\common\SettingsActivity.java 错误:(230, 19) 错误: 属性值必须是常数错误:(301, 19) 错误:属性值必须为常量 错误:(383, 19) 错误: 属性值必须是常量 D:\WorkSpace\Android\Java\Xomorod\Utility\src\app\src\main\java\com\xomorod\utility\section\market\MoreAppFragment.java > 错误:(37, 15) 错误: 属性值必须是常量 错误:(40, 15) 错误:属性值必须是常量错误:(43, 15) 错误: 属性值必须是常量 注意:某些输入文件使用或 覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译 细节。错误:任务执行失败 ':app:compileDebugJavaWithJavac'。 编译失败;有关详细信息,请参阅编译器错误输出。信息:BUILD FAILED 信息:总时间:12.413 秒 信息:24 个错误 信息:1 个警告 信息:查看完整 控制台输出

【问题讨论】:

你找到解决方案了吗? 【参考方案1】:

按照此处的指南进行操作:

http://developer.android.com/tools/data-binding/guide.html

您必须将dataBinding.enabled = true 添加到android 部分。您还应该使用 android gradle 插件 1.5.0 或更高版本。

您也不再需要apply plugin: 'com.android.databinding'。数据绑定现在包含在 android gradle 插件中。

【讨论】:

我删除了应用插件:“com.android.databinding”发生了这个错误。错误:无法找到方法 'android.databinding.tool.LayoutXmlProcessor.(Ljava/lang/String;Landroid/databinding/tool/writer/JavaFileWriter;IZLandroid/databinding/tool/LayoutXmlProcessor$OriginalFileLookup;) 你用的是哪个版本的android gradle插件? 另外,您的依赖项中有 jcenter 吗? 类路径'com.android.tools.build:gradle:1.5.0' 我不断收到错误消息:Error:Could not find com.android.databinding:library:1.1. Required by【参考方案2】:

只添加

android 
    ...
    dataBinding 
        enabled = true
    

如果您使用的是 gradle 2.0 或更高版本。 例如:

classpath 'com.android.tools.build:gradle:2.3.0'

【讨论】:

以上是关于如何在模块(Android Studio)中使用 com.android.databinding?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中导入模块而不创建副本

Android Studio - 如何在子目录中制作模块?

如何在库模块Android Studio中调用主应用程序模块功能

如何在 Android Studio 4.2 上导入 .AAR 模块

[在Android Studio中,构建一个Android Wear项目,如何在两个模块中包含相同的文件

如何在 Android Studio 中从 SVN 导入模块