Hello everybody,
Recently, the MIUI team has opened up its source on GitHub. This makes it now possible for everybody to compile MIUI roms. However, the guide they've provided is completely in Chinese. Credits go to ThePCGuy for finding out how it works (original topic) I wrote this guide according to his findings and added complementary items that I found out during my attempts.
Step 1: Preparing your computer
Building your own MIUI rom can only be done on Linux-systems (or *nix, not sure). In this guide I'll be using Ubuntu 11.10.
1. First of all, download a zipball from here. Extract it and place it in a directory (I extracted it in /home/MisterGT/MiCode. From now on, I'll call this the MiCode root directory.
2. Now, it is required to get the android-sdk tools on your computer. You can find those here. Again, extract them somewhere (I put them in /home/MisterGT/Micode/android-sdk-linux).
3. Update your PATH to include the android tools. In a terminal write:
Code:
export PATH=/location/to/android-sdk-linux/platform-tools:/location/to/android-sdk-linux/tools:$PATH
And change the paths accordingly. In my case this would mean
Code:
export PATH=/home/MisterGT/MiCode/android-sdk-linux/platform-tools:/home/MisterGT/MiCode/android-sdk-linux/tools:$PATH
4. On x64 systems you are required to install some 32-bit libraries or the android toolkit will not work. In a terminal write:
Code:
sudo apt-get install ia32-libs
Step 2: Find an appropriate source rom
The package will convert a standard rom to a MIUI rom, so you'll have to choose a ROM you want to use as base. According to the manual, there are two requirements:
Android 2.3.3 - 2.3.7 supported
ROM with root abilities
Only HDPI devices are supported!
So after you've picked one, download it. In your MiCode root dir, create a new map and give it some name (I chose p990 as name). In that folder, put the ROM.zip and do not unzip it.
Step 3: Setting up the makefile
Firstly, copy the makefile from the i9100 directory which is an example. This is how it looks like:
Code:
#
# Makefile for i9100
#
# The original zip file, MUST be specified by each product
local-zip-file := I9100ZCKJ1.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI_9100.zip
# All apps from original ZIP, but has smali files chanded
local-modified-apps := LogsProvider Phone MediaProvider Settings
# All apks from MIUI execept MIUISystemUI and framework-miui-res.apk
local-miui-apps := Contacts ContactsProvider Mms TelephonyProvider ThemeManager Launcher2 \
DownloadProvider TelocationProvider Notes Music Torch DownloadProviderUi Updater
# All apps need to be removed from original ZIP file
local-remove-apps := AlipayGphone AmsComposer AndroidQQ_Samsung_Seine BuddiesNow cooldict glyder2 \
ImgoTV iReader kaixin001 Memo MiniDiary MinimalHome mreader PressReader ReadersHub Renren \
Sinamicroblog SinaNews SinaStock SinaWeather SocialHub Tencentmicroblog \
TomEbook Tonghuashun TouchWiz30Launcher Youku_Samsung_seine MusicPlayer \
MediaHub PhotoRetouching VideoEditor thinkdroid QYVideoClient \
Days DigitalClock Dlna DualClock Email EmailWidget FTC FTM FTS Kobo \
Microbesgl Navigator PostIt Protips QuickSearchBox SamsungApps SamsungAppsUNA3 \
SamsungIM SamsungWidget_ProgramMonitor SecretWallpaper1 SecretWallpaper2 \
SevenEngine SnsAccountKx SnsAccountRr SnsDisclaimer SnsImageCache SnsProvider \
Tasks TasksProvider Term TrimApp TwCalendarAppWidget Zinio \
samsungappswidget syncmldm viva_tts
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
local-pre-zip := local-zip-misc
local-after-zip:= local-test
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
include $(PORT_BUILD)/porting.mk
# To define any local-target
local-zip-misc:
cp misc/com.google.android.maps.jar $(ZIP_DIR)/system/framework/
@echo Add google apks
cp misc/apk/* $(ZIP_DIR)/system/app/
@echo Replace build.prop
cp misc/build.prop $(ZIP_DIR)/system/build.prop
local-test:
echo "an example action"
Explanations:
'local-zip-file' = Name of your original ROM zip that you just downloaded
'local-out-zip-file' = Name for your finished MIUI rom
'local-modified-apps' = Apps that will be modified to fit in with the framework. They need to be modified because they contact with the system
'local-miui-apps' = MIUI Apps that will be integrated into the zip
'local-remove-apps' = Apps that will be removed from the original ROM
'local-pre-zip' = Refers to codeblock that should be executed before the zip is done.
'local-after-zip' = Refers to codeblock executed after the zip is completed
'local-zip-misc' = The codeblock just described at 'local-pre-zip'. It adds some Google Apps and a buid.prop
'local-test' = Another codeblock
Step 4: Decompiling apps
Before we can build the new rom, we must decompile some apps and put them in the device folder (so in my case that would be the p990 folder).
/system/framework/android.policy.jar
/system/framework/framework.jar
/system/framework/framework-res.apk
/system/framework/services.jar
/system/app/SystemUI.apk
and all apps that you defined at 'local-modified-apps' in the makefile
Update: as it seems now you need to copy the systemui folder from the i9100 folder. This fixes issues related to systemui.apk not building.
Step 5: Building the rom
Now we're done and we can start building the rom. Open up a terminal and go to the MiCode root dir. Then type:
Code:
source build/envsetup.sh
cd p990 #Or whatever you called your device folder
make zipfile
It will now do a lot of things to build the ROM. Unfortunately, I'm getting a lot of errors when it tries to modify the apps from 'local-modified-apps'. And I don't have any clue to fix it, don't know anything about that..
Nice to see a X8 thread come here...
Sent from my W8 using Tapatalk
Does the base rom need to be in ext4 fotmat and does this work with ldpi devices like Samsung galaxy fit
Sent from my GT-S5670 using xda premium
Nice Informative Thread.
Gonna try it for Samsung Galaxy Fit.
Nice tutorial. I am trying it now on SGS4G.
---------- Post added at 11:39 AM ---------- Previous post was at 11:28 AM ----------
It works pretty slick. I et as far as making the zip and it does it's thing but stops at the SystemUi rebuilding. will have to figure out and will post progress...
so does anybody try this out for the Zte Blade/Skat?
It will only work for HDPI devices, as those are the only ones that are supported by the MIUI team. I'm still getting errors when trying to build SystemUI.apk, I've filed a issue for that though.
Code:
build .build/services.jar...
--------------------------------------------
cp -r services.jar.out/ .build/services
/home/lomash/MiCode/tools/add_miui_smail.sh .build/services_miui .build/services
/home/lomash/MiCode/tools/apktool b .build/services .build/services.jar
I: Checking whether sources has changed...
W: Could not find resources
I: Building apk file...
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /home/lomash/MiCode/s5670/.build/services.jar, /home/lomash/MiCode/s5670/.build/services/build/apk]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:193)
at brut.androlib.Androlib.buildApk(Androlib.java:355)
at brut.androlib.Androlib.build(Androlib.java:174)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /home/lomash/MiCode/s5670/.build/services.jar, /home/lomash/MiCode/s5670/.build/services/build/apk]
at brut.util.OS.exec(OS.java:87)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:191)
... 5 more
Caused by: java.io.IOException: Cannot run program "aapt": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
at java.lang.Runtime.exec(Runtime.java:610)
at java.lang.Runtime.exec(Runtime.java:483)
at brut.util.OS.exec(OS.java:78)
... 6 more
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
at java.lang.ProcessImpl.start(ProcessImpl.java:81)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
... 9 more
make: *** [.build/services.jar] Error 1
Can anyone help me a little?
---------- Post added at 11:28 PM ---------- Previous post was at 11:27 PM ----------
aapt is there in the android-sdk-linux/tools folder.
MisterGT said:
It will only work for HDPI devices, as those are the only ones that are supported by the MIUI team. I'm still getting errors when trying to build SystemUI.apk, I've filed a issue for that though.
Click to expand...
Click to collapse
I am having the same issue. I get as far as SystemUI and get errors. LMK if you find an answer!
Thanks
Will this work on the exhibit II
Sent from my SGH-T679 using xda premium
People you need to read the OP. It tells you what it will work on.
The package will convert a standard rom to a MIUI rom, so you'll have to choose a ROM you want to use as base. According to the manual, there are two requirements:
Android 2.3.3 - 2.3.7 supported
ROM with root abilities
lomash said:
aapt is there in the android-sdk-linux/tools folder.
Click to expand...
Click to collapse
You didn't add the folder to your PATH.
Ppl are saying this is only ics compatible is this true
Sent from my SGH-T679 using xda premium
dswaggz said:
Ppl are saying this is only ics compatible is this true
Sent from my SGH-T679 using xda premium
Click to expand...
Click to collapse
No, that's not true.
~ Gingerbread
The opposite is true. It is only compatible with gingerbread roms.
Sent from my Optimus 2X using XDA App
Does the original ROM we use need to be AOSP-based ?
Now I see why Developers keep Leaving. Everyone keeps asking the same question that has the answer in the original POST!!!!!!!People you need to read the OP. It tells you what it will work on.
The package will convert a standard rom to a MIUI rom, so you'll have to choose a ROM you want to use as base. According to the manual, there are two requirements:
Android 2.3.3 - 2.3.7 supported
ROM with root abilities
Im having issues too can't seems to get pass that error TT im working on galaxy w btw , anyone has sucessfully create a muiu rom? Thx in advance
i'm on 64bit ubuntu and can't install 32bit libraries for some unknown reason.
DarthJonathan said:
Im having issues too can't seems to get pass that error TT im working on galaxy w btw , anyone has sucessfully create a muiu rom? Thx in advance
Click to expand...
Click to collapse
Yeah literally everyone is stuck on the SystemUI.apk building. I'll post the error log from the terminal.
Code:
cp -r SystemUI .build
/home/kemikal/MiCode/tools/apktool b .build/SystemUI .build/MIUISystemUI.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
res/drawable-hdpi/status_bar_background.png:0: error: Resource entry status_bar_background is already defined.
res/drawable-hdpi/status_bar_background.9.png:0: Originally defined here.
/home/kemikal/MiCode/ancora/.build/SystemUI/res/values/styles.xml:3: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Holo.Light.Panel'.
/home/kemikal/MiCode/ancora/.build/SystemUI/res/values/styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Holo.Light.Panel'.
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL5695998133584055968.tmp, -I, /home/kemikal/apktool/framework/1.apk, -S, /home/kemikal/MiCode/ancora/.build/SystemUI/res, -M, /home/kemikal/MiCode/ancora/.build/SystemUI/AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, /tmp/APKTOOL5695998133584055968.tmp, -I, /home/kemikal/apktool/framework/1.apk, -S, /home/kemikal/MiCode/ancora/.build/SystemUI/res, -M, /home/kemikal/MiCode/ancora/.build/SystemUI/AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:191)
... 6 more
make: *** [.build/MIUISystemUI.apk] Error 1
'@android:style/Theme.Holo.Light.Panel'.
http://pastebin.com/3bWugdSc
'@android:style/Theme.Holo.Light.Panel'.
That Holo style resource can't be found. That seems to be causing the problem. Maybe there is a way to omit or fix that code and continue building?
Sent from my SGH-T679 using Tapatalk
Related
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
sorry for my poor english.. i write this guide by request.
this is pretty simple thing..
1. decompile framework-res.apk
- you need apktool.jar 1.4.3 version to decompile ics apk.
download 1.4.3 : http://code.google.com/p/android-apktool/downloads/list
download 1.4.2 : http://code.google.com/p/android-apktool/downloads/detail?name=apktool1.4.2.tar.bz2&can=1&q=
(if you have problems with 1.4.3, use 1.4.2 instead)
2. open /res/values/bools.xml with a text editor
3. find "config_showNavigationBar" and set to true
4. to turn off capacitive buttons backlight, maybe you need to edit arrays.xml
- it does not work on my nexus s but seem to be working well on some other devices..
-----------------------------------------------------------------------------
* 5 [WVGA devices only] it would be better to slightly resize navigation bar height to avoid keyboard overlapping problem (see this post).
(or you have to lower lcd density but that cause app compatibility issues)
: open dimens.xml and find the line "navigation_bar_height".
and you need one more step to compensate buttons sizes.
download : http://www.mediafire.com/?758mnayrlt3dee4
this zip include 4 png files. add those files to SystemUI.apk (/res/drawable-hdpi/) using 7-zip or other program. (replace original PNGs to these files).
-----------------------------------------------------------------------------
6. recompile
- you need new aapt.exe from latest platform-tools.
download : http://www.mediafire.com/?0q52u6v8vdkpq1i
7. done
*if you don't know how to modify apk file, read this post first.
-
Where did you get apktool 1.4.2?
How would I disable the onscrwen keys in twlauncher 4. 5? Cause we already configured the ics keys to be our softkeus?
Sent from my SCH-I400 using xda premium
KBanause said:
Where did you get apktool 1.4.2?
Click to expand...
Click to collapse
yes interesting question
KBanause said:
Where did you get apktool 1.4.2?
Click to expand...
Click to collapse
here it is : http://www.multiupload.com/YWJHOSZ7GJ
you can find it here
ciscogee said:
How would I disable the onscrwen keys in twlauncher 4. 5? Cause we already configured the ics keys to be our softkeus?
Sent from my SCH-I400 using xda premium
Click to expand...
Click to collapse
sorry but you'd better ask your rom dev to do it..
evilisto said:
here it is : http://www.multiupload.com/YWJHOSZ7GJ
you can find it here
Click to expand...
Click to collapse
Thanks. At least I was able to recompile the framework-res.apk wothout any errors. Now I have to check if I can use it without bootloops
evilisto said:
here it is : http://www.multiupload.com/YWJHOSZ7GJ
you can find it here
sorry but you'd better ask your rom dev to do it..
Click to expand...
Click to collapse
Worked for me with this apktool
Edit: decompile that is
THX!
Could you got a little more in-depth on step 5? Whats the correct way to recompile the apk with aapt?
pingpongboss said:
Could you got a little more in-depth on step 5? Whats the correct way to recompile the apk with aapt?
Click to expand...
Click to collapse
just put aapt.exe in the same folder as apktool.jar. that's all
can someone please help me with using apktool and decompiling my framework-res?
I'm not having any trouble with decompiling, but after making the necessary changes to bools and array, I can not get it to recompile.
What am I doing wrong here?
to decompile....
Code:
apktool d framework-res.apk
....make the changes, then...
Code:
apktool b framework-res
and i get this:
Code:
c:\apktool>apktool b framework-res.apk
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml
at brut.androlib.Androlib.readMetaFile(Androlib.java:142)
at brut.androlib.Androlib.build(Androlib.java:159)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.directory.PathNotExist: apktool.yml
at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:
103)
at brut.androlib.Androlib.readMetaFile(Androlib.java:138)
... 4 more
c:\apktool>
Any help would be much appreciated.
EDIT -
Just noticed that I typed....
Code:
apktool b framework-res.apk
...instead of...
Code:
apktool b framework-res
When I tried it without the .apk, I get this....
Code:
c:\apktool>apktool b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
invalid resource directory name: c:\apktool\framework-res\res/drawable-sw600dp-h
dpi
invalid resource directory name: c:\apktool\framework-res\res/layout-sw600dp
invalid resource directory name: c:\apktool\framework-res\res/layout-w600dp
invalid resource directory name: c:\apktool\framework-res\res/values-h720dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp-w10
24dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp-w12
80dp
invalid resource directory name: c:\apktool\framework-res\res/values-w360dp
invalid resource directory name: c:\apktool\framework-res\res/values-w480dp
invalid resource directory name: c:\apktool\framework-res\res/values-w500dp
invalid resource directory name: c:\apktool\framework-res\res/values-w600dp
invalid resource directory name: c:\apktool\framework-res\res/values-w720dp
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\BRANDO~1.AMY\AppData\Local
\Temp\APKTOOL5284591862303952400.tmp, -x, -S, c:\apktool\framework-res\res, -M,
c:\apktool\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\BRANDO~1.AMY\AppData\Local\Temp\APKTOOL5284591862303952400.tmp, -x, -S, c:\
apktool\framework-res\res, -M, c:\apktool\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
sixfearstheseven said:
I'm not having any trouble with decompiling, but after making the necessary changes to bools and array, I can not get it to recompile.
What am I doing wrong here?
to decompile....
Code:
apktool d framework-res.apk
....make the changes, then...
Code:
apktool b framework-res
and i get this:
Code:
c:\apktool>apktool b framework-res.apk
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml
at brut.androlib.Androlib.readMetaFile(Androlib.java:142)
at brut.androlib.Androlib.build(Androlib.java:159)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.directory.PathNotExist: apktool.yml
at brut.directory.AbstractDirectory.getFileInput(AbstractDirectory.java:
103)
at brut.androlib.Androlib.readMetaFile(Androlib.java:138)
... 4 more
c:\apktool>
Any help would be much appreciated.
EDIT -
Just noticed that I typed....
Code:
apktool b framework-res.apk
...instead of...
Code:
apktool b framework-res
When I tried it without the .apk, I get this....
Code:
c:\apktool>apktool b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
invalid resource directory name: c:\apktool\framework-res\res/drawable-sw600dp-h
dpi
invalid resource directory name: c:\apktool\framework-res\res/layout-sw600dp
invalid resource directory name: c:\apktool\framework-res\res/layout-w600dp
invalid resource directory name: c:\apktool\framework-res\res/values-h720dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp-w10
24dp
invalid resource directory name: c:\apktool\framework-res\res/values-sw600dp-w12
80dp
invalid resource directory name: c:\apktool\framework-res\res/values-w360dp
invalid resource directory name: c:\apktool\framework-res\res/values-w480dp
invalid resource directory name: c:\apktool\framework-res\res/values-w500dp
invalid resource directory name: c:\apktool\framework-res\res/values-w600dp
invalid resource directory name: c:\apktool\framework-res\res/values-w720dp
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\BRANDO~1.AMY\AppData\Local
\Temp\APKTOOL5284591862303952400.tmp, -x, -S, c:\apktool\framework-res\res, -M,
c:\apktool\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\BRANDO~1.AMY\AppData\Local\Temp\APKTOOL5284591862303952400.tmp, -x, -S, c:\
apktool\framework-res\res, -M, c:\apktool\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
Click to expand...
Click to collapse
Same here, getting the same error when recompiling it -_- 3 people have told me it's because aapt isn't the ICS version but I updated it 3 times and even asked someone to upload and I get that same error.
GazaIan said:
Same here, getting the same error when recompiling it -_- 3 people have told me it's because aapt isn't the ICS version but I updated it 3 times and even asked someone to upload and I get that same error.
Click to expand...
Click to collapse
Yep, i did the same thing with aapt. I triple and quadruple checked that it was the ICS compatible version, but still no dice.
I don't know. I'm still patiently waiting for a proper developer to throw together a version for the Incredible that has the on screen nav buttons since i know next to nothing about this stuff, but seriously, this process looks so simple yet I'm having so much trouble with it.
Even if i did get it to compile, I'd be stuck because adb never wants to push or pull files from my phone.
Sent from my Incredible using xda premium
sixfearstheseven said:
Yep, i did the same thing with aapt. I triple and quadruple checked that it was the ICS compatible version, but still no dice.
I don't know. I'm still patiently waiting for a proper developer to throw together a version for the Incredible that has the on screen nav buttons since i know next to nothing about this stuff, but seriously, this process looks so simple yet I'm having so much trouble with it.
Even if i did get it to compile, I'd be stuck because adb never wants to push or pull files from my phone.
Sent from my Incredible using xda premium
Click to expand...
Click to collapse
You can always copy it over and set permissions (although it usually crashes before you can), or put it in an update.zip. The update.zip method is my favorite.
GazaIan said:
You can always copy it over and set permissions (although it usually crashes before you can), or put it in an update.zip. The update.zip method is my favorite.
Click to expand...
Click to collapse
How does that work? Sorry, I'm pretty new to all of this. Do I just zip up the framework apk, name it update.zip, then flash it in CWM? Or is there more to it?
If it's that easy, that would be awesome, if only I could get the apk to compile.
I'm so frustrated with this that I'm about willing to offer a donation to someone who could do it for me, although it would be much more satisfying if I could get it done on my own. Maybe I could give a donation to someone who could successfully walk me through it. The offers out there of anyone wants to take it.
Sent from my Incredible using xda premium
sixfearstheseven said:
Yep, i did the same thing with aapt. I triple and quadruple checked that it was the ICS compatible version, but still no dice.
I don't know. I'm still patiently waiting for a proper developer to throw together a version for the Incredible that has the on screen nav buttons since i know next to nothing about this stuff, but seriously, this process looks so simple yet I'm having so much trouble with it.
Even if i did get it to compile, I'd be stuck because adb never wants to push or pull files from my phone.
Sent from my Incredible using xda premium
Click to expand...
Click to collapse
try again with this aapt... : http://www.mediafire.com/?0q52u6v8vdkpq1i
evilisto said:
try again with this aapt... : http://www.mediafire.com/?0q52u6v8vdkpq1i
Click to expand...
Click to collapse
Were you able to get it to work with that?
I found a work around two days ago. I took the customized XML files and put them in a Metamorph zip file. I ran it and it successfully changed framework-res.apk but the navigation buttons still wouldn't show. Now, I don't know much about this, so I'm not sure if doing it that way should have worked, but if it should have, it didn't, which would mean the instructions in the first post are incomplete.
I'm doing this on my Incredible, so maybe the ROM I'm using is missing something else. I have no idea. I've tried it on three different ICS ROMs and it didn't work on any of them.
When I get a chance, I'll try it with the new aapt.
Sent from my ADR6300 using xda premium
Thanks for that new aapt, it works. It recompiled everything, but the file size is 4mb smaller than the original framework-res.apk. I get nothing but bootloops now. I also compiled with APK Multi Tool which also worked, but with the same results - bootloops.
Would it be possible to enable the soft buttons on a gingerbread ROM?
~=[,,_,,]:3 <----nyancat
Futur Innovations said:
Would it be possible to enable the soft buttons on a gingerbread ROM?
~=[,,_,,]:3 <----nyancat
Click to expand...
Click to collapse
I highly doubt it, enough to confidently say no.
Sent from my GT-P7510 using xda premium
Hello,
Wanted to enable VOIP on ICS, but couldn't find the info. After bricking my phone twice and fixing it again
I succeeded.
problems i encountered so far:
Fragmented info in the numerous treads that are around over voip
Incomplete manuals
People giving advice without trying it on their own phone first
Bugs
So this is what i did:
On the PC
Install latest Java Runtime Environment (current version 6 Update 31)
Install latest Java SE Development Kit (current version 7u3)
Install latest Android SDK then run SDK manager and install the suggested packages
Download latest APKtool (http://code.google.com/p/android-apktool/ version 1.4.3)
Install samsung USB drivers (available on sammobile.com)
Add the \bin, \tools and \platform-tools directory to the PATH variable
in windows 7, right click computer in start menu->properties->click advanced system properties->hit the button system variables and add them to the path variable.
In my case:
c:\Program Files\Java\jdk1.7.0_03\bin;c:\Program Files\Java\jre7\bin;c:\Program Files\Android\android-sdk\platform-tools;c:\Program Files\Android\android-sdk\tools
Reboot PC (just to be sure, its windows)
On the Phone
Rooted phone
Install rootexplorer (market)
Install clockworkmod recovery (download rommanager in market)
Install busybox (Market, Stephen Erickson)
CWM and Busybox needed in case you mess up
With Rootexplorer
goto /system/framework/ and make the directory R/W
copy /system/framework/framework-res.apk to /system/framework/framework-res.apk.bak
Copy /system/framework/framework-res.apk to PC
Back to PC
Make directory
c:\APKTool
unpack downloaded APKTool to this folder
copy framework-res.apk to this folder
this folder should now contain:
framework-res.apk
apktool.jar
The following info is from http://www.miui-au.com/add-ons/apktool/
open a command prompt in the APKTool directory and run the following command:
Code:
java -jar apktool.jar if framework-res.apk
Code:
java -jar apktool.jar d framework-res.apk
this should decompile framework-res.apk to a folder named framework-res
goto the following folder
c:\apktool\framework-res\res\values
edit (notepad) the following lines in the file bools.xml to
Code:
<bool name="config_sip_wifi_only">false</bool>
<bool name="config_built_in_sip_phone">true</bool>
Now we are going to compile framework-res.apk again
Code:
java -jar apktool.jar b framework-res
Due to a bug in either APKTool.jar or aapt.exe you will probable run into a number of errors that need to be fixed
Code:
apktool\framework-res\res\values\plurals.xml:79: error
: Multiple substitutions specified in non-positional format; did you mean to add
the formatted="false" attribute?
A fix is explained at the following site:
http://www.miui.nl/?page_id=2216
in every plurals.xml file that generates an error find the following section and change it to:
Code:
<plurals name="matches_found">
<item quantity="other">%d of %d</item>
<item quantity="one">1 match</item>
</plurals>
to
Code:
<plurals name="matches_found">
<item quantity="other">%1$d of %2$d</item>
<item quantity="one">1 match</item>
</plurals>
After fixing this (could be up to 80 files, depending on ROM)
we can successfully compile framework-res.apk
Code:
java -jar apktool.jar b framework-res
We should have one warning
Code:
W: Could not find sources
This is normal for framework-res.apk
After compilation we should have the following two new folders
Code:
c:\temp\apktool\framework-res\build\
c:\temp\apktool\framework-res\dist\
in the directory dist there is a newly created framework-res.apk
DO NOT USE THIS FILE, IT WILL BRICK YOUR PHONE
instead go to the directory
Code:
framework-res\build\apk\
there should be a file resources.arsc. This file contains all our modifications and is all we need.
Framework-res.apk is a compressed file. We can open it with a zip program. I used Total Commander for this (www.ghisler.com)
now open the original Framework-res.apk and copy (pack) our modified resources.arsc (overwrite the original)
Now we have a modified framework-res.apk with voip enabled
Next we have to make the following two files:
android.software.sip.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2009 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- This is the standard set of features for devices that support SIP API. -->
<permissions>
<feature name="android.software.sip" />
</permissions>
android.software.sip.voip.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2009 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- This is the standard set of features for devices that support SIP-based VoIP. -->
<permissions>
<feature name="android.software.sip" />
<feature name="android.software.sip.voip" />
</permissions>
Copy the three files back to the Phone
Back to Phone again
UNSUCCESSFUL COMPILING, WRONG COPYING OR PURE BAD LUCK CAN BRICK YOUR PHONE. BACKUP YOUR PHONE BEFORE PROCEEDING!
CONTINUE AT YOUR OWN RISK
FORGET ADB PUSH, BE SURE TO HAVE ROOTEXPORER
Everyone saying otherwise is:
a)lying
b)not running stock rom
c)lucky
d)laisy for not writing a decent HOWTO ADB PUSH
So go ahead with root explorer
Copy android.software.sip.xml and android.software.sip.voip.xml to /system/etc/permissions
Set the persissions to rw-r--r--
Change owner to user 0-Root, group 0-root
copy framework-res.apk to /system
Set the persissions to rw-r--r--
Change owner to user 0-Root, group 0-root
Move /system/framework-res.apk to /system/framework (be sure to make backup the original file)
After reboot VOIP is enabled
What if something goes wrong:
If all else fails flash your original rom
or (works only if you followed everything in this manual)
Reboot your Phone in recovery mode (press&hold home, volume-up, power button)
In recovery mode mount /system and /SDCARD
Connect your Phone (still in recovery mode) to the PC
on the PC open a command prompt
Type the following (sgs2)
adb shell
su
mount -o remount,rw /dev/block/mmcblk0p9 /system
cp /system/framework/framework-res.apk.bak /system/framework/framework-res.apk.bak
reboot
this should copy the backup file back.
good luck
Hi. VOIP doesn't work in my country due to restrictions but you can try this.
1. Download anycut from the market.
2. Long hold desktop > add shortcut.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
3. Click on Activity.
4. Click on SIP Settings.
5. An icon will appear on the desktop.
6. Click on icon and set it up as you wish.
I think this is a much simpler approach and just works without root or any modification.
Sent from my GT-I9100
If you wish then you can uninstall anycut after you finish. In its defense it is a 32kb program made by a Googler.
Sent from my GT-I9100
akbarhash said:
I think this is a much simpler approach and just works without root or any modification.
Click to expand...
Click to collapse
Nice try, but this will only work if voip is enabled first. basically this program only adds a shortcut to voip settings, but if the voip interface is disabled, this doesn't work.
nice effort but didn't work for me..
This is ok, but...
akbarhash said:
Hi. VOIP doesn't work in my country due to restrictions but you can try this.
1. Download anycut from the market.
2. Long hold desktop > add shortcut.
3. Click on Activity.
4. Click on SIP Settings.
5. An icon will appear on the desktop.
6. Click on icon and set it up as you wish.
I think this is a much simpler approach and just works without root or any modification.
Sent from my GT-I9100
Click to expand...
Click to collapse
This is ok for me, but don´t save the account, and checkit status forever. Any solution?
Thank.
im using bria
hi
its too long procedure. i m using bria on SGS rooted phone. and its work great.
adejager1 said:
UNSUCCESSFUL COMPILING, WRONG COPYING OR PURE BAD LUCK CAN BRICK YOUR PHONE.
Click to expand...
Click to collapse
Damn, which I have a lot
Dears,
I'm following this guide but I have a problem recompiling.
This is the log:
c:\APKtool>java -jar apktool.jar b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
invalid resource directory name: c:\APKtool\framework-res\res/drawable-sw600dp-h
dpi
invalid resource directory name: c:\APKtool\framework-res\res/layout-sw400dp
invalid resource directory name: c:\APKtool\framework-res\res/layout-sw600dp
invalid resource directory name: c:\APKtool\framework-res\res/layout-w600dp
invalid resource directory name: c:\APKtool\framework-res\res/values-h720dp
invalid resource directory name: c:\APKtool\framework-res\res/values-sw360dp
invalid resource directory name: c:\APKtool\framework-res\res/values-sw400dp
invalid resource directory name: c:\APKtool\framework-res\res/values-sw600dp
invalid resource directory name: c:\APKtool\framework-res\res/values-sw600dp-lan
d
invalid resource directory name: c:\APKtool\framework-res\res/values-sw600dp-w10
24dp
invalid resource directory name: c:\APKtool\framework-res\res/values-sw600dp-w12
80dp
invalid resource directory name: c:\APKtool\framework-res\res/values-w360dp
invalid resource directory name: c:\APKtool\framework-res\res/values-w480dp
invalid resource directory name: c:\APKtool\framework-res\res/values-w500dp
invalid resource directory name: c:\APKtool\framework-res\res/values-w600dp
invalid resource directory name: c:\APKtool\framework-res\res/values-w720dp
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\FEDERI~1.RAM\AppData\Local
\Temp\APKTOOL1708831992001626862.tmp, -x, -S, c:\APKtool\framework-res\res, -M,
c:\APKtool\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\FEDERI~1.RAM\AppData\Local\Temp\APKTOOL1708831992001626862.tmp, -x, -S, c:\
APKtool\framework-res\res, -M, c:\APKtool\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
c:\APKtool>
I'm on Windows, so I think the problem is the / in the paths, but I don't know the cause of this.
I'm not a programmer.
Original framework-res.apk, APKtool and the framework-res folder with the already modified file are attached.
Can anybody gently help me?
Thank you so much.
I can get to the sip settings and add an account, but as this poster says, the account says "Checking status" forever. Also every now and then, the account simply disappears. There's no save button either.
Anyone with the same problems? Any ideas?
[HOW-TO][29/MAR] How to setup APKTool & Decompile, Recomile, Sign, and Zipalign APKs
Decompile, Recompile, Sign and Zipalign APKs
Since there aren't many tutorials out there on how to decompile, recompile, sign and zipalign the framework-res.apk, or other APK files, I decided to create one myself
Decompiling, editing, recompiling and signing It can yield a number of results, for example, you can edit the values, add custom images, fix some issues, or just go on an adventure
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[WHAT YOU NEED]
1) A computer
2) The APK you want to edit
3) Latest Java Development Kit (JDK) (Download and Install with default settings http://www.java.com/en/download/index.jsp)
4) Some resource files, which I have bundled into on convenient zip, found here.
5) The Framework-res.apk from /system/framework
- In the case of it being an APK from an HTC based ROM, you will also need the com.htc,resources.apk, found in the same directory
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[STEPS]
- Initial Setup
- First download the zip from above, and extract the files, into C:\Android\APK
- Then, install the JDK from the link above, to the default location
- Then, go to Start, search for 'Environment,' and choose 'Edit Environment Variables for your Account.'
- Now, edit 'PATH,' and 'CLASSPATH.' (If you don't have them, just add them, and name them PATH and CLASSPATH)
- - For PATH, give this as the Variable Value: "C:\Program Files\Java\jdkXXX\bin;" (Without Quotes)(XXX is the JDK version you have)
- - For CLASSPATH, give this as the Variable Value: "C:\Program Files\Java\jdkXXX\jre\lib;" (Without Quotes)(XXX is the JDK version you have)
- Install the Framework:
- Now, move the framework-res.apk, and com.htc.resources.apk (If HTC), to C:\Android\APK
- Press shift, and right click in the folder, and open a command prompt window from the dropdown
- - Type in: "Apktool if framework-res.apk" (Without Quotes) And Press Enter
- - If it is an HTC ROM, Type in: "Apktool if com.htc.resources.apk" (Without Quotes) And Press Enter
- If this goes successfully, you can remove these two APKs from the folder
* NOTE: Everything above was ONE TIME ONLY *
- Decompiling the APK
- Now, copy the APK that you want to decmopile, to C:\Android\APK
- Open a command prompt window there
- Type in "Apktool d xxx.apk" (Without Quotes, and replace xxx with the APK name)
- Once this is done successfully, you will have a folder with the APK name in C:\Android\APK
- You can now make any edits you like
- Recompiling the APK
- Once you're done editing, go back to C:\Android\APK
- Open a command prompt window, and type in "Apktool b xxx"
(Without Quotes, and xxx is the name of the folder where the APK was extracted)
- Once this is done, the new APK can be found in C:\Android\APK\xxx\dist (xxx is name of folder where you extracted the APK)
- Signing, and Zipaligning
- Now, there are two ways to do this.
- - Either you install DSIXDA's kitchen, from here, and use that to Sign, and Zipalign
- - Or, you send me the APK, and I'll do it for you
* NOTE: Always Sign, THEN Zipalign *
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[CREDITS]
1• Mwilky for teaching me all this
2• Floatshow for initial recompiling instructions
3• Fisha21 for helping out
And how about to recompile it back ?
What are the steps ?
Sent from my HOX
1immortal said:
And how about to recompile it back ?
What are the steps ?
Sent from my HOX
Click to expand...
Click to collapse
Hmm, for that, we have to use 'aapt.exe' I will post a tutorial for it soon
download it here meanwhile
1immortal said:
And how about to recompile it back ?
What are the steps ?
Sent from my HOX
Click to expand...
Click to collapse
Added recompiling steps
Sent from my HTC One X using xda premium
Nice guide! Thanks OP!
Mr.Mefisto said:
Nice guide! Thanks OP!
Click to expand...
Click to collapse
No problemo
Sent from my HTC One X using xda premium
Nice guide! Question is do you have to sign system APKs? (Such as framework-rés.apk or SystemUI.apk)
Sent from my HTC One X using xda premium
Yes we do, use SignAPK
Sent from my HTC One X using xda premium
when I'm trying to recompile, I get this:
Code:
D:\Decompiling>java -jar apktool.jar b framework-res framework-res.apk
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
D:\Decompiling\framework-res\res\values\layouts.xml:3: error: Found tag layout w
here item is expected
D:\Decompiling\framework-res\res\values\raws.xml:3: error: Found tag raw where i
tem is expected
D:\Decompiling\framework-res\res\values\public.xml:6943: error: Public symbol la
yout/htc_list_item_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6944: error: Public symbol la
yout/htc_list_item_2text_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6945: error: Public symbol la
yout/htc_list_item_image_2text_image_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6946: error: Public symbol la
yout/htc_list_item_imageicon_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6947: error: Public symbol la
yout/htc_list_item_imageicon_text declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6948: error: Public symbol la
yout/htc_list_item_separator declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6949: error: Public symbol la
yout/keyguard_screen_device_unlock declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6950: error: Public symbol la
yout/pin_keyboard declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:7151: error: Public symbol ra
w/fallbackring_htc declared here is not defined.
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\WiZARD\AppData\Local\Temp\
APKTOOL1215629564114721126.tmp, -x, -S, D:\Decompiling\framework-res\res, -M, D:
\Decompiling\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\WiZARD\AppData\Local\Temp\APKTOOL1215629564114721126.tmp, -x, -S, D:\Decomp
iling\framework-res\res, -M, D:\Decompiling\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
what should I do?
WiZARD7 said:
when I'm trying to recompile, I get this:
Code:
D:\Decompiling>java -jar apktool.jar b framework-res framework-res.apk
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
D:\Decompiling\framework-res\res\values\layouts.xml:3: error: Found tag layout w
here item is expected
D:\Decompiling\framework-res\res\values\raws.xml:3: error: Found tag raw where i
tem is expected
D:\Decompiling\framework-res\res\values\public.xml:6943: error: Public symbol la
yout/htc_list_item_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6944: error: Public symbol la
yout/htc_list_item_2text_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6945: error: Public symbol la
yout/htc_list_item_image_2text_image_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6946: error: Public symbol la
yout/htc_list_item_imageicon_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6947: error: Public symbol la
yout/htc_list_item_imageicon_text declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6948: error: Public symbol la
yout/htc_list_item_separator declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6949: error: Public symbol la
yout/keyguard_screen_device_unlock declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6950: error: Public symbol la
yout/pin_keyboard declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:7151: error: Public symbol ra
w/fallbackring_htc declared here is not defined.
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\WiZARD\AppData\Local\Temp\
APKTOOL1215629564114721126.tmp, -x, -S, D:\Decompiling\framework-res\res, -M, D:
\Decompiling\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\WiZARD\AppData\Local\Temp\APKTOOL1215629564114721126.tmp, -x, -S, D:\Decomp
iling\framework-res\res, -M, D:\Decompiling\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
what should I do?
Click to expand...
Click to collapse
Reading that, I seriously have no idea :S Im no expert, just know basics, so I wrote this tutorial. Try Google? Really sorry :/
Sent from my HTC One X using xda premium
There is a problem with older versions of APKtool, in that they break the formatting of some of the XML tags in framework-res.apk, which is why your recompiling fails.
Check this thread for how to fix it: http://forum.xda-developers.com/showthread.php?t=1601511
However, I think the newest version of apktool.jar fixes this for us. You can download this version at ibotpeaches' thread:
http://forum.xda-developers.com/showthread.php?p=28366939
As well as the newest version of apktool.jar, you also need the updated aapt.exe, which can you grab here:
http://forum.xda-developers.com/showpost.php?p=29533731&postcount=157
WiZARD7 said:
when I'm trying to recompile, I get this:
Code:
D:\Decompiling>java -jar apktool.jar b framework-res framework-res.apk
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
D:\Decompiling\framework-res\res\values\layouts.xml:3: error: Found tag layout w
here item is expected
D:\Decompiling\framework-res\res\values\raws.xml:3: error: Found tag raw where i
tem is expected
D:\Decompiling\framework-res\res\values\public.xml:6943: error: Public symbol la
yout/htc_list_item_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6944: error: Public symbol la
yout/htc_list_item_2text_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6945: error: Public symbol la
yout/htc_list_item_image_2text_image_bright declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6946: error: Public symbol la
yout/htc_list_item_imageicon_2text_2stamp declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6947: error: Public symbol la
yout/htc_list_item_imageicon_text declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6948: error: Public symbol la
yout/htc_list_item_separator declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6949: error: Public symbol la
yout/keyguard_screen_device_unlock declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:6950: error: Public symbol la
yout/pin_keyboard declared here is not defined.
D:\Decompiling\framework-res\res\values\public.xml:7151: error: Public symbol ra
w/fallbackring_htc declared here is not defined.
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutExce
ption: could not exec command: [aapt, p, -F, C:\Users\WiZARD\AppData\Local\Temp\
APKTOOL1215629564114721126.tmp, -x, -S, D:\Decompiling\framework-res\res, -M, D:
\Decompiling\framework-res\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:193)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:301)
at brut.androlib.Androlib.buildResources(Androlib.java:248)
at brut.androlib.Androlib.build(Androlib.java:171)
at brut.androlib.Androlib.build(Androlib.java:154)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\U
sers\WiZARD\AppData\Local\Temp\APKTOOL1215629564114721126.tmp, -x, -S, D:\Decomp
iling\framework-res\res, -M, D:\Decompiling\framework-res\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:191)
... 6 more
what should I do?
Click to expand...
Click to collapse
fisha21 said:
There is a problem with older versions of APKtool, in that they break the formatting of some of the XML tags in framework-res.apk, which is why your recompiling fails.
Check this thread for how to fix it: http://forum.xda-developers.com/showthread.php?t=1601511
However, I think the newest version of apktool.jar fixes this for us. You can download this version at ibotpeaches' thread:
http://forum.xda-developers.com/showthread.php?p=28366939
As well as the newest version of apktool.jar, you also need the updated aapt.exe, which can you grab here:
http://forum.xda-developers.com/showpost.php?p=29533731&postcount=157
Click to expand...
Click to collapse
Thanks! Added to OP
Sent from my HTC One X using xda premium
Hi Guys,
m on IceColdJelly 0.8.2 and want to disable the 180° roating. So I decompile the framework-res.apk. Than i set in bools.xml (res\values\bools.xml) name="config_allowAllRotations">true< to false. And than I want to recompile it but look at this.
I try to fix with this. I cant find anims.xml, layout.xml & raws.xml in "framework-res\res\values"
*$M3RT$* said:
Hi Guys,
m on IceColdJelly 0.8.2 and want to disable the 180° roating. So I decompile the framework-res.apk. Than i set in bools.xml (res\values\bools.xml) name="config_allowAllRotations">true< to false. And than I want to recompile it but look at this.
I try to fix with this. I cant find anims.xml, layout.xml & raws.xml in "framework-res\res\values"
Click to expand...
Click to collapse
Follow this guide. It's working for me to 100% on JB roms.
icke said:
Follow this guide. It's working for me to 100% on JB roms.
Click to expand...
Click to collapse
Added to OP
Sent from my HTC One X using xda premium
thanks now its work. But I have 2 new Questions .
1. Why the stock framework-res.apk is 12mb big and my recompiled & signed framework-res.apk 9-10mb? its the same with 1 different (name="config_allowAllRotations">true< to false) [recompiled apk = ~10mb, stock apk = ~12mb]
2. I delete the framework-res.apk from the Rom and insert the recompiled one. And the Rom dont boot >.<. I have sign it.
*$M3RT$* said:
thanks now its work. But I have 2 new Questions .
1. Why the stock framework-res.apk is 12mb big and my recompiled & signed framework-res.apk 9-10mb? its the same with 1 different (name="config_allowAllRotations">true< to false) [recompiled apk = ~10mb, stock apk = ~12mb]
2. I delete the framework-res.apk from the Rom and insert the recompiled one. And the Rom dont boot >.<. I have sign it.
Click to expand...
Click to collapse
Dont know about question 1
Answer#2 copy it to system/framework, but you have to change the permissions too. Go into recovery, advanced, fix permissions, and then boot )
If you have more questions, just post here
Sent from my HTC One X using xda premium
Also, if you cant copy it to /system/framework, then just boot into recovery, and go to mounts and storage, and mount system. Then connect to a computer, and type in the following adb commands
Adb remount
Press enter.
Adb push framework-res.apk /system/framework
Press enter.
Then fix permissions
Ps, for the adb commands to work, the framework-res.apk needs to be in the folder with the adb and fastboot files on the computer
Sent from my HTC One X using xda premium
How i make a flashable .zip
*$M3RT$* said:
How i make a flashable .zip
Click to expand...
Click to collapse
You need a metainf folder with installation instructions, which i dont know xD why do u need a zip anyways/
Sent from my HTC One X using xda premium
While using apktool to recompile the contacts apk, SecContacts_OSup.apk, I am getting the following error in cmd. This is unedited folder, and trying to compile it right after de-compilation. But still getting error.
I have tried different aapt, different apktool.jar, both java 6 and 7 and such but to no avail.
D:\apktool\112233>apktool b 11 wert.apk
I: Using Apktool 2.0.0-Beta9 on 11
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
D:\apktool\112233\11\res\layout\photo_selector_view_popup.xml:9: error: Error: No resource found tha
t matches the given name (at 'layout' with value '@layout/photo_updates_header').
aapt: warning: string 'remove_from_namecard_list_popup_title' has no default translation in D:\apkto
ol\112233\11\res; found: zh_SG
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.co
mmon.BrutException: could not exec command: [C:\Users\Keshav\AppData\Local\Temp\brut_util_Jar_7378085
831899028208.tmp, p, --forced-package-id, 127, --min-sdk-version, 19, --target-sdk-version, 19, --ve
rsion-code, 19, --version-name, 4.4.2-I9505XXUFNB8, -F, C:\Users\Keshav\AppData\Local\Temp\APKTOOL365
2482745200459136.tmp, -0, arsc, -I, C:\Users\Keshav\apktool\framework\1.apk, -I, C:\Users\Keshav\apkto
ol\framework\2.apk, -S, D:\apktool\112233\11\res, -M, D:\apktool\112233\11\AndroidManifest.xml]
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:435)
at brut.androlib.Androlib.buildResources(Androlib.java:363)
at brut.androlib.Androlib.build(Androlib.java:286)
at brut.androlib.Androlib.build(Androlib.java:258)
at brut.apktool.Main.cmdBuild(Main.java:236)
at brut.apktool.Main.main(Main.java:88)
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [C:\U
sers\Keshav\AppData\Local\Temp\brut_util_Jar_7378085831899028208.tmp, p, --forced-package-id, 127, --
min-sdk-version, 19, --target-sdk-version, 19, --version-code, 19, --version-name, 4.4.2-I9505XXUFNB
8, -F, C:\Users\Keshav\AppData\Local\Temp\APKTOOL3652482745200459136.tmp, -0, arsc, -I, C:\Users\Kesh
av\apktool\framework\1.apk, -I, C:\Users\Keshav\apktool\framework\2.apk, -S, D:\apktool\112233\11\res
,-M, D:\apktool\112233\11\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:470)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:416)
... 5 more
Caused by: brut.common.BrutException: could not exec command: [C:\Users\Keshav\AppData\Local\Temp\bru
t_util_Jar_7378085831899028208.tmp, p, --forced-package-id, 127, --min-sdk-version, 19, --target-sdk
-version, 19, --version-code, 19, --version-name, 4.4.2-I9505XXUFNB8, -F, C:\Users\Keshav\AppData\Loc
al\Temp\APKTOOL3652482745200459136.tmp, -0, arsc, -I, C:\Users\Keshav\apktool\framework\1.apk, -I, C:
\Users\Keshav\apktool\framework\2.apk, -S, D:\apktool\112233\11\res, -M, D:\apktool\112233\11\Android
Manifest.xml]
at brut.util.OS.exec(OS.java:89)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:464)
... 6 more
Click to expand...
Click to collapse
If I import this raw project into Eclipse I get these 5 errors:
Description Resource Path Location Type
error: Error: No resource found that matches the given name: attr 'android:actionBarNonEmbeded'. styles.xml /DialtactsActivity/res/values-sw360dp-xxhdpi line 10 Android AAPT Problem
error: Error: No resource found that matches the given name: attr 'android:actionBarNonEmbeded'. styles.xml /DialtactsActivity/res/values line 10 Android AAPT Problem
error: Error: No resource found that matches the given name: attr 'android:searchViewTextField'. styles.xml /DialtactsActivity/res/values line 95 Android AAPT Problem
error: Error: No resource found that matches the given name: attr 'android:actionBarNonEmbeded'. styles.xml /DialtactsActivity/res/values line 661 Android AAPT Problem
error: Error: No resource found that matches the given name: attr 'android:searchViewTextField'. styles.xml /DialtactsActivity/res/values-sw360dp-xxhdpi line 63 Android AAPT Problem
Click to expand...
Click to collapse
Although not the right thing to do, I can remove the line with 'android:actionBarNonEmbeded' in them in Eclipse and there is no problem after deleting those 3 lines. But can't simply delete lines with 'android:searchViewTextField' as it throws up too many other errors, mostly same for other attrs.
I have surfed tons of pages at stackoverflow, xda and some other sites... but couldn't crack a solution. Can't add a simple + to @drawable either, obviously.
Reply by connor.tumbleson here on code.google.com might be answer but I couldn't figure out what to do.
url - code.google.com/p/android-apktool/issues/detail?id=441#c20
So, uh, pls help!
Note: Of course, I'm installing the framreworks first (framework-res.apk, twframework-res.apk and systemUI.apk). And have tried apkMultiTool v3.4 and some other apktool based solutions too. Nothing helped.
keshav13 said:
While using apktool to recompile the contacts apk, SecContacts_OSup.apk, I am getting the following error in cmd
Click to expand...
Click to collapse
look in \res\layout\photo_selector_vie w_popup.xml line 9, u must remove all references to photo_updates_header, common problem, sometimes system apk have been done badly ha ha ha
try this and report
worked but didn't work!
_alex74_ said:
look in \res\layout\photo_selector_vie w_popup.xml line 9, u must remove all references to photo_updates_header, common problem, sometimes system apk have been done badly ha ha ha
try this and report
Click to expand...
Click to collapse
First of all, thansk for the tip!
I removed the layout portion of that line that actually made reference to photo_updates_header file. So, that actually didn't got me those error, but it didn;t build an APK file despite showing exactly that in cmd. Here's what cmd says:
D:\apktool>apktool b c1 111.apk
I: Using Apktool 2.0.0-Beta9 on c1
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
aapt: warning: string 'remove_from_namecard_list_popup_title' has no default translation in D:\apkto
ol\c1\res; found: zh_SG
I: Building apk file...
I: Copying unknown files/dir...
There is no APK file built, tho. Which is bad, and surprising. What do you suggest?
[I'm using apktool 2.0 beta9, and have Java 7 installed on Win8.1.]
Edit:
Is there a way how I should remove the reference to photo_updates_header file? Should I just delete the whole of line 9 that is making the reference?
keshav13 said:
First of all, thansk for the tip!
Is there a way how I should remove the reference to photo_updates_header file? Should I just delete the whole of line 9 that is making the reference?
Click to expand...
Click to collapse
as posted apk must be builded in dist folder of your decompiled apk , no errors that says different.
that reference is about missing traslation, just warning u can keep it(no harm in apk compiling) or add a line like this:
<string name="photo_updates_header">photo updates header</string>
Click to expand...
Click to collapse
in res/values/strings.xml on bottom of all strings
lemme know
Nope :/
_alex74_ said:
as posted apk must be builded in dist folder of your decompiled apk , no errors that says different.
that reference is about missing traslation, just warning u can keep it(no harm in apk compiling) or add a line like this:
in res/values/strings.xml on bottom of all strings
lemme know
Click to expand...
Click to collapse
Hi _alex74_,
Adding the line <string name="photo_updates_header">photo updates header</string> didn't work. Very sad.
Please suggest something else.
Can you reproduce the problem at your end? Can you recompile it or not even when it's untouched?
Here's the link to contacts APK that's been torturing me: __www24.zippyshare.com/v/59685951/file.html__
Thanks a lot!
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Introduction:-
Hey guys! Here's a complete tutorial for building or porting MIUI to your device! I know there are already some guides for it but I felt none of them were noob-friendly and many were confusing and missing some important instructions. So I decided to share this complete guide which will teach you how to build MIUI from scratch. This is a basic guide in which I have taken building latest MIUI v7 as example. So let's start!
POST 1- Guide to build MIUI using PatchROM Sources
POST 2- Modifying boot.img
POST 3- Guide to port MIUI from another device
Basically,There are two methods by which you can build MIUI ROM for your device.
Build from source using PatchROM Method
Port manually from another device which already has MIUI
Let's start with PatchROM Method:-
Requirements:-
Ubuntu 14.04 64-bit. (Installed as virtual machine like in VMware will also work)
Base ROM for your device.
NOTE- Preferably take pure AOSP built for your device as base ROM rather than CyanogenMod. You'll get less rejects while patching MIUI framework. But CM works too! Your choice..
Apktool. You can use Advanced Apktool by BDFreak. It's easier to use.
Working brain and a lot of patience!!
Prerequisites:-
First of all, take framework-res.apk, framework.jar, framework2.jar, services.jar, android.policy.jar and telephony-common.jar from your base ROM zip.
Now using apktool, decompile all above files.
If you're using advanced apktool then go to 3-Out folder and rename the respective folders to-
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
We'll need these folders further for MIUI framework patching.
STEP-1: Preparing build environment
Switch to Ubuntu 14.04. We'll have to prepare ROM building environment.
Next step is to setup android sdk. Follow THIS guide. (Look at 2nd answer graphical image explanation. Follow till step 5.)
Now run the following commands as superuser from terminal-
PHP:
sudo apt-get update
Then after run this-
sudo apt-get install bison build-essential curl flex git git-core gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev unzip lib32readline-gplv2-dev lib32z1-dev make python-networkx zlib1g-dev:i386 phablet-tools
Click to expand...
Click to collapse
All the necessary packages are now installed. Now the next step is to configure repository.
In terminal,run following commands-
PHP:
mkdir -p ~/bin
PHP:
PATH=~/bin:$PATH
PHP:
cd ~/bin
PHP:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
PHP:
chmod a+x ~/bin/repo
PHP:
mkdir ~/patchrom
PHP:
cd ~/patchrom
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Now you'll have to configure git. Run following commands in terminal-
Code:
git config --global user.email [COLOR="Red"]ENTER_YOUR_EMAIL_ID_HERE[/COLOR]
Code:
git config --global user.name [COLOR="Red"]ENTER_YOUR_REAL_NAME_HERE[/COLOR]
Now it's time to download the MIUI source code! Run the following command in terminal-
PHP:
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
PHP:
repo sync
Now grab a cup of coffee while the MIUI source gets downloaded. Required time depends on speed of your internet connection. The MIUI source is of size about 600-700 MB (With .repo total is 1.5 GB).
After the source is downloaded,create a new directory in /home. Name it whatever you want. (Preferably codename of your device) In my case, it's taoshan.
PHP:
cd /home/stryder/
PHP:
mkdir taoshan
PHP:
cd taoshan
Now create a makefile for your device. If you want, you can make changes to this my makefile and use.
PHP:
gedit makefile
You can copy the following content in makefile (Don't forget to make changes in it according to your device) and save it.
Code:
#
# Makefile for taoshan
#
# The original zip file, MUST be specified by each product
local-zip-file := stockrom.zip
# The output zip file of MIUI rom, the default is porting_miui.zip if not specified
local-out-zip-file := MIUI7_taoshan.zip
# All apps from original ZIP, but has smali files chanded
local-modified-apps :=
local-modified-priv-apps :=
local-modified-jars :=
# All apks from MIUI
local-miui-removed-apps :=
local-miui-removed-priv-apps :=
local-miui-modified-apps :=
# All apps need to be removed from original ZIP file
local-remove-apps := Gallery2 Exchange2
# Config density for co-developers to use the aaps with HDPI or XHDPI resource,
# Default configrations are HDPI for ics branch and XHDPI for jellybean branch
local-density := XHDPI
PORT_PRODUCT := taoshan
# To include the local targets before and after zip the final ZIP file,
# and the local-targets should:
# (1) be defined after including porting.mk if using any global variable(see porting.mk)
# (2) the name should be leaded with local- to prevent any conflict with global targets
#local-pre-zip := local-pre-zip-misc
#local-after-zip:= local-put-to-phone
# The local targets after the zip file is generated, could include 'zip2sd' to
# deliver the zip file to phone, or to customize other actions
#include phoneapps.mk
include $(PORT_BUILD)/porting.mk
local-pre-zip-misc:
@echo Update boot.img
cp other/boot.img $(ZIP_DIR)/boot.img
@echo Update build.prop
cp other/build.prop $(ZIP_DIR)/system/build.prop
@echo Delete some unneeded files
rm -rf $(ZIP_DIR)/system/etc/.has_su_daemon
rm -rf $(ZIP_DIR)/system/priv-app/Dialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Keyguard.apk
rm -rf $(ZIP_DIR)/system/priv-app/SystemUI.apk
rm -rf $(ZIP_DIR)/system/priv-app/VoiceDialer.apk
rm -rf $(ZIP_DIR)/system/priv-app/Launcher3.apk
rm -rf $(ZIP_DIR)/system/priv-app/ParanoidOTA.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemeChooser.apk
rm -rf $(ZIP_DIR)/system/priv-app/ThemesProvider.apk
Explanations:-
'local-zip-file' = Name of your original Base ROM zip
'local-out-zip-file' = Name for your finished MIUI rom
'local-modified-apps' = Apps that will be modified to fit in with the framework. They need to be modified because they contact with the system
'local-remove-apps' = Apps that will be removed from the original ROM
'local-pre-zip' = Refers to code-block that should be executed before the zip is done.
'local-after-zip' = Refers to code-block executed after the zip is completed
'local-zip-misc' = The code-block just described at 'local-pre-zip'. It adds some Google Apps and a build.prop
'local-test' = Another code-block
Now, manually copy the previously decompiled framework folders to your device folder.
PHP:
framework-res
framework.jar.out
framework2.jar.out
services.jar.out
android.policy.jar.out
telephony-common.jar.out
Next,copy your Base ROM zip in your device folder.
Now move to patchrom folder.
PHP:
cd ~/patchrom
PHP:
source build/envsetup.sh
Again move to your device folder and start MIUI framework patching.
PHP:
cd /home/stryder/taoshan
PHP:
make firstpatch
Now a new folder folder temp will be created. In that you'll find the reject folder in which there will be rejects which you have to fix manually. Follow THIS excellent guide by @JavierAlonso to fix rejects. Also see THIS guide.
After fixing all the rejects, type following command to create a flashable zip of your MIUI ROM.
PHP:
make fullota
or you can also use
PHP:
make zipfile
With this, the flashable zip file is built. Now follow the tutorial from next post to modify your boot.img and include this new boot.img in your flashable MIUI ROM zip. Then flash the zip from recovery and enjoy your source built MIUI ROM!
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log.
Modifying boot.img
Now, let's modify the boot.img from base ROM zip to it make compatible with our MIUI ROM.
First of all, download any boot image kitchen or editor. I used Android Image Kitchen for Windows.
Assuming you're using the same kitchen, Extract the files from Android Image Kitchen in a separate folder. Copy your base ROM boot.img in that folder.
Now drag and drop the boot.img on unpackimg. The kernel files will be extracted in ramdisk and split_img folder.
We have to modify the ramdisk so move to that. In sbin folder, you'll see the extracted files.
Now there are two chances- First, Your ramdisk is already extracted with various folders and files. In that case ignore the next steps and directly modify in respective files using Notepad++.
While in second case, you'll get the ramdisk as ramdisk.cpio file. If you get this the you'll have to move to Ubuntu again for extracting it.
Now in Ubuntu, copy your ramdisk.cpio in a seperate folder (suppose in stryder folder) in your home directory.
Now, open terminal and run the following command-[No need as superuser]
PHP:
cd stryder
PHP:
cpio -i -F ramdisk.cpio
Some output will be shown in terminal as 2320 blocks or something like that!
Now in your folder, you'll see the extracted ramdisk files.
Now comes the actual modification.
First of all, download attached zip and extract the files in appropriate folders. (If the folder is not present, add that folder).
Open default.prop and edit the lines like this-
PHP:
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.adb.secure=0
ro.secure=0
ro.allow.mock.location=0
ro.debuggable=1
persist.sys.usb.config=mtp,adb
persist.service.adb.enable=1
persist.service.debuggable=1
Save the changes and open init.cm.rc (In case of CyanogenMod) or init.pa.rc (In case of AOSPA). Add # before the import line like this-
PHP:
# Superuser
#import /init.superuser.rc
Save this file and now open init.rc.
At the end of init.rc file, add these lines-
PHP:
#service for shelld
service shelld /system/xbin/shelld
class main
#service for su
service su_daemon /system/xbin/su --daemon
class main
oneshot
service lbesec /system/xbin/lbesec
class main
oneshot
Save this file and then open seapp_contexts.
In that file, add at the end-
PHP:
user=theme seinfo=platform domain=platform_app type=platform_app_data_file
user=backup seinfo=platform domain=platform_app type=platform_app_data_file
user=updater seinfo=platform domain=platform_app type=platform_app_data_file
user=theme_man domain=system_app type=system_data_file
Also modify these lines (if present) to look like this-
PHP:
user=_app domain=untrusted_app type=app_data_file
user=_app seinfo=platform domain=platform_app type=app_data_file
user=_app seinfo=shared domain=shared_app type=app_data_file
user=_app seinfo=media domain=media_app type=app_data_file
user=_app seinfo=release domain=release_app type=app_data_file
Save this file and if present, open init.qcom.rc.
And before this line (at the end)-
PHP:
on property:sys.boot_completed=1
Add these lines-
PHP:
service shelld /system/xbin/shelld
class main
Save the file. Now it's time to repack your ramdisk.
First, move your original ramdisk.cpio from the extracted folder to /home. That is, if your extracted ramdisk is in
PHP:
/home/stryder/
Move original ramdisk.cpio file to-
PHP:
/home/
After that, run this command in terminal-
PHP:
cpio -i -t -F ../ramdisk.cpio | cpio -o -H newc -O ../ramdisk_new.cpio
Now a new file ramdisk_new.cpio will be created. Take a look if it's of the same size as the original one just a few bytes difference.
Also open this ramdisk_new.cpio and make sure you have the newly added files in it. (Ex. otad in bin folder etc.)
Now move this ramdisk_new.cpio to previously extracted Android Image kitchen ramdisk/sbin/ directory.
Delete the original ramdisk.cpio from it and rename the ramdisk_new.cpio to ramdisk.cpio.
Now come back and directly run repackimg. The modified image_new will be generated. Rename it to boot and include this modified boot.img in your MIUI ROM zip. Now you can proceed to flash your MIUI ROM!
Special Thanks- @Zenamp
Port MIUI from another device
Requirements:-
7-zip, Winrar or similar software
Notepad++
Instructions:-
First of all, make 2 folders- 1. BASE ROM 2. PORT ROM
What is Base ROM: It is the ROM which is built for your device. (AOSP or CM etc.)
What is Port ROM: MIUI ROM of other device which you want to port to your device.
NOTE- It's better if the port device and your device has same CPU architecture and specifications. If you couldn't find same specification device then try the device having almost similar specification of your device.
Now extract the Base ROM zip in BASE ROM folder and Port ROM zip in PORT ROM folder.
Next, Delete addon.d (If present), app, framework, fonts, media and priv-app folder in System folder of BASE ROM.
Now copy addon.d (If present), app, framework, fonts, media and priv-app folder from system folder of PORT ROM to system folder of BASE ROM.
Now open etc folder in both ROMs folder. Go to init.d folder of PORT and copy and replace any extra files except 00banner to init.d of BASE ROM.
Now open permissions folder in etc of both ROMs and copy and replace all the permissions files from PORT ROM to your BASE ROM folder except handheld_core_hardware.xml and platform.xml. (In case of CM based BASE ROM, also don't replace org.cyanogenmod.hardware.xml).
Also copy any extra folder available in PORT ROM etc/ to BASE ROM etc/ e.g. miui_feature folder.
Now open your system_fonts.xml in etc folder of BASE ROM and copy this before </familyset> end of file
PHP:
<family>
<nameset>
<name>miui</name>
</nameset>
<fileset>
<file>Miui-Regular.ttf</file>
<file>Miui-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex</name>
</nameset>
<fileset>
<file>MiuiEx-Regular.ttf</file>
<file>MiuiEx-Bold.ttf</file>
</fileset>
</family>
<family>
<nameset>
<name>miuiex-light</name>
</nameset>
<fileset>
<file>MiuiEx-Light.ttf</file>
</fileset>
</family>
Now copy all the extra files from PORT ROM bin, lib and xbin folder to BASE ROM respective folders. Remember, DO NOT REPLACE anything. Just copy and paste and skip the files with same name.
Now, open build.prop of BASE ROM. You can change these value to anything you like-
PHP:
ro.build.id=
ro.build.display.id=
ro.build.date=
ro.build.date.utc=
ro.product.locale.language=en
ro.product.locale.region=US
ro.cm.version=
ro.modversion=
Now copy paste these values at the end of your BASE ROM build.prop. You can edit the fields but keep the structure same.You can look at PORT ROM build.prop for reference.
PHP:
ro.build.description=devicename-user 4.4.2 yourname C2104XXUCNG1 release-keys
ro.build.fingerprint=devicemanufacturer/devicemodel/device:4.4.2/yourname/C2104XXUCNG1:user/release-keys
ro.product.model=Xperia L
ro.product.device=taoshan
ro.build.characteristics=default
#MIUI_Features
ro.miui.has_real_blur=0
ro.miui.has_handy_mode_sf=1
ro.config.sms_received_sound=FadeIn.ogg
ro.config.sms_delivered_sound=MessageComplete.ogg
ro.product.manufacturer=Xiaomi
ro.config.elder-ringtone=Angel.mp3
persist.sys.mitalk.enable=true
ro.miui.ui.version.code=5
ro.miui.ui.version.name=V7
persist.sys.strictmode.disable=true
ro.product.mod_device=yourdevice
Change these fields in BASE ROM build.prop according to PORT ROM build.prop-
PHP:
ro.config.notification_sound=
ro.config.alarm_alert=
ro.config.ringtone=
If your device has On-screen buttons, then add this value at the end of BASE ROM build.prop-
PHP:
qemu.hw.mainkeys=0
Now we're done with build.prop.
Next, open META-INF/com/google/android/updater-script from BASE ROM using Notepad++ and change, compare and replace all the symlink and set_metadata lines in updater-script according to PORT ROM updater-script.If some extra lines are there in BASE ROM updater-script, keep it as it is.
NOTE:-I have attached one sample updater-script with this post. Look below. You can refer from that if you feel any difficulty.
Add these before unmount("/system"); at the end of updater-script-
PHP:
set_perm(0, 1000, 06750, "/system/xbin/shelld");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data");
package_extract_file("META-INF/com/miui/relink", "/tmp/relink");
set_perm(0, 0, 0555, "/tmp/relink");
run_program("/tmp/relink");
delete("/tmp/relink");
set_perm_recursive(1000, 1000, 0755, 0644, "/data/miui");
set_metadata("/system/bin/debuggerd", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
set_metadata("/system/bin/debuggerd_vendor", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:debuggerd_exec:s0");
set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 06755, "capabilities", 0x0, "selabel", "u:object_r:su_exec:s0");
delete_recursive("/data/miui/preinstall_apps");
delete_recursive("/data/miui/cust/preinstall_apps");
ui_print("Installation finished...Enjoy!");
unmount("/data");
Also copy META-INF/com/miui and data folder to BASE ROM from PORT ROM.
Now modify your BASE ROM boot.img using the tutorial from previous post and put that new boot.img in BASE ROM folder.
Finally, select META-INF, system, boot.img, file_contexts(If present) and data folder in BASE ROM.
Right click and select Add to Archive. Select Zip. Type the name of zip. (Don't delete ".zip" at the end!) Click OK.
Now you're ready to flash this zip from recovery.
Sometimes, your device might get stuck on bootanimation so in this case, take LOGCAT and look for the error and solve it. You can use some tools like Advanced Logcat Viewer to read the log. Look HERE for fixing bootloop.
I hope you guys understood how to build and port MIUI. I wish you good luck! If you get stuck anywhere, If you become successful building MIUI, feel free to post here. Also if you succeed, I'll appreciate if you give me credits and add link to this thread in your ROM thread on XDA.
Frequently Asked Questions
Shepard62700FR said:
The PatchROM technique (post #1 tutorial) works for Android 4.4 KitKat, meaning that you have to find a KitKat AOSP or CyanogenMod 11 ROM for your device as a base, STRYDER said that he doesn't recommend the OEM Stock ROM as a base due to vendor stuff that might cause more rejects (and I think if the stock ROM is not deodexed, it's worse).So preferably take aosp kitkat rom as base. Patchrom method won't work for Android 5.0 Lollipop and higher.
If you want to port a MIUI Lollipop/Marshmallow ROM to a Lollipop/Marshmallow based device, you will have to do the "port from other device" technique (post #3), which is to find MIUI ROM for another device with the same Android version, chipset, screen resolution and follow the port method. Use this guide for porting to qualcomm and broadcom devices preferably. For mediatek devices, I suggest following porting guides from MIUI forums. Though this guide might work as well.
Click to expand...
Click to collapse
Question:- Can I port MIUI to XXX device?
Answer:- You'll never know if you don't try!
Question:- Can you please port/help porting MIUI to XXX device?
Answer:- Sorry, I won't port. It's not possible for me to accept port requests, that's why I wrote this guide so that you can port it yourself and test it out on the device you own! About helping, post your issues/logs here in this thread. Me or any other members will help you as they can.
Its awesome bro.
Thanks for sharing with us.....
wolfmannight said:
Its awesome bro.
Thanks for sharing with us.....
Click to expand...
Click to collapse
You're welcome bro!
A perfect guide! Many Thanks!
abhatia1435 said:
A perfect guide! Many Thanks!
Click to expand...
Click to collapse
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
STRYDER~007 said:
You're welcome bro! It's the most simplified guide you'll ever find...You can try porting MIUI 7 to your Xperia M!
Click to expand...
Click to collapse
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Black Plague said:
Heyyy Bro, sorry for the noob questions but will all our Sony stuffs like XReality, DSEE HX HD audio, headphone settings will be lost or not, can we mix MIUI with Sony's stuffs
Click to expand...
Click to collapse
Well some features may be lost but i have seen my friend @gamzekal has built MIUI with Sony stuffs HERE..So yeah..Probably we can include those stuffs..I'm not sure though!
abhatia1435 said:
Yes bro. Was thinking of that only Can I use the method mentioned in 3rd post? Using XL's ROM for porting to XM? Have you released it for XL?
Click to expand...
Click to collapse
Yeah you can use any method..I have not yet released MIUI for XL..There are some issues with RIL which I'm fixing now..But you can take any other device and port from it..Visit MIUI site and download latest v7! Try taking the device which has similar specification with your XM.. But not necessarily..I ported the one from HTC One S and it still worked!!
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Black Plague said:
Sad but true, I tried to ask him about how he do that stuff but xda won't allow me to send message zzz coz his inbox if full
Click to expand...
Click to collapse
Yeah I know! Probably he's too lazy to delete his old msgs!!
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
sebastiandg7 said:
@STRYDER~007 You did it again bro!!! Thanks for sharing this with us!
Click to expand...
Click to collapse
Happy to share bro! Enjoy!
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
repo init -u git://github.com/MiCode/patchrom.git -b miui-7 -m android-4.4.4.xml
Click to expand...
Click to collapse
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
linuxct said:
This is a nice guide... But only for 4.4.4, correct @STRYDER~007?
I wan't to port this for eagle (D2303), but all 4.4.4 AOSP / CM / Omni roms are fuc*** up, none of them works properly to be used as base, and all devs went directly into CM12.1 / Omni 5.1.1, which work fantastic. Any ideas?
Click to expand...
Click to collapse
Yep.. Only for 4.4 since MIUI 7 patchrom source is based on 4.4.. Try to find base ROM which will be somewhat stable to be used as base.. There's no alternative to that!
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
dineshkumareswaran said:
Thanks for giving this guide bro.. I am trying your second method, I am using V7.0.5.0.KXDMICI (MIUI7) (downloaded from official site)(for Mi3) rom as a port rom, but i noticed that there is no init.d folder in the etc folder, Am i selected the wrong rom to port? or there is another problem?
Click to expand...
Click to collapse
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
STRYDER~007 said:
For which device are you porting? What is your base rom?(You can find it in build.prop) Explain in detail..Also if there's no init.d, it doesn't matter..Go ahead with further procedure..
Click to expand...
Click to collapse
I am trying it for xperia L, I am using nyx rom as my base rom(if you recommend any other i can go with it), I am noob in porting (i can't find init.d in build prop, i try further steps and inform you and thanks