運行環境:Android Studio 1.4
gradle版本:2.10
工程編譯沒有問題,並且能在模擬器和真機上正常運行,但是當打包成Apk的時候,出現了
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上找到了一個解決辦法:
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方面的不同。
