28

I've just tried to generate signed apk for one of my projects (I already did this before), but (maybe since updating Android Studio) I'm getting

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

This is because I'm using Butterknife's @BindString, that is generated into something like that

target.settings = res.getString(2131230792);

How can I make studio not detect this as error? I've tried searching in settings, but without success.

Alvaro Gutierrez Perez
  • 3,669
  • 1
  • 16
  • 24
Yaroslav
  • 4,750
  • 3
  • 22
  • 33
  • I've been using butterknife for a while now, and this didn't appear until I started messing with product flavors in my gradle file. – Chris Feb 10 '16 at 19:12
  • 1
    Android Studio never runs out of stuff that cause developer headaches – Neon Warge Feb 01 '17 at 06:06

5 Answers5

66

Answer to this is: disable lint rule in your build.gradle

android {
  lintOptions {
    disable "ResourceType"
  }
}

Edit: This may happen particularly when migrating from Eclipse to Android Studio.

Ahmad Ebrahimi
  • 75
  • 1
  • 11
Yaroslav
  • 4,750
  • 3
  • 22
  • 33
8

This is reported on the GitHub project. It will be fixed in the next version of ButterKnife.

The workaround is indicated there, and is to add a lint.xml file on the app module with the following content to ignore that errors on *$$ViewBinder classes (the ones that ButterKnife generates):

<issue id="ResourceType">
    <!-- Remove this when this is fixed: https://github.com/JakeWharton/butterknife/issues/338 -->
    <ignore path="**/*$$ViewBinder.java" />
</issue>
Alvaro Gutierrez Perez
  • 3,669
  • 1
  • 16
  • 24
  • 1
    The accepted answer blindly turns off all ResourceType lint checks for your module, exposing your codebase to potentially more bugs, while this answer specifically targets the generated classes that cause the issue. This is why I prefer this answer. – Andrew Orobator Dec 09 '16 at 03:10
6

Maybe a better solution is to temporary disable error/warning by using @SuppressLint("ResourceType") just before the method definition.

Kateract
  • 822
  • 6
  • 15
user7287497
  • 69
  • 1
  • 1
  • 1
    Welcome to StackOverflow! Check [answer] for tips on giving good answers to questions here. Specifically there are ways to format code snips so they show as code rather than plain text. Also, in general it's best to focus on newer questions without well accepted answers. – Kateract Dec 12 '16 at 22:58
1

I has a similar problem. with a getString method. Turned out i was trying to get the string value not from strings.xml but from ids.xml, because i was getting it with getString(R.id.MYSTRING), when it should be R.string.MYSTRING

lxknvlk
  • 2,744
  • 1
  • 27
  • 32
-1

this is for some Views by same id and u try to change some property for one of them. When try to generate apk android find some confilict about resours id

To solve that

better way find the code and try solve that from another way to your purpose

GoodLuck