Android Tablets Forum banner
1 - 1 of 1 Posts

81 Posts
Discussion Starter · #1 ·
Hi folks,

This evening I have written done the main architecture of the ZORFA Project, that I would like to introduce here, in order to get some feedback before going on... I apologize to post the *same* message on several device-specific forums, but the goal is to federate as many Zenithink users as possible

ZORFA stands for "Zenithink One-ROM-For-All". The backbone principle of the project is rather simple: all Z280-based Zenithink devices (E72, E98, Z101, Z102, C71, C91) share a lot of common hardware features, which means that porting a custom ROM from one device to the other should be relatively easy. However, as most of us only possess a single device, the user community is pretty much fragmented according to each specific device (simply look at the way the SlateDroid forum is structured) and so the expertise of one given android wizard does not easily travel from one community to the other. Of course, any of us could try to read *all* the posts on *all* Zenithink devices, but hey, there is a life out there

The idea of the project came to my mind when atp posted the ICS beta4 last week on his ftp folder. By looking at the archive structure, I realized that the number of system files that are specific to a given device is extremely small. So it is quite easy to perform some kind of "file factorization" to generate a meta-ROM that would be able to generate a set of device-specific ROMs. This is basically what atp has done between the beta4 release and the first official ICS release. So if this can be done for official ROMs, we should be able to perform something similar for all these nice custom ROMs that are likely to be created and released in the next weeks.

Basically the goal of the ZORFA project is to create as-most-automation-as-possible to convert a custom ROM on device A into a set of custom ROMs for device B, C, D, etc... There are mainly three different levels on which a custom ROM can be cooked:

  • Level 1: The ROM is simply a user arranged combination of apps, images, colors, fonts, without touching any hardware-based config file. Such kind of custom ROMs are very easy to spread among all the Z280 family. The only possible issue may be the difference in screen resolution among 7'' (800x480) and 10'' (1024x600) devices. In the ROM structure used when flashing Zenithink devices, Level 1 customization is thus entirely located in file ""
  • Level 2: Here, the custom ROM also tweaks device specific config files, the most important being build.prop, but other files may also be edited. In the ROM structure, Level 2 customization thus adds a" which groups all the device-dependent modifications. However, most lines in build.prop are not device-dependent, so an ideal process would be to split the customization process into a generic part and a specific one, and merge them into the final patch archive, according to the target device.
  • Level 3: In this last level, the custom ROM also touches the Android kernel to get very deep customization. In the ROM structure, Level 3 customization would thus propose a homebrew "Z280.kernel" file. However, as long as Zenithink does not publish the source code of the kernel and the drivers, it appears quite difficult to come up with some Level 3 custom ROM.

So what have I done so far? Well, starting from the beta4 and the initial ICS release, I created a file structure that groups the device-specific files for all existing flavors of Z280 devices, including serial number classification followed by the official ROM series (from E72-E0-2N to C91-H1-3N). Then I created a standard Windows command file (not totally finished yet) that simply asks a user the reference of his device before retrieving and combining the corresponding files in order to generate a "zt-update" folder with all the required files in it. Why Windows command file instead of standard Unix script shell? I bet that Windows is still more present on the computers of potential custom ROM cookers. Let me know if not...

I'm going to work a bit more on the project before alpha release, but I would be glad to get some hints/ideas/flames/whatever about things that I certainly have forgotten here

Thanks for (such a long) reading...

PS: It would be nice of some administrator could link all the answers in all the device-specific forums into one unique thread. Don't know if this is possible, by the way
1 - 1 of 1 Posts