2015-02-23 95 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標籤,它可能會導致它們變成紅色以及要包裝的最終佈局文件的生成。