Android风味和资源文件

Ban*_*zio 9 android gradle android-productflavors

我有android gradle构建的问题.长话短说,我创造了两种口味:

productFlavors{
        abcDemoFree{
        }

        abcDemo{
        }
}
Run Code Online (Sandbox Code Playgroud)

Eeach flavor为此活动提供了自己的Activity(Settings.java)和布局(settings_layout.xml).从main开始,两个文件都被删除了,因此Settings.java和settings_layout.xml只存在于各种风格中.

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

abcDemo
    - java
        - Settings.java
    - res
        - settings_layout.xml
Run Code Online (Sandbox Code Playgroud)

Android Studio创建了4种构建变体:

abcDemoFreeDebug
abcDemoFreeRelease
abcDemoDebug
abcDemoRelease
Run Code Online (Sandbox Code Playgroud)

一切都很好,我能够创建apk我期待从每个味道的行为.问题是当我切换到一个buildVariant时,例如abcDemoDebug,android studio报告来自另一种风格的资源文件的bug,在我的例子中来自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>
Run Code Online (Sandbox Code Playgroud)

这些线

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"
Run Code Online (Sandbox Code Playgroud)

生成错误:URI未注册.

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

Nic*_*mer 2

不幸的是,当您切换时,AndroidStudio 使用了错误风格的资源。您必须进行清理,然后在切换变体后进行构建,才能消除这些错误。