[TOOL GB/ICS/JB/KK] Decompile/Recompile apk & jar | Sign | Zipalign | Basic editing

Search This thread

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung
[TOOL GB/ICS/JB/KK] Decompile/Recompile apk & jar | Sign | Zipalign | Basic editing

hello everyone... I want to share the tool for editing apk, and making a slightly guide for decompile/recompile apk and basic editing xml/smali... and this guide and tool for Windows user...





REQUIREMENTS :

Download and Install on your computer

1. JDK here

2. 7zip here or Winrar (recommended) here

3. Notepad++ here

4. Android SDK for patch 9.png until Zipalign the apk here

5. Apktool & baksmali/smali + Signer for all GB/ICS/JB ROM here

6. Apktool & baksmali/smali + Signer for all GB/ICS/JB ROM v2 here

7. Apktool & baksmali/smali + Signer for all GB/ICS/JB/KK ROM v3 (4.4 Kitkat support/optimized) here




Save or extract apktool to folder directory :

Windows XP : C:\Document and Settings\folder your computer name\here

Windows 7 : C:\User\folder your computer name\here






CREDITS & BIG THANKS TO :

- Brut.all for apktool
- Team Reject for Quick baksmali/smali file
- Yorzua for Sign apk file
- Rizal Lovins for support me
- pantrif13







1. How to Decompile and Recompile *.jar file or classes.dex​

- Copy *.jar file to apktool folder (make sure is the same folder). for example : android.policy.jar

- Open android.policy.jar using Winrar or 7zip and extract classes.dex file

- Drag & drop classes.dex to Quick-Baksmali.cmd (decompile process)

Screenshot example for Baksmaling/decompile classes.dex using drag & drop method :

944210_457801300973090_1250194474_n.jpg


- wait and you will see a folder with the name "classout"

- now you can start editing smali file on classout folder (use Notepad++ for editing it)

- After editing is complete, Drag & drop classout folder to Quick-Smali.cmd (recompile process)

Screenshot example for Smaling/recompile classout folder using drag & drop method :

308635_457805677639319_1326222474_n.jpg


- After recompile is complete, there will be a file with a name "new-classes.dex"

- Open android.policy.jar using Winrar or 7zip

- Rename new-classes.dex to classes.dex, and Drag & drop to android.policy.jar with normal compression

- finally, push back android.policy.jar into the system your device. push manual using root explorer/similar application or make a flashable zip.



2. How to Decompile and Recompile *.apk file​

a. Copy framework-res.apk to apktool folder (make sure is the same folder).
(Attention : to edit other default apk on system/app like Contacts.apk, Phone.apk. MusicPlayer.apk etc.. needed framework 2. for example : twframework-res.apk)

b. Copy other *.apk you want to edit to apktool folder. for example : GreenRockers.apk

c. Open Command Prompt.bat

d. Decompile and install framework

Code:
apktool if framework-res.apk
apktool d GreenRockers.apk

Screenshot example for installing framework and decompiling apk :

178978_458301597589727_929866297_n.jpg

if your apk is Contacs.apk, Phone.apk, Camera.apk etc.. follow this guide :

Code:
apktool if framework-res.apk
apktool if twframework-res.apk
apktool d Settings.apk

Screenshot example for installing framework 2 and decompiling apk :

62616_458274757592411_1587662104_n.jpg


e. wait and you will see a folder with the name "GreenRockers or Settings"

f. now you can start editing png, xml, even smali file

g. After editing is complete, Now Recompile

Code:
apktool b -f -d GreenRockers

or

Code:
apktool b -f -d Settings

Screenshot example for decompiling dan recompiling apk :

270838_457801324306421_626888386_n.jpg

h. After recompile is complete, go to GreenRockers or Settings folder, Open dist folder and open GreenRockers.apk or Settings.apk using Winrar/7zip

i. Open Original GreenRockers.apk or Settings.apk Using Winrar/7zip

j. Drag & drop META-INF folder and android.manifest.xml (if you not edit android.manifest.xml), also lib folder if there in Original GreenRockers.apk to Modified GreenRockers.apk or Modified Settings.apk on dist folder.

Screenshot example for Drag & drop META-INF folder etc :

941887_458274747592412_829467582_n.jpg


k. Now Sign apk, example :

Code:
java -jar SignApk.jar testkey.x509.pem testkey.pk8 GreenRockers.apk GreenRockers_signed.apk

(Attention : Sign apk is only for 3rd Party apps, you can sign apk from system/app. but not all apk on system/app support)

l. Rename GreenRockers_signed.apk to GreenRockers.apk

m. Zipalign the apk

Code:
zipalign -fv 4 GreenRockers.apk GreenRockers-new.apk

n. Rename GreenRockers-new.apk to GreenRockers.apk

o. finally, push back xxxxxx.apk into the system your device. push manual using root explorer/similar application or make a flashable zip.



3. How to Zipalign the *.apk​

