Disclaimer: I have composed this info while drinking alcoholic beverages, any typographical errors are simply because I have overlooked them in my drunken stupor. In my current state, I believe all of this information to be correct, however I accept no responsibility if you screw up your device because of my advice. Don't mean to be rude, but thats how it is. Enjoy! -Swap out boot.img and all assosciated kernel modules. -What is a boot.img? -A boot image contains the linux kernel speciically designed for an Android device. You can find the source code at "http://developer.htc.com". It also contains a ramdisk which is a temporary file system stored in RAM (Random Access Memory) that allows the very basic bootup sequence. -The modules involved with the kernels allow extra functionality such as wifi support or sequans WiMax/LTE support. They are located at /system/lib/modules. -Swap out /usr folder. -The contents of /usr pertain to the buttons at the bottom of the touchscreen (as well as hard buttons like the HeroC has). While these buttons can be remapped it is usually unneccesary to do so. -Swap out /system/etc/firmware -I believe ".acdb" files are related to the audio subsystem. As I do not know much info regarding these I will refrain from providing false information. Just know that they should be replaced. -BCM***.hcd also needs replaced, yet again I do not know too much info on these so I won't share information that may be false. -Other files in this folder are related to firmware so they should be swapped as well. -Modify build.prop -Open the build.prop in Textpad(Windows), TextEdit(Mac OS), or Gedit(Ubuntu) and change "ro.build.platform" to whatever architecture your device uses. Evo, for example, should show "ro.build.platform=qsd8k" other devices (depending on your processor) should show "ro.build.platform=msm***" -DeOdexing -The easiest way to deodex (In my opinion) is to use dsixda's Android kitchen. It works for HTC, Samsung, and other ROMs. -Using dsixda's kitchen 1. Open a terminal window (MacOS - cmd+space, then type terminal and press enter; Ubuntu - Click the Ubuntu logo, Accessories, Terminal) 2. Change the working directory to the location of the kitchen (in my case it would be "cd /Volumes/kitchen") then type "./menu". 3. Upon opening the kitchen you will see 10 options. Choose option number 1. It will ask
you to set up a working folder. Choose the ROM you want to work with. It will also ask you if you want to view info about the ROM. I usually choose yes just to see what all has been done with it so far. 4. Now you can make whatever modifications to it you choose. I'll try to go into slight detail as to what all of the options do bus no guarantee that these options are accurate. -DSIXDA's kitchen options!!! 1- Set up working folder from ROM -This option lets you choose the ROM you want to modify. A ROM.zip, system.img/boot.img, or nandroid must be in the original-update folder for this to work properly 2- Add root permissions -This adds superuser.apk and /system/bin/su to your working folder. These allow user interaction with su/sudo. 3. Add BusyBox -BusyBox is a collection of useful command-line applications that make managing or modifying simpler. 4. Disable boot screen sounds -I don't know the exact details of this option. I simply modify /system/customize/ CID/default.xml to get the desired defaults I want. 5. Add wireless tethering -This adds wireless tethering .apk to your /system/app folder and wireless_modem to /xbin. It enables wifi tether. 6. Zipalign all *.apk files to optimize RAM usage -This run the zipalign command-line application against all of the *.apk files in / data/app, /system/app, and everywhere else *.apk files may be located. 7. Change wipe status of ROM -This wipes /data in the update script. What that means is not only is /system formatted but /data is also formatted. 8. Change name of ROM -This modifies /system/build.prop. It changes "ro.build.description" to whatever you input into the terminal. 9. Check update-script for errors -This checks your update-script for syntax errors. It isn't capable of checking for logic errors as its just a script itself and checking for logic errors would take a ton of scripting. 10. Show working folder information -Shows everything that the kitchen can interpret from the files it has in your working folder. Info such as Android OS version, Device, and wether or not it will wipe /data on flash. 0. ADVANCED OPTIONS -Added options 11-24 (For time being). These are other options that allow further cusomization to your ROM. From porting from one device to another to running custom scripts. These options are generally safe to run so long as you aren't inputting custom information. Anything that says "add" or "unpack" can be run easily. Other tools included are for slightly more sophisticated users. Use extreme care with these options as an unknowledged user can
seriously screw some stuff up. -DeOdexing - Option 0, then option 11 -Odex is short for "Optimized Dex", what this means is the .dex files in the .apks are optimized for speed and reliability. Odexed ROMs are almost impossible to modify (For themeing or customizing. It's best to use deodexed ROMs to theme/customize. - Use of the "DeOdexer" is very simple, simply select "0" then "11" and choose "bb" which will deodex everything. It will take a good chunk of time to complete ( So go smoke, drink, or jerk off in the time it takes) this task. My reccomendation is to do this part fist (if porting) and then build the ROM (option 99) and use it as your base. For more info do a search of XDA or Google. - After all of that you should be good to flash the ROM you have ported. Upon flashing, if it fails then check your update-script/updater-script for any syntax errors or logic errors. Once those are cleared it should flash regardless of the problems ahead. - Upon successful flashing, reboot from recovery into the Android system. If you only see the HTC Evo 4G screen after about 15 minutes then you have screwed up something in the system and it will require some (severe) modifications to make it run properly. If you get to your boot animation and it repeats itself over and over then your software isn;t loading properly. Run adb logcat to see if what it tells you helps you figure out the problem. Otherwise it will boot. From there all discrepancies (wether it be graphical glitches, no data, etc will be determined by software libraries (/system/ lib). Determining those will be a BIG step in your android development skills. From there, simply swap out libs from a ROM that you know to work well. -Conclusion: - It's actually very simple to port a ROM fro one device to another. The hard part is figuring out the hardware differenes between devices. Once you have that down you're good to go. -Notice: - Another thing to realize, the only stupid question is the one not asked. You may get flamed on the XDA forums. Who cares? The flamers are those who aren't brave enough to do it themself. It may be against the rules to ask a question in Dev, but then if you don't ask you'll never know the proper way to ask. -Last words: -If you give a man a fish, he eats for a day. If you teach a man to fish, he eats for a lifetime. Remember what I've (attempted) taught you with this post. Pass anything you learn on. Without sharing, we would be nothing. Cheers! I hope you enjoyed the guide I've written (while drunk). If anything doesn't make sense then shoot me a PM on xda @ mbobino. If thats too much the email me @ "mbobino (at) gmail.com". I hope that I've helped those who are less knowledgeable that I. That is all! :-)