2016-11-21 31 views
0

在Android Studio中2.2.2我有AndroidManifest.xml文件中的錯誤說「資源因配置而異」錯誤是什麼意思?

Resources referenced from the manifest cannot vary by configuration

有一個StackOverflow question通過此消息別人但得到的答覆只是描述瞭如何將其忽略。我想知道的是這是什麼意思?

與錯誤相關的行說

android:versionName="@string/appvername" 

什麼錯誤的意思,我如何防止(不只是忽略)呢?在這種情況下什麼是「配置」?

+1

嘗試添加工具:ignore =「ManifestResource」? –

+0

你有多少個「@ string/appvername」的定義? – nandsito

+0

_你有多少個@ string/appvername的定義?_每個語言一個,因爲每個語言環境都有獨特的翻譯。 (目前是兩種,但更多的是) – user316117

回答

2

在這種情況下什麼是「配置」?

報價the documentation

你應該總是外部化的資源,如從應用程序代碼的圖像和字符串,這樣就可以獨立維護。對資源進行外部化還使您能夠提供支持特定設備配置(如不同語言或屏幕尺寸)的備用資源,隨着更多采用不同配置的Android設備可用,這變得越來越重要。爲了提供與不同配置的兼容性,您必須使用按類型和配置對資源進行分組的各種子目錄,在項目的res /目錄中組織資源。

因此,配置是設備功能和狀態的混合,控制着什麼資源被加載。例如,設備區域設置確定從可用的字符串資源中使用哪些字符串。

我想知道的是什麼意思?

並非清單中的每個屬性都可以由資源填充,因爲系統無法根據配置處理不同的值。

例如,您不能通過使用android:name中的字符串資源來更改<activity>的Java類名,並且要考慮使用具有不同屏幕尺寸的不同Java類。雖然這是一個有趣的概念,但Android並未設置爲支持這一點。

我該如何防止(不只是忽略)它呢?

在這種情況下,我認爲你遇到了IDE錯誤。 android:versionName應該支持字符串資源,因爲這是一個面向用戶的值,因此您可能需要翻譯該字符串。因此,將tools:ignore="ManifestResource"添加到<manifest>元素,直到the bug gets fixed

+0

在整合facebook sdk時看到這個, http://stackoverflow.com/questions/ 35388688/android-facebook-app-id-showing-error-in-values-ta-strings-xml-and-cant-able/35451711 @CommonsWare總是提供很好的答案和細節,謝謝! – cwhsu