1. Download and Install Android SDK (if you've downloaded, do not need to download again)

2. Go to C:\Program Files\Android\android-sdk\tools

3. Search + copy zipalign.exe and draw9patch.bat then paste in the c:\windows\here

4. Open cmd and typing this code (For example : Zipalign SystemUI.apk) :

Code:
zipalign -fv 4 SystemUI.apk SystemUI-new.apk
 
Last edited:

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung
GUIDE FOR GINGERBREAD





1. How to change text color on flipfont chooser/option at dark pop up for Samsung Stock Gingerbread ROM

Screenshot :

Before :

538030_452980494788504_243340317_n.jpg


After :

485543_452980504788503_1012291459_n.jpg



a. Decompile Settings.apk (use apktool) or classes.dex in settings.apk (use baksmali)

b. Go to com/android/settings/flipfont and open the fontlistadapter.smali with notepad ++

c. search this line :
const/high16 v6, -0x100

d. change/replace const/high16 v6, -0x100 to const/high16 v6, -0x1

e. recompile.





2. How to change text color on dark pop up (Font size) at accessibility settings for gingerbread ROM

Screenshot :

563419_416241711795716_152125509_n.jpg



a. Decompile Settings.apk (use apktool) or classes.dex in settings.apk (use baksmali)

b. Go to smali\com\android\settings and open the FontSizeListAdapter.smali with notepad ++

c. Search this line :
const v7, -0x1

d. change/replace const v7, -0x1 to const/high16 v7, -0x1

e. Go to res\xml and open accessibility_settings.xml

f. Search this line :

Code:
<com.android.settings.FontSizeListPreference android:title="@string/font_size_title" android:key="font_size" android:summary="@string/font_size_title" />

Change or add color (Red text)

Code:
<com.android.settings.FontSizeListPreference android:title="@string/font_size_title" [COLOR="Red"]android:textColor="#FFFFFF"[/COLOR] android:key="font_size" android:summary="@string/font_size_title" />

g. Recompile





3. How to BIG Photo when calling on Samsung stock gingerbread ROM

Screenshot :

Before :

934688_458274777592409_1481276667_n.jpg


After :

401901_458274730925747_66636397_n.jpg



a. Decompile Phone.apk

b Go to phone\res\layout and open call_card_person_info.xml using notepad ++

c. Change all this lines (maybe some device is different) :

Code:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/callCardPersonInfo" android:layout_width="fill_parent" android:layout_height="wrap_content">
        <RelativeLayout android:layout_width="fill_parent" android:layout_height="123.0dip">
            <FrameLayout android:layout_width="123.0dip" android:layout_height="123.0dip" android:layout_centerHorizontal="true">
                <ImageView android:id="@id/photo" android:layout_width="123.0dip" android:layout_height="123.0dip" />
                <LinearLayout android:layout_gravity="bottom" android:orientation="horizontal" android:id="@id/birthPanel" android:background="#77000000" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="33.0dip">
                    <ImageView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon2" />
                    <TextView android:textSize="20.0sp" android:textColor="@color/twcolor001" android:layout_gravity="center_vertical" android:id="@id/birthdayRemainedDays" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:text="@string/BirthDay_remainedDays0" android:singleLine="true" />
                </LinearLayout>
            </FrameLayout>
        </RelativeLayout>
        <LinearLayout android:layout_gravity="center_horizontal" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="43.0dip" android:layout_marginTop="12.0dip">
            <ImageView android:layout_gravity="center_vertical" android:id="@id/birthIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon" />
            <TextView android:textSize="31.0sp" android:textColor="@color/twcolor001" android:gravity="center_vertical" android:id="@id/name" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="43.0dip" android:singleLine="true" />
        </LinearLayout>
        <TextView android:textSize="21.0sp" android:textColor="@color/phone_number" android:gravity="center_vertical" android:id="@id/phoneNumber" android:layout_width="wrap_content" android:layout_height="29.0dip" android:singleLine="true" />
        <TextView android:textSize="20.0sp" android:textColor="@color/twcolor003" android:gravity="center_vertical" android:id="@id/cdnipNumber" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:text="@string/unknown" android:singleLine="true" />
    </LinearLayout>
</FrameLayout>

To :

Code:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/callCardPersonInfo" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
            <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerHorizontal="true">
                <ImageView android:orientation="vertical" android:id="@id/photo" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="0.0dip" />
                <LinearLayout android:layout_gravity="bottom" android:orientation="horizontal" android:id="@id/birthPanel" android:background="#77000000" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="33.0dip">
                    <ImageView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon2" />
                    <TextView android:textSize="20.0sp" android:textColor="@color/twcolor001" android:layout_gravity="center_vertical" android:id="@id/birthdayRemainedDays" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:text="@string/BirthDay_remainedDays0" android:singleLine="true" />
                </LinearLayout>
            </FrameLayout>
        </RelativeLayout>
        <LinearLayout android:layout_gravity="center_horizontal" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="43.0dip" android:layout_marginTop="12.0dip">
            <ImageView android:layout_gravity="center_vertical" android:id="@id/birthIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon" />
        </LinearLayout>
    </LinearLayout>
    <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TextView android:textSize="16.0sp" android:textColor="@color/twcolor001" android:gravity="center_horizontal" android:id="@id/name" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="48.0dip" android:layout_marginTop="88.0dip" android:lines="2" android:singleLine="false" android:shadowColor="#ff000000" android:shadowDx="2.0" android:shadowDy="2.0" android:shadowRadius="2.0" android:layout_centerHorizontal="true" />
        <TextView android:textSize="16.0sp" android:textColor="@color/phone_number" android:gravity="center_horizontal" android:id="@id/phoneNumber" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginTop="126.0dip" android:singleLine="false" android:shadowColor="#ff000000" android:shadowDx="2.0" android:shadowDy="2.0" android:shadowRadius="2.0" android:layout_centerHorizontal="true" />
        <TextView android:textSize="16.0sp" android:textColor="@color/twcolor003" android:gravity="center_horizontal" android:id="@id/cdnipNumber" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/unknown" android:singleLine="true" />
    </RelativeLayout>
</FrameLayout>

d. Go to phone\res\drawable-hdpi or xxx-dpi and search *.png file with name :
- call_ani_00
- call_ani_in_01
- call_ani_in_02
- call_ani_in_03
- call_ani_in_04
- call_ani_in_05
- call_ani_in_06
- call_ani_in_07
- call_ani_out_01
- call_ani_out_02
- call_ani_out_03
- call_ani_out_04
- call_ani_out_05
- call_ani_out_06
- call_ani_out_07

e. Replace with your favorite image (Minimal resolution is 480x460 or Higher for HDPI device), download source image for example on attachment.

f. Recompile.


4. How to make transparancy on Gingerbread (Following wallpaper)


Click here to guide "How to make transparancy on Gingerbread"


More guide will come
 

Attachments

  • phone_call_png_source.zip
    208.7 KB · Views: 870
Last edited:

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung
GUIDE FOR ICS AND JELLY BEAN ROM



1. How to edit activity tltle bar on ICS and JB (CM9/CM10/CM10.1)

Screenshot :

Before :

485506_453021281451092_487745334_n.jpg


After :

625659_443424919077395_1278360920_n.jpg




a. Decompile framework-res.apk

b. Go to framework-res folder/res/drawable-hdpi (or mdpi/xhdpi). and search *.png file with name :

- ab_bottom_solid_dark_holo.9.png
- ab_solid_dark_holo.9.png
- ab_stacked_transparent_light_holo.9.png
- ab_transparent_dark_holo.9.png
- ab_transparent_light_holo.9.png

c. replace all *.9.png file with your favorit *.9.png (Recommended resolution is 720x100 for XHDPI, or download source png for example from my theme Green Rocker CM10 on attachment)

d, Recompile

e. if you want to change too setting icon on title bar, just decompile settings.apk and go to settings/res/drawable-***dpi and change ic_launcher_settings.png and recompile.





2. How to change quick settings background on CM10.1

Screenshot :

Before :

936131_458312720921948_542987543_n.jpg


After :

63432_443424855744068_575071938_n.jpg



a. Decompile SystemUI.apk

b. Go to SystemUI\res\drawable and open qs_tile_background.xml using notepad ++

Change this line :

Code:
<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <color android:color="#ff212121" />
    </item>
    <item>
        <color android:color="#ff161616" />
    </item>
</selector>

To :

Code:
<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" [COLOR="Red"]android:drawable="@drawable/qs_tile_background_pressed" />
    <item android:drawable="@drawable/qs_tile_background_normal" />[/COLOR]
</selector>

c. Add source 2 *.png file to drawable-xxxxdpi folder with name (you are free to choose any image including transparent) :
- qs_tile_background_pressed
- qs_tile_background_normal

d. Recompile






3. How to change text color and underline color at Popup on CM9/CM10/CM10.1

Screenshot :

Before :

941136_458312704255283_1080488990_n.jpg


After :

942076_458274804259073_1221048092_n.jpg



a. Decompile framework-res.apk

b. Go to framework-res\res\values and open colors.xml using notepad ++

c. Change this line (for example : change blue color to green color) :
Code:
<color name="holo_blue_light">#ff33b5e5</color>

To :

Code:
<color name="holo_blue_light">[COLOR="Red"]#ff9cc912[/COLOR]</color>

Note : but this is quite global, there is some text that will be replaced. to more specifically, you can edit it in this line :​

- Go to framework-res\res\values and open style.xml using notepad ++

- Search this line :
Code:
<style name="TextAppearance.Holo.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo">
        <item name="android:textSize">22.0sp</item>
        <item name="android:textColor">[COLOR="Red"]@color/holo_blue_light[/COLOR]</item>
    </style>

and :
Code:
<style name="TextAppearance.Holo.Light.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo.Light">
        <item name="android:textSize">22.0sp</item>
        <item name="android:textColor">[COLOR="Red"]@color/holo_blue_light[/COLOR]</item>
    </style>

Change/Replace to :

Code:
<style name="TextAppearance.Holo.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo">
        <item name="android:textSize">22.0sp</item>
        <item name="android:textColor">[COLOR="Red"]#ff9cc912[/COLOR]</item>
    </style>

And
Code:
<style name="TextAppearance.Holo.Light.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo.Light">
        <item name="android:textSize">22.0sp</item>
        <item name="android:textColor">[COLOR="Red"]#ff9cc912[/COLOR]</item>
    </style>


d. Recompile






More guide will come
 

Attachments

  • title_bar.zip
    314.6 KB · Views: 916
Last edited:

Rizal Lovins

Recognized Developer / Themer / Inactive RC
May 30, 2012
1,618
15,948
Bandung
LG V30
ABOUT ME

WHO IS MASTER RIZAL LOVINS ???

JUST FOLLOW ME OR ADD ME AS YOUR FRIEND ON SOCIAL NETWORKS




A little tips/guide/info to port apps from the platform, this is doesn't mean all the applications of the platform can be ported!!!

This is just example

Ok Let's start!!! ;)


Requirement :

1. Knowledge in decompile/recompile/sign/zipalign apk file (apps) (In the first post )

2. Knowledge to find library file (*.so file) and framework file (*.jar) whats needed from apps

3. Knowledge to use LogCat

- if you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2274119

How can I know what's library is needed? :

1. Knowledge is in need if the library doesn't exist in apk file, locate the name of the library file (*.so file) that may be related to the application (the file name may be a bit the same with the application) you can search in system>lib

2. If library file already exist in apk file /folder lib>armeabi/armeabi-v7 (You just need to extract it from apk file and take the file *.so)

1390685_1376164759288317_784663848_n.jpg


3. To see what's apps required library framework file :

- Decompile apps with using file framework-res.apk from that ROM apps (Also maybe need framework 2 like SemcGenericUxpRes.apk or twframework-res.apk etc)

1381721_1376164639288329_404257341_n.jpg


- Open AndroidManifest.xml using Text Editor (Like NotePad++) and see like this line

1384300_1376164685954991_1611404921_n.jpg


Leave file has been decompiled and Take it file name (In list androidmanifest) from the ROM file that you want to ported from system>framework also take permission framework file (*.xml) from system>etc>permission


What should i do know? :

1. First times you need download Full ROM is there already deodexed so you can take some file you need to ported
2. If you already understand what i said above, lets start to final section
3. If you already take all file what you need to port, collect all the files, and prepare cwm zip updater, add the file to zip with right folder

*.Apk file must be in system>app

*.So file must be in system>lib

*.jar file must be in system>framework

*.xml file permissions framework must be in system>etc>permissions

564065_1376164732621653_257947863_n.jpg


This section is not modified the apps, first you can try flash it with CWM and see its working or not, if not working (FC) you need to see whats wrong in logcat (FATAL ERROR)

Or the problem apps parsing error because your Android Version is lower (e.g apps JB to ICS)

Now you need to decompile that apps

Go to smali folder and search what's wrong in logcat, if you already fix it

Then open AndroidManifest.xml try to change minimal sdk version from Android_manifest or in apktool.yml

1377208_1376196905951769_1861282843_n.jpg


1381343_1376196852618441_1574383812_n.jpg



Code:
minSdkVersion: '[COLOR="Red"]16[/COLOR]'
targetSdkVersion: '17'

Change to this number

Code:
minSdkVersion: '[COLOR="Red"]14[/COLOR]'
targetSdkVersion: '17'

save all changes

then recompile, sign and zipalign


NOTE :
1. You should right with signing the apps, Use Auto TESKEYS

2. Not All apps can be ported to lower Android Version by changed minimal sdk
 
Last edited:

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung
Last edited:

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung

SXUsr

Senior Member
Jul 11, 2010
8,161
2,877
Here =)
Is zipaligning not important anymore? The amount of guides I read that don't even mention it is quite shocking.

