• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root [Boost Mobile] how to port a rom?

Snake X

Android Expert
I know this may not be the best place to ask this question, but surely the safest place to avoid brand-specific methods (such as tools for mainly htc devices).

I decided I want to start getting into rom developing/porting. Where would I begin on doing something like this? I want to be able to port roms so that I can customize what I want in it and what I don't want. But mainly, I want to be able to port roms such as stock ICS from galaxy nexus or already cooked roms like MIUI to a device like the warp (since xda has about 0% information on *specifically* this device if it matters). I will first say I have about little to no knowledge on C/C++ or android app development, but I do have some experience in java (I can make a slot machine game without spinny graphics max). I know this will take A LOT of effort, but I still want to be able to try.

edit: another reason im asking here is that when I google how to do this stuff, tutorials seem to be in device-specific threads which leaves me to believe that not everything might be compatible. But hey, what do I know, right?

edit 2: I am willing to work in ubuntu (I use vmware player as a ubuntu VM)

edit 3: I think I would like to start with something like porting the stock ICS rom from galaxy nexus if that's no too hard for a complete beginner.. :S
 
Porting other's ICS ROM to Warp is a great idea! Please go on and I can be a qualified tester on it. thanks Snake!
 
That's the spirit don't you let anyone stop you from doing a good thing like learning this is what keeps us all going, the urge to do better. I will help you if I can. not sure how I will be of any help but hay just ask and see where it gets you. as far as your question above , I'm sorry but I have no idea...but I like your ambition to go forward with your ideas...I only wish I knew how to do thoses things that you are talking about.
 
if I was going to start, I would start with this post on the cyanogenmod forum:

General CyanogenMod Porting Discussion - CyanogenMod Forum

If it was me, I would probably work on modding up the stock build as a way to get into development (similar to the CT ROM for the samsung galaxy prevail where the dev tried to strip everything that was unnecessary out of the stock build and tweak it for performance)(it was a rocking ROM too by the way)

After I was really comfortable with the structure and workings of the stock rom, them I would start with CM7. I think CM9/ICS are so new that there just won't be a ton of help if you get stuck at this point where CM7 has been around and enough devs are working with it that you can probably get the help you will need along the way.

Just my 2cents, selfishly I would like to see a minimalistic/performance stock build to tie us over while people work on CM7, and I think it would be very instructive/helpful for working on ports to be super familiar with the stock build.

Good luck on this!
 
If we can find someone to deodex the stock rom then a minimalistic build would be simple
 
is linking to a stock rom illegal by any chance?

edit: in order to develop any kind of rom or mod or whatever, will I need to learn c/c++?
 
you need more Linux knowledge then anything, working with a rom is fairly simple in the right environment (I.E. Linux)
 
I know my way around linux fairly well as I used mac half my life and I know how to navigate around and stuff..

Though, I still want to know if linking to a stock rom is illegal because I would like to open it and look at the different files and components and things that go into a rom. I think that if I start out by learning the components of a rom first and what file its in then I can be better off trying to do stuff, so where can I learn about the components at?

Also, is the build environment here: Initializing a Build Environment | Android Open Source good for roms? or how would I set up the best build environment for my purpose. I am using ubuntu 11 (via wubi since thats what it downloaded) if that makes a difference and its 64 bit which will make a difference im sure
 
Android is like any other Linux distro its Open Source so under the GNU Public Licence i don't see where it would be illegal, They have already released the source code. of which you cant build under normal conditions.

the 64 bit yes, because the Android branch is 32 bit hence the arm revision processors, as for the build environment just check the wiki and also check google's info. Im sure that link you posted has all the info you need, aside from your experience i could see the info provided there valuable
 
ok one more thing, what about setting up the kitchen for cooking/baking roms? Should I be concerned with that or wait until I'm a little more experienced?
 
well if nandroid is the samething as a rom, then that changes everything! Though, one thing left.. where can I learn about the components of a rom and what should be changed to make one rom work on another device that it wasn't originally made for

edit: why doesn't rom manager work on the warp? how hard would it be to make it work for this device?

edit 2: one more thing I need to understand: what file formats are rom's generally in? .zip files or .img files?

