如何在模块(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.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 4.2 上导入 .AAR 模块