For example, if less number of applications with an unaligned home application, you’d see slower application launch times. This is the best case scenario. For a worst case scenario, having a number of unaligned applications will result in the system repeatedly starting and killing processes, struggling with lags and huge battery drain.

- What Is Zipalign In Android And How To Make Apps Zipaligned [Complete Guide]
 

Dilesh Perera

Senior Member
May 26, 2012
1,802
943
Colombo
Xiaomi Poco F1
Xiaomi Poco F3
thanks for the guide . its very useful. and because of posts like this gives us opportunity to do some modifications. and i know little bit of
compile and recompile stuff and have managed to do some small changes :D


i want to know some info about following.

im using CM10 ROm . and it has FM radio app. but we cant change station/ volume or stop radio playing with headset button. whenever headset button pressed it plays from Music player. could u tell me where can we modify and enable headphone button to FM radio ? maybe this need some serious modding . but im so curious and i know you guys know the workaround about it .
 

ibanez7

Senior Member
Mar 30, 2012
1,232
6,228
Bandung
Is zipaligning not important anymore? The amount of guides I read that don't even mention it is quite shocking.



- What Is Zipalign In Android And How To Make Apps Zipaligned [Complete Guide]

yes, Zipalign is indeed very important, but I did not include it here because here it has a lot to share about how the way to Zipalign apk. for example :
1. Download and Install Android SDK
2. Go to C:\Program Files\Android\android-sdk\tools
3. Search + copy zipalign.exe and draw9patch.bat and paste in the c:\windows\here
4. Open cmd and typing this code (for fxample Zipalign SystemUI.apk) :
Code:
zipalign -fv 4 SystemUI.apk SystemUI-new.apk

