[tutorial]**Fix for recompiling framework-res with apktool** 4/15/2012

Search This thread

Tiffany84

Inactive Recognized Themer
Jul 27, 2010
6,280
3,323
Hi Fernando - I accidentally stumbled about this thread (I have a One S, no X...). I never had issues with compiling framework, since I used a modded apktool version from day 1 (I used that already on Galaxy Nexus), which compiles plurals just fine.

Initially I also had some issue with com.htc.resources, but could solve these fairly quick. Since I`m sure One X com.htc. is fairly similar to One S, maybe my fix can help you guys too.

This was the original error log

PHP:
C:\apk_manager_5.0\other\..\projects\com.htc.resources.apk\res\values\layouts.xml:3: error: Found tag layout where item is expected
C:\apk_manager_5.0\other\..\projects\com.htc.resources.apk\res\values\public.xml:1975: error: Public entry identifier 0x2050209 entry index is larger than available symbols (index 521, total symbols 521).
C:\apk_manager_5.0\other\..\projects\com.htc.resources.apk\res\values\public.xml:1975: error: Public symbol dimen/zero_dummy_dimen declared here is not defined.

This is how I solved it:

Step 1: Fixing layout tags in layouts.xml

I replaced all tags with:

<item type="layout" at the front and </item> at the end

PHP:
<resources>
    <item type="layout" name="htc_list_item_imageicon_text">@layout/zzzz_htc_list_item_imageicon_text</item>
    <item type="layout" name="pin_keyboard">@layout/zzzz_pin_keyboard</item>
    <item type="layout" name="zero_dummy_layout">@layout/alert_dialog</item>
    <item type="layout" name="htc_list_item_2text_2stamp">@layout/zzzz_htc_list_item_2text_2stamp</item>
    <item type="layout" name="htc_list_item_2text_bright">@layout/zzzz_htc_list_item_2text_bright</item>
    <item type="layout" name="htc_list_item_image_2text_image_bright">@layout/zzzz_htc_list_item_image_2text_image_bright</item>
    <item type="layout" name="htc_list_item_imageicon_2text_2stamp">@layout/zzzz_htc_list_item_imageicon_2text_2stamp</item>
    <item type="layout" name="htc_list_item_separator">@layout/zzzz_htc_list_item_separator</item>
    <item type="layout" name="htc_list_item_dlna_1">false</item>
</resources>

Step 2: Fixing public.xml error

Here I simply deleted the entry, since apktool is rebuilding that just fine

Hope that helps you guys here also with your issues.


OMG!! Thank you SOOO much for posting this. I've been pulling my hair out trying to get resources to compile for the AT&T One X and after I did what u suggested it compiled without error. Can't thank you enough.
 

Sh0X31

Senior Member
Mar 27, 2010
1,415
649
Frankfurt am Main
I edit the framework-res from insertcoin v6.4.5.

I edited \framework\res\values\bools.xml. Becouse i want to disable the 360° roating and change
<bool name="config_allowAllRotations">true</bool>

to

<bool name="config_allowAllRotations">false</bool>

I have edited anims.xml, layout.xml, raws.xml, plurals.xml, plurals.xml as in the description of fernando sor. But when I recompiling i get this.

m393gxzo.jpg
 

rayford85

Senior Member
May 22, 2011
4,263
5,279
I edit the framework-res from insertcoin v6.4.5.

I edited \framework\res\values\bools.xml. Becouse i want to disable the 360° roating and change


to



I have edited anims.xml, layout.xml, raws.xml, plurals.xml, plurals.xml as in the description of fernando sor. But when I recompiling i get this.

m393gxzo.jpg

Just delete that public Id. The apk will build the proper public id. :)

Sent from my HTC One X using xda premium
 

he_stheone64

Senior Member
Aug 1, 2008
5,033
10,991
Düsseldorf
Exactly what error log and both buddies here told you ;)

Open public.xml, go to line 6981 with pin_keyboard entry, delete this line and save. Then compile and apktool will build this entry fine and you`re all set.
 

Sh0X31

Senior Member
Mar 27, 2010
1,415
649
Frankfurt am Main
Exactly what error log and both buddies here told you ;)

