運行環境:Android Studio 1.4
gradle版本:2.10
工程編譯沒有問題,並且能在模擬器和真機上正常運行,但是當打包成Apk的時候,出現了
1
2
3
4
5
6
7
8
|
private static RadioButton
createGroupTabItem(Context context, MemberType
data) { RadioButton
rb = new RadioButton(context); ... rb.setTextColor(context.getResources().getColorStateList(R.drawable.tab_text_checker_white_to_theme)); ... return rb; } |
其實也就是創建一個RadioButton,然後設置字體顏色的時候,出現了上述錯誤,最後在StackOverflow上找到了一個解決辦法:
1
2
3
4
5
|
android
{ lintOptions
{ disable "ResourceType" } } |
問題雖然解決了,但是我並不知道原因,而且這麼修改是否會導致一些其他位置的問題,這個就無法確認,因此我嘗試去了解。
還是StackOverflow,傳送門:http://stackoverflow.com/questions/34293718/expected-resource-of-type-animator-resourcetype
這哥們兒遇到的問題其實個我這個很類似,通過那個,我知道原因了,我把資源類型弄錯了,總的來說這是我的不規範編程導致的,怎麼說呢,我上面是設置textcolor,那說明我應該使用一個color資源,單色值的應該來源於colors.xml中定義的,但是我上面是使用的一個colorstate,是一個自定義的selector,一個xml文件,這個時候我們應該把這個文件放在res/color目錄中,而不是res/drawable目錄中,然後使用R.color.xxx去引用,這樣就沒問題了。詳見官方說明:https://developer.android.com/guide/topics/resources/available-resources.html
到此我們終於找到事情的原委了,然後我們說下爲什麼在build.gradle文件中添加上述配置之後就能打包成功呢,其實上述配置是禁用資源類型檢測,這樣在打包過程中就不會因爲資源類型不匹配而提示錯誤了。
看來還是自己基礎不過關啊。這裏提醒一點,在Eclipse中,像上述操作,並不會出現這樣的問題,所以說啊,android studio開發跟eclipse開發在工程管理上,有很多不一樣的地方,我的另外一篇文章也有關於jar方面的不同。