使用Android Studio 3.0 Canary 4构建错误

时间:2017-06-26 06:19:45

标签: android android-studio gradle android-instant-apps

我目前正在开发一个即时应用程序,我已将我的单片应用程序重组为功能模块。 一切都已启动并运行到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.

6 个答案:

答案 0 :(得分:8)

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

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

1)gradlew clean

2)gradlew:appModule:assembleDebug

  
      
  • 此处appModule是用于构建可安装的apk
  • 的应用程序模块的名称   
  • 构建成功,输出文件夹中生成的调试apk可以成功安装
  •   

3)gradlew:instantAppModule:assembleDebug

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

上述命令行构建成功后,通过Android Studio Canary 4构建也会停止抛出构建错误。

答案 1 :(得分:5)

当我为库模块打开document.getElementById('previous-song').addEventListener('click', function() { $.ajax({ type: 'POST', url: 'https://api.spotify.com/v1/me/player/previous', headers: { 'Authorization': "Bearer " + access_token }, }).done(function(data) { setTimeout( $.ajax({ url: 'https://api.spotify.com/v1/me/player/currently-playing', headers: { 'Authorization': 'Bearer ' + access_token }, }).done(function(response) { currentPlayingPlaceholder.innerHTML = currentPlayingTemplate(response); }), 3000); //wait 3 seconds before updating the currently playing }); }, false);时出现类似错误。当我关闭它并将所有需要data-binding的类移动到data-binding模块时,它可以工作。所以我想有一个问题,DataBinding不再适用于Library模块(Gradle 2.x很好用)。

app

我正在使用dataBinding { enabled = false } 和Android Studio 3.0 Preview Canary5

更新

虽然最初的答案有效,但我真的想在我的库模块上打开com.android.tools.build:gradle:3.0.0-alpha5,在那里我使用绑定技术实现一些基类。我将它们移回data-binding模块并将library版本升级到最新版本kotlin。突然它也有效。我不确定哪一个更好,但两种方式都适合我。

更新2

此时我正在使用1.1.3-2和kotlin com.android.tools.build:gradle:3.0.0-alpha9,突然问题再次出现。 现在我认为这个问题不是来自科特林。我的库模块已转为1.1.3-2,但它没有任何布局文件。我试图创建一个由dataBiding { enabled=true}标签包装的假布局文件,它可以正常工作

<layout>

答案 2 :(得分:3)

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

android.enableAapt2=false

最新版本的AS3.0默认使用AAPT2。 您可以使用上面提到的代码行在gradle.propertіes中禁用AAPT2,并继续在AS3 canary 4上进行开发。

答案 3 :(得分:3)

当我有一个&#34; base&#34;这对我来说是一个问题。没有任何布局的功能模块(我所有的实际布局都在不同的功能中)

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

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

答案 4 :(得分:1)

<强>更新

更新后只需检查Canary版本。为此,请参阅工具栏上方的Android Studio版本(File..Edit..View..line),其中名称在末尾,如“Canary X”.-&gt; 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'
}

答案 5 :(得分:1)

我有同样的问题,好像是Canary 4中的一个错误。

目前,作为解决方法,我降级为Android Studio 3.0.0 Canary 3(This is an archive of all Android Studio releases),并将Android Gradle插件降级为3.0.0-alpha3

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