edit 3: in google's initializing a build environment tutorial (http://source.android.com/source/initializing.html) it shows how to configure usb access. However, it notes that "This is known to work on both Ubuntu Hardy Heron (8.04.x LTS) and Lucid Lynx (10.04.x LTS). Other versions of Ubuntu or other variants of GNU/linux might require different configurations."
I am running ubuntu 11.10 (because 10.04 LTS doesn't recognize my wifi dongle) so I was wandering if the configurations would be the same or if they would be any different.
 
New problem solved.. I wish there was a way to delete these messages. I did some more research and found my answer

edit: The only remaining problem I have is trying to instal ccache. I installed the program and tried to type in terminal "export USE_CCACHE=1" but when I exited the terminal and reopened it, I entered "printenv USE_CCACHE". Nothing displayed. I re-typed the export command and the printenv command and it displayed on a new line "1". To me, this means that it is not setting it as a permanent environmental variable from what I found on google and I can't figure how to fix it :s

The official page from google says "Put the following in your .bashrc or equivalent." but I'm not sure how to do that either :L

edit 2: Ok, in my build output after running make -j16 it gives me the following output:
Code:
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.5
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRJ90
============================================
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
find: `frameworks/base/frameworks/base/docs/html': No such file or directory
find: `out/target/common/docs/gen': No such file or directory
*** glibc detected *** make: free(): invalid next size (fast): 0x00000000093ac170 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x78a96)[0x7fe68409da96]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x7fe6840a1d7c]
make[0x40a7da]
make[0x40cb4b]
make[0x40784b]
make[0x40734b]
make[0x4073f3]
make[0x40cb14]
make[0x40784b]
make[0x40734b]
make[0x407540]
make[0x407c92]
make[0x40b844]
make[0x40cb4b]
make[0x40784b]
make[0x40734b]
make[0x41d5aa]
make[0x41dc2b]
make[0x416088]
make[0x4175e2]
make[0x4167f6]
make[0x4175e2]
make[0x4179ac]
make[0x4033d3]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7fe68404630d]
make[0x40420d]
======= Memory map: ========
00400000-00429000 r-xp 00000000 08:01 5904608                            /usr/local/bin/make
00628000-00629000 r--p 00028000 08:01 5904608                            /usr/local/bin/make
00629000-0062b000 rw-p 00029000 08:01 5904608                            /usr/local/bin/make
0062b000-0062c000 rw-p 00000000 00:00 0 
0243a000-09705000 rw-p 00000000 00:00 0                                  [heap]
7fe67c000000-7fe67c021000 rw-p 00000000 00:00 0 
7fe67c021000-7fe680000000 ---p 00000000 00:00 0 
7fe68340d000-7fe683422000 r-xp 00000000 08:01 9965229                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fe683422000-7fe683621000 ---p 00015000 08:01 9965229                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fe683621000-7fe683622000 r--p 00014000 08:01 9965229                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fe683622000-7fe683623000 rw-p 00015000 08:01 9965229                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7fe683623000-7fe683724000 rw-p 00000000 00:00 0 
7fe683724000-7fe683e08000 r--p 00000000 08:01 5511277                    /usr/lib/locale/locale-archive
7fe683e08000-7fe683e20000 r-xp 00000000 08:01 9965268                    /lib/x86_64-linux-gnu/libpthread-2.13.so
7fe683e20000-7fe68401f000 ---p 00018000 08:01 9965268                    /lib/x86_64-linux-gnu/libpthread-2.13.so
7fe68401f000-7fe684020000 r--p 00017000 08:01 9965268                    /lib/x86_64-linux-gnu/libpthread-2.13.so
7fe684020000-7fe684021000 rw-p 00018000 08:01 9965268                    /lib/x86_64-linux-gnu/libpthread-2.13.so
7fe684021000-7fe684025000 rw-p 00000000 00:00 0 
7fe684025000-7fe6841ba000 r-xp 00000000 08:01 9965208                    /lib/x86_64-linux-gnu/libc-2.13.so
7fe6841ba000-7fe6843b9000 ---p 00195000 08:01 9965208                    /lib/x86_64-linux-gnu/libc-2.13.so
7fe6843b9000-7fe6843bd000 r--p 00194000 08:01 9965208                    /lib/x86_64-linux-gnu/libc-2.13.so
7fe6843bd000-7fe6843be000 rw-p 00198000 08:01 9965208                    /lib/x86_64-linux-gnu/libc-2.13.so
7fe6843be000-7fe6843c4000 rw-p 00000000 00:00 0 
7fe6843c4000-7fe6843cb000 r-xp 00000000 08:01 9965272                    /lib/x86_64-linux-gnu/librt-2.13.so
7fe6843cb000-7fe6845ca000 ---p 00007000 08:01 9965272                    /lib/x86_64-linux-gnu/librt-2.13.so
7fe6845ca000-7fe6845cb000 r--p 00006000 08:01 9965272                    /lib/x86_64-linux-gnu/librt-2.13.so
7fe6845cb000-7fe6845cc000 rw-p 00007000 08:01 9965272                    /lib/x86_64-linux-gnu/librt-2.13.so
7fe6845cc000-7fe6845ed000 r-xp 00000000 08:01 9965195                    /lib/x86_64-linux-gnu/ld-2.13.so
7fe6846d6000-7fe684747000 rw-p 00000000 00:00 0 
7fe6847c9000-7fe6847cc000 rw-p 00000000 00:00 0 
7fe6847de000-7fe6847e5000 r--s 00000000 08:01 5900752                    /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7fe6847e5000-7fe6847e6000 rw-p 00000000 00:00 0 
7fe6847e8000-7fe6847ec000 rw-p 00000000 00:00 0 
7fe6847ec000-7fe6847ed000 r--p 00020000 08:01 9965195                    /lib/x86_64-linux-gnu/ld-2.13.so
7fe6847ed000-7fe6847ef000 rw-p 00021000 08:01 9965195                    /lib/x86_64-linux-gnu/ld-2.13.so
7fff9007f000-7fff900b4000 rw-p 00000000 00:00 0                          [stack]
7fff90132000-7fff90133000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted
I am using make-3.8.2 if that helps

Also I need help setting up the android emulator to run my AOSP build with the zte warp kernal (which I also need help building..

@_@
 
Well I think I might have a good chance of doing this, but I now wish to focus on bringing aosp ICS to the warp.. to hroark: are you able to give me any hints/tips in doing this? I don't have very much knowledge on how linux works in general, but I'll work on that. atm I need to know what the steps are in doing this, how I get started (after downloading the source ofc) and how to mod the source appropriately.

Thanks :)
 
There is a newer tutorial I found on how to setup the android sdk. I'll post a link when I get home. From what I remember, you have to "sudo gedit .bashrc" and then export PATH=$PATH to your sdk, then do the same for platform tools
 
Back
Top Bottom