but thanks for your suggestion.. I will add it to the first page :)

thanks for the guide . its very useful. and because of posts like this gives us opportunity to do some modifications. and i know little bit of
compile and recompile stuff and have managed to do some small changes :D


i want to know some info about following.

im using CM10 ROm . and it has FM radio app. but we cant change station/ volume or stop radio playing with headset button. whenever headset button pressed it plays from Music player. could u tell me where can we modify and enable headphone button to FM radio ? maybe this need some serious modding . but im so curious and i know you guys know the workaround about it .


okay, your welcome mate, and thanks for good question...
I think the headset for music player created by default, but for third-party applications may be different configuration with the default application in terms compatibility of the headset. so might have to edit the application itself. and it could be the effect of CM ROMs, because by default does not have FM radio.
you can try to edit it, looking at the layout or smali files, but I have not tried it
 

Top Liked Posts

  • There are no posts matching your filters.
  • 152
    [TOOL GB/ICS/JB/KK] Decompile/Recompile apk & jar | Sign | Zipalign | Basic editing

    hello everyone... I want to share the tool for editing apk, and making a slightly guide for decompile/recompile apk and basic editing xml/smali... and this guide and tool for Windows user...





    REQUIREMENTS :

    Download and Install on your computer

    1. JDK here

    2. 7zip here or Winrar (recommended) here

    3. Notepad++ here

    4. Android SDK for patch 9.png until Zipalign the apk here

    5. Apktool & baksmali/smali + Signer for all GB/ICS/JB ROM here

    6. Apktool & baksmali/smali + Signer for all GB/ICS/JB ROM v2 here

    7. Apktool & baksmali/smali + Signer for all GB/ICS/JB/KK ROM v3 (4.4 Kitkat support/optimized) here




    Save or extract apktool to folder directory :

    Windows XP : C:\Document and Settings\folder your computer name\here

    Windows 7 : C:\User\folder your computer name\here






    CREDITS & BIG THANKS TO :

    - Brut.all for apktool
    - Team Reject for Quick baksmali/smali file
    - Yorzua for Sign apk file
    - Rizal Lovins for support me
    - pantrif13







    1. How to Decompile and Recompile *.jar file or classes.dex​

    - Copy *.jar file to apktool folder (make sure is the same folder). for example : android.policy.jar

    - Open android.policy.jar using Winrar or 7zip and extract classes.dex file

    - Drag & drop classes.dex to Quick-Baksmali.cmd (decompile process)

    Screenshot example for Baksmaling/decompile classes.dex using drag & drop method :

    944210_457801300973090_1250194474_n.jpg


    - wait and you will see a folder with the name "classout"

    - now you can start editing smali file on classout folder (use Notepad++ for editing it)

    - After editing is complete, Drag & drop classout folder to Quick-Smali.cmd (recompile process)

    Screenshot example for Smaling/recompile classout folder using drag & drop method :

    308635_457805677639319_1326222474_n.jpg


    - After recompile is complete, there will be a file with a name "new-classes.dex"

    - Open android.policy.jar using Winrar or 7zip

    - Rename new-classes.dex to classes.dex, and Drag & drop to android.policy.jar with normal compression

    - finally, push back android.policy.jar into the system your device. push manual using root explorer/similar application or make a flashable zip.



    2. How to Decompile and Recompile *.apk file​

    a. Copy framework-res.apk to apktool folder (make sure is the same folder).
    (Attention : to edit other default apk on system/app like Contacts.apk, Phone.apk. MusicPlayer.apk etc.. needed framework 2. for example : twframework-res.apk)

    b. Copy other *.apk you want to edit to apktool folder. for example : GreenRockers.apk

    c. Open Command Prompt.bat

    d. Decompile and install framework

    Code:
    apktool if framework-res.apk
    apktool d GreenRockers.apk

    Screenshot example for installing framework and decompiling apk :

    178978_458301597589727_929866297_n.jpg

    if your apk is Contacs.apk, Phone.apk, Camera.apk etc.. follow this guide :

    Code:
    apktool if framework-res.apk
    apktool if twframework-res.apk
    apktool d Settings.apk

    Screenshot example for installing framework 2 and decompiling apk :

    62616_458274757592411_1587662104_n.jpg


    e. wait and you will see a folder with the name "GreenRockers or Settings"

    f. now you can start editing png, xml, even smali file

    g. After editing is complete, Now Recompile

    Code:
    apktool b -f -d GreenRockers

    or

    Code:
    apktool b -f -d Settings

    Screenshot example for decompiling dan recompiling apk :

    270838_457801324306421_626888386_n.jpg

    h. After recompile is complete, go to GreenRockers or Settings folder, Open dist folder and open GreenRockers.apk or Settings.apk using Winrar/7zip

    i. Open Original GreenRockers.apk or Settings.apk Using Winrar/7zip

    j. Drag & drop META-INF folder and android.manifest.xml (if you not edit android.manifest.xml), also lib folder if there in Original GreenRockers.apk to Modified GreenRockers.apk or Modified Settings.apk on dist folder.

    Screenshot example for Drag & drop META-INF folder etc :

    941887_458274747592412_829467582_n.jpg


    k. Now Sign apk, example :

    Code:
    java -jar SignApk.jar testkey.x509.pem testkey.pk8 GreenRockers.apk GreenRockers_signed.apk

    (Attention : Sign apk is only for 3rd Party apps, you can sign apk from system/app. but not all apk on system/app support)

    l. Rename GreenRockers_signed.apk to GreenRockers.apk

    m. Zipalign the apk

    Code:
    zipalign -fv 4 GreenRockers.apk GreenRockers-new.apk

    n. Rename GreenRockers-new.apk to GreenRockers.apk

    o. finally, push back xxxxxx.apk into the system your device. push manual using root explorer/similar application or make a flashable zip.



    3. How to Zipalign the *.apk​

    1. Download and Install Android SDK (if you've downloaded, do not need to download again)

    2. Go to C:\Program Files\Android\android-sdk\tools

    3. Search + copy zipalign.exe and draw9patch.bat then paste in the c:\windows\here

    4. Open cmd and typing this code (For example : Zipalign SystemUI.apk) :

    Code:
    zipalign -fv 4 SystemUI.apk SystemUI-new.apk
    48
    GUIDE FOR ICS AND JELLY BEAN ROM



    1. How to edit activity tltle bar on ICS and JB (CM9/CM10/CM10.1)

    Screenshot :

    Before :

    485506_453021281451092_487745334_n.jpg


    After :

    625659_443424919077395_1278360920_n.jpg




    a. Decompile framework-res.apk

    b. Go to framework-res folder/res/drawable-hdpi (or mdpi/xhdpi). and search *.png file with name :

    - ab_bottom_solid_dark_holo.9.png
    - ab_solid_dark_holo.9.png
    - ab_stacked_transparent_light_holo.9.png
    - ab_transparent_dark_holo.9.png
    - ab_transparent_light_holo.9.png

    c. replace all *.9.png file with your favorit *.9.png (Recommended resolution is 720x100 for XHDPI, or download source png for example from my theme Green Rocker CM10 on attachment)

    d, Recompile

    e. if you want to change too setting icon on title bar, just decompile settings.apk and go to settings/res/drawable-***dpi and change ic_launcher_settings.png and recompile.





    2. How to change quick settings background on CM10.1

    Screenshot :

    Before :

    936131_458312720921948_542987543_n.jpg


    After :

    63432_443424855744068_575071938_n.jpg



    a. Decompile SystemUI.apk

    b. Go to SystemUI\res\drawable and open qs_tile_background.xml using notepad ++

    Change this line :

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <selector
      xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">
            <color android:color="#ff212121" />
        </item>
        <item>
            <color android:color="#ff161616" />
        </item>
    </selector>

    To :

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <selector
      xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" [COLOR="Red"]android:drawable="@drawable/qs_tile_background_pressed" />
        <item android:drawable="@drawable/qs_tile_background_normal" />[/COLOR]
    </selector>

    c. Add source 2 *.png file to drawable-xxxxdpi folder with name (you are free to choose any image including transparent) :
    - qs_tile_background_pressed
    - qs_tile_background_normal

    d. Recompile






    3. How to change text color and underline color at Popup on CM9/CM10/CM10.1

    Screenshot :

    Before :

    941136_458312704255283_1080488990_n.jpg


    After :

    942076_458274804259073_1221048092_n.jpg



    a. Decompile framework-res.apk

    b. Go to framework-res\res\values and open colors.xml using notepad ++

    c. Change this line (for example : change blue color to green color) :
    Code:
    <color name="holo_blue_light">#ff33b5e5</color>

    To :

    Code:
    <color name="holo_blue_light">[COLOR="Red"]#ff9cc912[/COLOR]</color>

    Note : but this is quite global, there is some text that will be replaced. to more specifically, you can edit it in this line :​

    - Go to framework-res\res\values and open style.xml using notepad ++

    - Search this line :
    Code:
    <style name="TextAppearance.Holo.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo">
            <item name="android:textSize">22.0sp</item>
            <item name="android:textColor">[COLOR="Red"]@color/holo_blue_light[/COLOR]</item>
        </style>

    and :
    Code:
    <style name="TextAppearance.Holo.Light.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo.Light">
            <item name="android:textSize">22.0sp</item>
            <item name="android:textColor">[COLOR="Red"]@color/holo_blue_light[/COLOR]</item>
        </style>

    Change/Replace to :

    Code:
    <style name="TextAppearance.Holo.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo">
            <item name="android:textSize">22.0sp</item>
            <item name="android:textColor">[COLOR="Red"]#ff9cc912[/COLOR]</item>
        </style>

    And
    Code:
    <style name="TextAppearance.Holo.Light.DialogWindowTitle" parent="@*android:style/TextAppearance.Holo.Light">
            <item name="android:textSize">22.0sp</item>
            <item name="android:textColor">[COLOR="Red"]#ff9cc912[/COLOR]</item>
        </style>


    d. Recompile






    More guide will come
    34
    GUIDE FOR GINGERBREAD





    1. How to change text color on flipfont chooser/option at dark pop up for Samsung Stock Gingerbread ROM

    Screenshot :

    Before :

    538030_452980494788504_243340317_n.jpg


    After :

    485543_452980504788503_1012291459_n.jpg



    a. Decompile Settings.apk (use apktool) or classes.dex in settings.apk (use baksmali)

    b. Go to com/android/settings/flipfont and open the fontlistadapter.smali with notepad ++

    c. search this line :
    const/high16 v6, -0x100

    d. change/replace const/high16 v6, -0x100 to const/high16 v6, -0x1

    e. recompile.





    2. How to change text color on dark pop up (Font size) at accessibility settings for gingerbread ROM

    Screenshot :

    563419_416241711795716_152125509_n.jpg



    a. Decompile Settings.apk (use apktool) or classes.dex in settings.apk (use baksmali)

    b. Go to smali\com\android\settings and open the FontSizeListAdapter.smali with notepad ++

    c. Search this line :
    const v7, -0x1

    d. change/replace const v7, -0x1 to const/high16 v7, -0x1

    e. Go to res\xml and open accessibility_settings.xml

    f. Search this line :

    Code:
    <com.android.settings.FontSizeListPreference android:title="@string/font_size_title" android:key="font_size" android:summary="@string/font_size_title" />

    Change or add color (Red text)

    Code:
    <com.android.settings.FontSizeListPreference android:title="@string/font_size_title" [COLOR="Red"]android:textColor="#FFFFFF"[/COLOR] android:key="font_size" android:summary="@string/font_size_title" />

    g. Recompile





    3. How to BIG Photo when calling on Samsung stock gingerbread ROM

    Screenshot :

    Before :

    934688_458274777592409_1481276667_n.jpg


    After :

    401901_458274730925747_66636397_n.jpg



    a. Decompile Phone.apk

    b Go to phone\res\layout and open call_card_person_info.xml using notepad ++

    c. Change all this lines (maybe some device is different) :

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
      xmlns:android="http://schemas.android.com/apk/res/android">
        <LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/callCardPersonInfo" android:layout_width="fill_parent" android:layout_height="wrap_content">
            <RelativeLayout android:layout_width="fill_parent" android:layout_height="123.0dip">
                <FrameLayout android:layout_width="123.0dip" android:layout_height="123.0dip" android:layout_centerHorizontal="true">
                    <ImageView android:id="@id/photo" android:layout_width="123.0dip" android:layout_height="123.0dip" />
                    <LinearLayout android:layout_gravity="bottom" android:orientation="horizontal" android:id="@id/birthPanel" android:background="#77000000" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="33.0dip">
                        <ImageView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon2" />
                        <TextView android:textSize="20.0sp" android:textColor="@color/twcolor001" android:layout_gravity="center_vertical" android:id="@id/birthdayRemainedDays" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:text="@string/BirthDay_remainedDays0" android:singleLine="true" />
                    </LinearLayout>
                </FrameLayout>
            </RelativeLayout>
            <LinearLayout android:layout_gravity="center_horizontal" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="43.0dip" android:layout_marginTop="12.0dip">
                <ImageView android:layout_gravity="center_vertical" android:id="@id/birthIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon" />
                <TextView android:textSize="31.0sp" android:textColor="@color/twcolor001" android:gravity="center_vertical" android:id="@id/name" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="43.0dip" android:singleLine="true" />
            </LinearLayout>
            <TextView android:textSize="21.0sp" android:textColor="@color/phone_number" android:gravity="center_vertical" android:id="@id/phoneNumber" android:layout_width="wrap_content" android:layout_height="29.0dip" android:singleLine="true" />
            <TextView android:textSize="20.0sp" android:textColor="@color/twcolor003" android:gravity="center_vertical" android:id="@id/cdnipNumber" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5.0dip" android:text="@string/unknown" android:singleLine="true" />
        </LinearLayout>
    </FrameLayout>

    To :

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent"
      xmlns:android="http://schemas.android.com/apk/res/android">
        <LinearLayout android:gravity="center_horizontal" android:orientation="vertical" android:id="@id/callCardPersonInfo" android:layout_width="fill_parent" android:layout_height="fill_parent">
            <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
                <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerHorizontal="true">
                    <ImageView android:orientation="vertical" android:id="@id/photo" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="0.0dip" />
                    <LinearLayout android:layout_gravity="bottom" android:orientation="horizontal" android:id="@id/birthPanel" android:background="#77000000" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="33.0dip">
                        <ImageView android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon2" />
                        <TextView android:textSize="20.0sp" android:textColor="@color/twcolor001" android:layout_gravity="center_vertical" android:id="@id/birthdayRemainedDays" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:text="@string/BirthDay_remainedDays0" android:singleLine="true" />
                    </LinearLayout>
                </FrameLayout>
            </RelativeLayout>
            <LinearLayout android:layout_gravity="center_horizontal" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="43.0dip" android:layout_marginTop="12.0dip">
                <ImageView android:layout_gravity="center_vertical" android:id="@id/birthIcon" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/call_birthday_icon" />
            </LinearLayout>
        </LinearLayout>
        <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent">
            <TextView android:textSize="16.0sp" android:textColor="@color/twcolor001" android:gravity="center_horizontal" android:id="@id/name" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="48.0dip" android:layout_marginTop="88.0dip" android:lines="2" android:singleLine="false" android:shadowColor="#ff000000" android:shadowDx="2.0" android:shadowDy="2.0" android:shadowRadius="2.0" android:layout_centerHorizontal="true" />
            <TextView android:textSize="16.0sp" android:textColor="@color/phone_number" android:gravity="center_horizontal" android:id="@id/phoneNumber" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:layout_width="wrap_content" android:layout_height="29.0dip" android:layout_marginTop="126.0dip" android:singleLine="false" android:shadowColor="#ff000000" android:shadowDx="2.0" android:shadowDy="2.0" android:shadowRadius="2.0" android:layout_centerHorizontal="true" />
            <TextView android:textSize="16.0sp" android:textColor="@color/twcolor003" android:gravity="center_horizontal" android:id="@id/cdnipNumber" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/unknown" android:singleLine="true" />
        </RelativeLayout>
    </FrameLayout>

    d. Go to phone\res\drawable-hdpi or xxx-dpi and search *.png file with name :
    - call_ani_00
    - call_ani_in_01
    - call_ani_in_02
    - call_ani_in_03
    - call_ani_in_04
    - call_ani_in_05
    - call_ani_in_06
    - call_ani_in_07
    - call_ani_out_01
    - call_ani_out_02
    - call_ani_out_03
    - call_ani_out_04
    - call_ani_out_05
    - call_ani_out_06
    - call_ani_out_07

    e. Replace with your favorite image (Minimal resolution is 480x460 or Higher for HDPI device), download source image for example on attachment.

    f. Recompile.


    4. How to make transparancy on Gingerbread (Following wallpaper)


    Click here to guide "How to make transparancy on Gingerbread"


    More guide will come
    25
    Update July 8, 2013

    [Update]

    Hi guys, if you have problems with this tool .. when you have to make sure to edit apk files, or jar files are correct but the error recompiling.
    you can try this tool (Update v2), hope this helps.

    Download :
    http://d-h.st/3KU
    24
    ABOUT ME

    WHO IS MASTER RIZAL LOVINS ???

    JUST FOLLOW ME OR ADD ME AS YOUR FRIEND ON SOCIAL NETWORKS




    A little tips/guide/info to port apps from the platform, this is doesn't mean all the applications of the platform can be ported!!!

    This is just example

    Ok Let's start!!! ;)


    Requirement :

    1. Knowledge in decompile/recompile/sign/zipalign apk file (apps) (In the first post )

    2. Knowledge to find library file (*.so file) and framework file (*.jar) whats needed from apps

    3. Knowledge to use LogCat

    - if you don't know how to do this, visit this thread http://xdaforums.com/showthread.php?t=2274119

    How can I know what's library is needed? :

    1. Knowledge is in need if the library doesn't exist in apk file, locate the name of the library file (*.so file) that may be related to the application (the file name may be a bit the same with the application) you can search in system>lib

    2. If library file already exist in apk file /folder lib>armeabi/armeabi-v7 (You just need to extract it from apk file and take the file *.so)

    1390685_1376164759288317_784663848_n.jpg


    3. To see what's apps required library framework file :

    - Decompile apps with using file framework-res.apk from that ROM apps (Also maybe need framework 2 like SemcGenericUxpRes.apk or twframework-res.apk etc)

    1381721_1376164639288329_404257341_n.jpg


    - Open AndroidManifest.xml using Text Editor (Like NotePad++) and see like this line

    1384300_1376164685954991_1611404921_n.jpg


    Leave file has been decompiled and Take it file name (In list androidmanifest) from the ROM file that you want to ported from system>framework also take permission framework file (*.xml) from system>etc>permission


    What should i do know? :

    1. First times you need download Full ROM is there already deodexed so you can take some file you need to ported
    2. If you already understand what i said above, lets start to final section
    3. If you already take all file what you need to port, collect all the files, and prepare cwm zip updater, add the file to zip with right folder

    *.Apk file must be in system>app

    *.So file must be in system>lib

    *.jar file must be in system>framework

    *.xml file permissions framework must be in system>etc>permissions

    564065_1376164732621653_257947863_n.jpg


    This section is not modified the apps, first you can try flash it with CWM and see its working or not, if not working (FC) you need to see whats wrong in logcat (FATAL ERROR)

    Or the problem apps parsing error because your Android Version is lower (e.g apps JB to ICS)

    Now you need to decompile that apps

    Go to smali folder and search what's wrong in logcat, if you already fix it

    Then open AndroidManifest.xml try to change minimal sdk version from Android_manifest or in apktool.yml

    1377208_1376196905951769_1861282843_n.jpg


    1381343_1376196852618441_1574383812_n.jpg



    Code:
    minSdkVersion: '[COLOR="Red"]16[/COLOR]'
    targetSdkVersion: '17'

    Change to this number

    Code:
    minSdkVersion: '[COLOR="Red"]14[/COLOR]'
    targetSdkVersion: '17'

    save all changes

    then recompile, sign and zipalign


    NOTE :
    1. You should right with signing the apps, Use Auto TESKEYS

    2. Not All apps can be ported to lower Android Version by changed minimal sdk