2015-02-23 67 views
8

我有Android的gradle构建问题。长话短说,我已经建立2种口味:Android风味和资源文件

productFlavors{ 
     abcDemoFree{ 
     } 

     abcDemo{ 
     } 
} 

Eeach味道有他自己的这个活动活动(Settings.java)和布局图(settings_layout.xml)。 从主文件中删除,所以Settings.java和settings_layout.xml只存在于flavor中。

abcDemoFree 
    - java 
     - Settings.java 
    - res 
     - settings_layout.xml 

abcDemo 
    - java 
     - Settings.java 
    - res 
     - settings_layout.xml 

的Android Studio中创建4个生成变种:

abcDemoFreeDebug 
abcDemoFreeRelease 
abcDemoDebug 
abcDemoRelease 

一切工作不错,我能够创造与行为,我从各味期待APK。 问题是,当我切换到一个buildVariant,例如abcDemoDebug,机器人工作室从abcDemoFreeDegub/RES/settings_layout.xml

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

</LinearLayout> 

报告从资源文件中的错误在另一种味道,在我 例如这些线

xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 

生成错误:URI未注册。

如何摆脱这些错误?或者,这可能是正常的行为?

回答

0

不幸的是,当您切换时,AndroidStudio会使用错误风格的资源。你必须做一个干净的,然后在切换变体之后进行构建,以使这些错误消失。

0

如果您实际上没有切换构建变体,则会出现错误。如果你只是看文件,它会显示错误,但如果你真的切换构建配置和重建,你会没事的。另外,请确认你没有做具体的实施或编译像口味:

myFlavorImplementation android.libraries.forexample

因为那会错过清理必要的库警告。

enter image description here

使用构建变量滑出更改到其他调试版本,它应该自动重建,但如果没有,只是做了自己的重建。另外请确保你正在查看实际文件,而不是有时看到的生成文件,如果你使用注释工具或与布局包装器的数据绑定,并且你在布局和第一个子标签中有android标签,它可能会导致它们变成红色以及要包装的最终布局文件的生成。