Open public.xml, go to line 6981 with pin_keyboard entry, delete this line and save. Then compile and apktool will build this entry fine and you`re all set.

I have delete the line 6981 with pin_keyboard. Now I have a recompiling problem again.
ssyy2ijb.jpg



1. Question: If I delete the pin_keyboard entery is that not missing in framework-res.apk?
Can this caused an error?

2. Question: how a make the framework-res.apk to a flashable .zip? :p Can someone tell me please?
 
Last edited:

he_stheone64

Senior Member
Aug 1, 2008
5,033
10,991
Düsseldorf
I have delete the line 6981 with pin_keyboard. Now I have a recompiling problem again.
ssyy2ijb.jpg



1. Question: If I delete the pin_keyboard entery is that not missing in framework-res.apk?
Can this caused an error?

2. Question: how a make the framework-res.apk to a flashable .zip? :p Can someone tell me please?

You can use an existing update.zip with the correct update-binary for your device as a base. Then your folder structure under your mymodupdate.zip has to be correct

system/framework and / or system/app if you also push an app.

Then you can use this very basic script as updater-script, which works fine for most stuff (don`t know where busybox is on your device, I`m coming from the dark side of the force, the One S) you need to push in data or system:

PHP:
ui_print("Mod created by $M3RT$");
show_progress(0.500000, 0);

ui_print("Writing System");
run_program("/sbin/busybox", "mount", "/system");
package_extract_dir("system", "/system");
unmount("/system");

ui_print("Writing Data");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data");
unmount("/data");

ui_print("Finishing Up");
show_progress(0.100000, 0);

In any case I would recommend you also read something like this, to understand what you are doing here:

http://xdaforums.com/showthread.php?t=1265120
 
Last edited:

Sh0X31

Senior Member
Mar 27, 2010
1,415
649
Frankfurt am Main
You can use an existing update.zip with the correct update-binary for your device as a base. Then your folder structure under your mymodupdate.zip has to be correct

system/framework and / or system/app if you also push an app.

Then you can use this very basic script as updater-script, which works fine for most stuff (don`t know where busybox is on your device, I`m coming from the dark side of the force, the One S) you need to push in data or system:

PHP:
ui_print("Mod created by $M3RT$");
show_progress(0.500000, 0);

ui_print("Writing System");
run_program("/sbin/busybox", "mount", "/system");
package_extract_dir("system", "/system");
unmount("/system");

ui_print("Writing Data");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data");
unmount("/data");

ui_print("Finishing Up");
show_progress(0.100000, 0);

In any case I would recommend you also read something like this, to understand what you are doing here:

http://xdaforums.com/showthread.php?t=1265120

ok :) Thank you.
But whats the error when I recompiling?
ssyy2ijb.jpg
 

Top Liked Posts

  • There are no posts matching your filters.
  • 44
    Greetings

    i do not have have a one x but i have come up with a solution for the errors in apktool when recompiling framework-res.

    i have a rezound and have run sense 4.0 on my phone. the screen res is also very similar to the one x.

    there are four xmls in values that need to be rewritten.

    anims.xml
    layout.xml
    a small change in plurals.xml
    and raw.xml

    the change made in plurals has to be made in all the foreign language plurals if you want to keep the languages. you can however delete them if you like. the framework i am posting has the plurals fixed for all languages though.

    i am posting also my version of apktool which i have modified to properly smali htc apks.

    to begin.

    download the apktool linked here
    unzip and place the folder wherever you want on your computer.
    pull framework-res.apk and com.htc.resources.apk from your rom and place in the apktool folder

    open a command window to apktool. (right click on your apktool folder and hit shift at the same time. one of the options will be to open a command window.)

    type apktool if framework-res.apk hit enter
    then type apktool if com.htc.resources.apk hit enter

    now your needed dependencies are installed.

    type apktool d framework-res.apk framework hit enter.

    note im naming the out folder framework. you can name it anything you like.

    this will create a decompiled framework-res. i named the folder framework so there will be a framework folder in your apktool folder now.

    go to res/values anims.xml

    change this

    <anim name="htc_ime_decelerate_interpolator">@anim/zzz_htc_ime_decelerate_interpolator</anim>

    to this

    <item type="anim" name="htc_ime_decelerate_interpolator">@anim/zzz_htc_ime_decelerate_interpolator</item>

    go to res/values layout.xml

    change this

    Code:
    <layout name="htc_list_item_2text_2stamp">@layout/zzzz_htc_list_item_2text_2stamp</layout>
        <layout name="htc_list_item_2text_bright">@layout/zzzz_htc_list_item_2text_bright</layout>
        <layout name="htc_list_item_image_2text_image_bright">@layout/zzzz_htc_list_item_image_2text_image_bright</layout>
        <layout name="htc_list_item_imageicon_2text_2stamp">@layout/zzzz_htc_list_item_imageicon_2text_2stamp</layout>
        <layout name="htc_list_item_imageicon_text">@layout/zzzz_htc_list_item_imageicon_text</layout>
        <layout name="htc_list_item_separator">@layout/zzzz_htc_list_item_separator</layout>
        <layout name="keyguard_screen_device_unlock">@layout/zzzz_keyguard_screen_device_unlock</layout>
        <layout name="pin_keyboard">@layout/zzzz_pin_keyboard</layout>

    to this


    Code:
    <item type="layout" name="htc_list_item_2text_2stamp">@layout/zzzz_htc_list_item_2text_2stamp</item>
        <item type="layout" name="htc_list_item_2text_bright">@layout/zzzz_htc_list_item_2text_bright</item>
        <item type="layout" name="htc_list_item_image_2text_image_bright">@layout/zzzz_htc_list_item_image_2text_image_bright</item>
        <item type="layout" name="htc_list_item_imageicon_2text_2stamp">@layout/zzzz_htc_list_item_imageicon_2text_2stamp</item>
        <item type="layout" name="htc_list_item_imageicon_text">@layout/zzzz_htc_list_item_imageicon_text</item>
        <item type="layout" name="htc_list_item_separator">@layout/zzzz_htc_list_item_separator</item>
        <item type="layout" name="keyguard_screen_device_unlock">@layout/zzzz_keyguard_screen_device_unlock</item>
        <item type="layout" name="pin_keyboard">@layout/zzzz_pin_keyboard</item>

    go to res/values plurals.xml

    go to line 79

    change this

    %d of %d

    to this

    %1$d of %2$d

    now remember every foreign language plural needs that change or just delete them.

    go to res/values raws.xml

    change this

    <raw name="fallbackring_htc">@raw/zzzz_fallbackring_htc</raw>

    to this

    <item type="raw" name="fallbackring_htc">@raw/zzzz_fallbackring_htc</item>

    now when all of the plurals are changed or deleted ( do NOT delete the plurals in res/values. that has to be changed.)
    type apktool b framework hit enter. this will build your apk.

    here are the res/values xmls modded already to make this easy.

    download here replace the existing decompiled xmls with these.

    now when you decompile to make further changes you will find that three of the xmls

    anims.xml
    layout.xml
    raws.xml
    compile back to their original format so save the modified decompiled xmls

    this is the modified framework

    framework-res

    please post any issues
    3
    Very nice tutorial Fern, I'll be coming along as well. I like seeing some of the names in here, very comforting knowing there will be some really good devs on the ONE X. Look forward to some of the new stuff I can learn.
    2
    Can you send me the X com.htc? Then I can double check, whether I can also fix it. Maybe apktool creates other issues with the added xhdpi folders, but I can check that if you send me the stock file.

    Send from my One S
    2
    Great job ferno!!!!

    That sucks. One of our guys themed resources image by image running them all thru draw 9 patch tool One by one :eek::eek:

    I felt sorry for him :p

    Sent from my HTC One X using XDA

    Well I wouldn't say all of them, but quite a few :p

    I was able to add a lot of them to a different resources.apk and decompile.

    Sent from my HTC Flyer.

    I was just about to say do just that. lol. Throw the 9.png in a decodable resource.apk (or any apk for that matter) and decode. There is also a handy Mac and Linux tool for decoding 9.png :)
    2
    Thx and received - decompiled successfully, fixed all issues and now waiting to compile...

    TOUCHDOWN :D

    I will upload the apk later, I randomly changed a few color values to ICS blue, so you`ll see it worked all fine. System seems to work for all Sense 4.0 ICS com.htc.resources

    1. Fix Layoits.xml as described
    2. Delete zero_dummy_dimen in public.xml

    I will check later with stock com.htc.resources from One X, but I`m very confident I will see the same result ;)


    If only someone could fix bloody m.10`s - that is the sole reason I focus on mods atm, not on full Themes, since without having access to m.10 files Themes will not have the quality I need. Good news is, Sense 4.0 is visually so much better, then old versions.


    Edit: Here`s a new thread, that addresses this and more fixes

    http://xdaforums.com/showthread.php?p=25817188#post25817188