Error: No resource found that matches the given name

Well, as I continue to attempt to build OmniRom 5 for the Samsung Galaxy S4, T-Mobile Variant (JFLTETMO SGH-M919), I encountered this error:

[CODE]
frameworks/base/packages/SystemUI/AndroidManifest.xml:328: error: Error: No resource found that matches the given name (at ‘icon’ with value ‘@*android:drawable/ic_shortcut_action_theme_switch’).

frameworks/base/packages/SystemUI/AndroidManifest.xml:340: error: Error: No resource found that matches the given name (at ‘icon’ with value ‘@*android:drawable/ic_shortcut_action_theme_switch’).

make: *** [/home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/common/obj/APPS/SystemUI_intermediates/src/R.stamp] Error 1
make: *** Waiting for unfinished jobs….
[/CODE]

After some review, I realized that the icon called for in frameworks/base/packages/SystemUI/AndroidManifest.xml:328 and 340 was not in the res/drawable folder. So I chose a different icon in that folder and edited both of those lines to say:

android:icon=”@*android:drawable/ic_sysbar_theme_switch”

That will allow it to continue, but it may look funny in real life, depending on the icon missing and the replacement that was chosen. We will have to wait and see on that once it builds! You could also look around online or in other source to find an appropriate icon to put in it’s place, but that could turn into a really time consuming task, depending on what you are looking for.

Linux – Keep it simple.

Error: No rule to make target export_includes….

While I was compiling OmniRom for my T-mobile Samsung Galaxy S4 (JFLTETMO SGH-M919), I ran into this common error:

[CODE]
/obj/SHARED_LIBRARIES/libinputflinger_intermediates/export_includes
make: *** No rule to make target `/home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libmedia_intermediates/export_includes’, needed by `/home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/import_includes’. Stop.
mkdir /home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libmedia_intermediates
touch /home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libmedia_intermediates/export_includes
[/CODE]

Often during the compiling process, some file making process is supposed to output a file (export_icludes) that needs to be imported somewhere else (import_includes). The idea behind these files, as far as I can tell, is a sort of baton pass of information. If you take a look at these files, most of them are empty, because they don’t actually need to pass on any information. Sometimes, however, they do have a piece of code or other pertinant information that is used by the next make process to build something.

There are four ways that I know of to fix this problem. The BEST way to fix this problem would be to review the code (.cpp, header files, etc.) and tell the offending party to output a proper export_includes file. The CLEAN way to fix this problem is to edit the code of the import_includes file to quit asking for that export_includes file. A QUICK way to fix this problem is to copy the needed file from some other build of the same device, so it will hopefully include the right information. The DIRTY FIX is to simply create the folder needed, and put an empty file in there named export_includes.

So, I used the ‘dirty fix’ of simply creating an empty file at that location by that name. Esentially I am saying to the next part of the compilation that there was no information from the previous part to pass on. If that is true, then it should work. If that is not true, but the information is irrelevant, then it still should work. If it is not true and the information is relevant, then there will be problems, to be sure!

$ mkdir /home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libmedia_intermediates

$ touch /home/alaskalinuxuser/Documents/projects/phones/compile/omni5/out/target/product/jfltetmo/obj/SHARED_LIBRARIES/libmedia_intermediates/export_includes

Provided that no information actually did need to get passed on, then this is acceptable. It would be better, however, to fix the code to add the needed lines to create the said file automatically during the compiler process with all the proper information. In keeping with my “keep it simple” motto, I am opting not to do that.

Linux – Keep it simple.