用Android Studio 3.0 Canary 4构建错误

我目前正在开发一个即时应用程序,为此我已经将我的单片应用程序重组为特征模块。 一切都在运行,直到Android Studio canary 3,但更新到Android Studio Canary 4后,我的项目无法生成以下错误:

A problem was found with the configuration of task ':minimoBase:dataBindingExportBuildInfoDebugAndroidTest'. > Directory '/Users/nayak.vishal/projectData/minimo_instant_app_project/putica-client-android- native/minimoBase/build/intermediates/data-binding-info/androidTest/debug' specified for property 'xmlOutFolder' does not exist. 

以下过程作为解决此问题的解决方法:

在gradle命令行上执行以下构建命令

1)gra净

2)gradlew:appModule:assembleDebug

  • 这里appModule是构建可安装的apk的应用程序模块的名称
  • 构建成功,并且在输出文件夹中生成的调试apk可以成功安装

3)gradlew:instantAppModule:assembleDebug

  • 这里instantAppModule是即时应用程序模块的名称
  • 构建成功,即时应用程序可以通过深层链接安装和启动

一旦上述命令行构建成功,通过Android Studio Canary 4构建也会停止引发构建错误。

当我打开库模块的data-binding ,出现了类似的错误。 当我将其关闭并将需要data-bindingapp模块的所有类移动时,它才起作用。 所以我想有一个DataBinding不能在Library模块上工作的问题(Gradle 2.x很好)。

 dataBinding { enabled = false } 

我正在使用com.android.tools.build:gradle:3.0.0-alpha5和Android Studio 3.0预览Canary5

UPDATE

虽然原来的答案工作,我真的想打开我的图书馆模块的data-binding ,在那里我使用绑定技术来实现一些基类。 我将它们移回library模块,并将kotlin版本升级到最新版本1.1.3-2 。 突然它也起作用。 我不确定哪一个更好,但是两种方法都适合我。

更新2

这时我正在使用com.android.tools.build:gradle:3.0.0-alpha9和kotlin 1.1.3-2 ,突然问题重新出现。 现在我认为这个问题不是来自Kotlin。 我的图书馆模块转为dataBiding { enabled=true} ,但它没有任何布局文件。 我试图创建一个由<layout>标签包装的假布局文件,它的工作原理

  <?xml version="1.0" encoding="utf-8"?> <layout> <View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"/> </layout> 

在您的gradle.properties文件中,添加以下行

 android.enableAapt2=false 

AS3.0的最新版本默认切换为使用AAPT2。 你可以在你的gradle.properties文件中使用上面提到的代码行来禁用AAPT2,并继续在AS3 canary上开发4。

这对我来说是一个问题,当我有一个“基本”功能模块没有任何布局(我所有的实际布局在不同的功能)

在基本功能中添加一个虚拟的布局XML文件(例如base/src/res/layout/dummy.xml )意味着创建了丢失的目录并编译了应用程序。

(这是使用com.android.tools.build:gradle:3.0.0-alpha6

我有同样的问题,看起来像在加那利4错误。

现在,作为解决方法,我降级到Android Studio 3.0.0 Canary 3( https://developer.android.com/studio/archive.html ),并将Android Gradle插件降级到3.0.0-alpha3:

 dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha3' ... } 

更新:

更新后只需检查Canary版本。 对于这个看到工具栏(File..Edit..View..line)上方的Android Studio版本,其中像“Canary X”。 – > X这样的名称就像3,4,5等数字。

例如,假设更新的版本(X)是5.尝试将build.gradle(applicationName)中的类路径更改为3.0.0- alpha5并再次同步(/ Try):

 dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha5' } 

意思是更新版本(X): –

 dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alphaX' }