Error:Error: Expected resource of type drawable [ResourceType]

運行環境:Android Studio 1.4

  gradle版本:2.10

  工程編譯沒有問題,並且能在模擬器和真機上正常運行,但是當打包成Apk的時候,出現了

     Error:Error: Expected resource of type color [ResourceType]  這個錯誤,導致打包不成功。
    以下是出錯地方的代碼:
      
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上找到了一個解決辦法:

  在build.gradle文件中增加一下信息,然後打包成功了:
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方面的不同。

發佈了92 篇原創文章 · 獲贊 61 · 訪問量 60萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章