Welcome to Our Android Kitchen Website!

 February 26th, 2015/7:59am   Continuing the efforts on this. Will be "UpDating" it with info concerning builds for CM12(Lollipop) Android 5.0.2. Been having difficulties with setting this up cause the ReZound was NOT, nor has it been, included since the ICS days.
 Sensation Info  

 September 8th, 2014/7:45am   Info on the Android OS, that I have probably seen before -but- in todays searches it made an impact on me. Something that all of us 'noobs' need to know... better in the beginning than later in confusion.  Android Getting Started  

Maybe ..  Android ROM dev     Android Source  
 Chad Goodman Info  

The following Warning is placed here because it is important. IF you have not yet installed the Kitchen please pay heed to this warning as you continue. OF course this Warning only pertains to Windows users. IF you are on Linux it is not applicable.

  (WARNING: Do not install Cygwin before the JDK!!)  

Now then, we are NOT desiring any Fame or Glory in the ROM building enterprizes. We just want to make some 'Personal Changes' to the way our phone looks and operates. After all it is like our 'puter... Personal. This is our attempt at making that a fact. We will credit, any and all, places where we have 'borrowed' verbiage. IF you see something that you feel you should get credit for ... and haven't ... please contact us for a correction. We will try to make one As Soon As Possible. Any, -and all-, delays in correction will be cause we don't check our Email often enough.

 April 18th, 2014/1:08am  Now then, throughout these pages you will see dates that may be totally out of context. That is cause we are entering the dates when we made the entries, which are when we discovered something or when we finally entered the info. Dates and times are probably more for usin's that for youin's.

 We decided to cover the Kitchen, GitHub and Android Build, here, all in one.  
Now then, we own -and- are using an  HTC ReZound  Smartphone. 'Most' of the verbiage in here will pertain to it. However, since we have searched the Web for information some, -or- most, of this will apply to other phones. JUST BE SURE.
August 20th, 2014 - Actually this entry is late. We are also including Eclipse and Android Studio in this mess.
September 29th, 2014 -  Building the Eclipse-based Tools.  

We decided to see what is involved in creating a ROM for one of these Smartphones. Mainly ours, the HTC ReZound, but that is beside the point. We believe that 'most' of what we discover and come up with will apply to all, or most, of the others. In our searches for 'information', our ReZound has usually been left out. It seems to have gotten 'orphaned'. However, it was named in:
              Mr. Dsixda's list of supported devices.      
Which brought us joy. Click on the previous for instructions on how to install the kitchen.

In our intial searches we found this "Kitchen" and now that we have learned more, mostly learned what we don't know, we decided to install the 'kitchen' and give it a whirl. Now the Author of the Kitchen asked that his WebPages NOT be copied to other sites. Well, we won't be copying his WebPages -but- there will be 'pieces' of it here in ours. Can't help it. You can only say something so many ways... and IF you get to different then it won't mean the same. Now then, in case you missed them here are:
              Mr. Dsixda's Kitchen Install Instructions.      

Most of the info presented here will be primarily for our HTC ReZound.  IF you own another type, then Double, Triple, Quadruple check that the info will apply to your phone.
We have used info from other phones... AFTER checking.

This kitchen is mainly intended for HTC devices 
Your only warning.

Now then, this 'Kitchen' was desinged to work in a "Linux" environment. Even IF you use Windows, you still have to setup -and- use a 'Linux System' via 'Cygwin', or a 'Virtual Machine', or something called 'Wubi', which is 'Ubuntu Linux' inside a file in your Windows operating system! So, no matter how you look at, you will be working inside Linux.

 September 11th, 2014  Hmmm... what day for this. Anywho, like I have said many times in many places, these WebPages are more for myself than anyone. Annnnddd... the following notes are ones that I "forgot" when I first created this page. Annnndddd... consequently, I forgot where the stuff for Android was/is on my Windows 7 Laptop. Therefore, time was wasted looking, and now writing this "location" information.

For Windows the Kitchen is in CygWin.
Path is: C:\Cygwin\home\ctaylor\Kitchen
For Linux the Kitchen is in my home dir.
Path is: /home/ctaylor/Android-Kitchen-0.224

So, we have the Kitchen setup in our openSuSE Linux ver 12.3 and at first grins it is working fine. First thing to do is to import a ROM into the Kitchen as a base. We are going to copy the ROM we 'just' created in our newly setup Build Environment... (talked about below in My CM11 Build)... to the 'original_update/' dir inside the 'Kitchen' dir. The file, or ROM, is:

cm-11.-20140210-UNOFFICIAL-vigor.zip   cm-11.-20140504-UNOFFICIAL-vigor.zip

We then will move into the Kitchen dir: cd Android-Kitchen-0.224/, enter ./menu and select option '1' - Set up working folder from ROM

after selecting option '1'
Ensure there is at least one ROM under the 'original_update' folder!

Select an option:
 s - Show supported formats
 x - Abort, don't create working folder

Or press Enter to continue

? pressing enter and we get...
Please wait ...

Available ROMs:

  (1) cm-11-20140512-UNOFFICIAL-vigor.zip

Enter selection number (default=1, cancel=0, r=refresh):
pressing enter again selects our only choice at this time..

At this 'first use' we are just going to use the 'default' name for the Working Folder.

Pressing the Enter key gets the following:
Creating working folder WORKING_051514_091517 ...
which is the date and time of creation...
Extracting ROM from ZIP file ...


Found an updater-script but not an update-script. For
compatibility with the kitchen scripts, only update-
scripts are used in the kitchen (see the kitchen's FAQ
at xda-developers.com for a detailed explanation).

The kitchen will attempt to convert your updater-script
into an update-script file using the old (or similar)
syntax of an update-script, which makes it easier for
the kitchen to make changes for different devices. When
the ROM is built, it will be converted back.

If you are using a custom ROM (ZIP) that was made
without the kitchen, then the conversion may not be
100%. The kitchen will make a backup of this file
as META-INF/com/google/android/updater-script.orig.

Choose an option number:

  1 = Convert it to update-script (Amend format)
  2 = Do nothing, keep updater-script (Edify format)

? (default=1) 

Now we are NOT gona portray an understanding of all that was just presented. We had this setup 'Before' our last 'System Crash/Failure' and was just starting to investigate the items mentioned. Once we get it figured out we will present the info here. At this venture we are just accepting the default. The execution will NOT be presented here. Just suffice it to say that it created the dir and the files inside it.

The Information Report that follows shows that it is installed and somewhat working. We realize that just to show a report doesn't really prove a lot -but- it is a start. (Not only that, we had to create a "Working Directory" first, before executing this menu command... forgot to mention that.) The Menu works and this is from selection number '8' - Show working folder information:

Working folder information (v0.224)

 Android OS version             : 4.4.2
 Device                         : vigor
 Model                          : ADR6425LVW
 ROM Name                       : cm_vigor-userdebug 4.4.2 KVT49L e2acb68feb test-keys
 Rooted (Superuser app + su)    : NO
 Rooted (unsecured boot.img)    : YES
 BusyBox installed              : YES
 BusyBox run-parts support      : NO
 Apps2SD (Apps to EXT) enabled  : NO
 /data/app enabled              : NO
 Custom boot animation allowed  : NO
 Nano text editor installed     : YES
 Bash shell support             : YES
 /system/framework is deodexed  : YES
 /system/app is deodexed        : YES
 radio.img found                : NO
 ROM will wipe all data         : NO

Press Enter to continue

We have also found another site that "honors" our ReZound. It is probably the main reason for all this in the first place. The site contains, produces and maintains a version of CyanogenMod CM10.1 specifically for the ReZound. Which is Jelly Bean 4.2.2.   Word in the Forum is that they are working on a CM10.2... Jelly Bean 4.3.
Yep. They are... CyanogenMod CM10.2

And we now have CyanogenMod CM11.0 which is the new KitKat 4.4.2. This particular one was also created specifically for our ReZound.

Another very good reference: Cook Your Own ROM    Contains some info about using the 'Kitchen' and about adding & removing 'Apps'. The author, it appears, is using Ubuntu and they provide some interesting screen shots which we will NOT repeat here.

  The Menu

 Android Kitchen 0.224 - by dsixda (xda-developers.com)


  1 - Set up working folder from ROM
  2 - Add root permissions
  3 - Add BusyBox
  4 - Disable boot screen sounds
  5 - Zipalign all *.apk files to optimize RAM usage
  6 - Change wipe status of ROM
  7 - Change name of ROM
  8 - Show working folder information

 00 - LEGACY OPTIONS (old and rarely used)
 99 - Build ROM from working folder

  u - Kitchen Info/Update/Donate
  x - Exit

Enter option: 

  (WARNING: Do not install Cygwin before the JDK!!)  

Section between these lines was copied, with some changes, from: DroidVoid

dsixda's kitchen download and help

download kitchen- Here

kitchen release notes - Here

help and frequently asked questions #1 and their answers - Here

help and frequently asked questions #2 and their answers - Here

Create Your Own ROM for some setup instructions

Optional - Download User - Contributed Plugins (used in Advanced Menu of Kitchen)

android builder - Here Downloads the Android open source code for use with the kitchen)

application verifier for data partition - Here  ( Fixes issue where certain apps under /data/app folder of ROM cause force-close)

update hosts - Here ( generates an ad-free host files)

some quick hints on what file is what

boot.img - This file is a binary representation of the root file system of the device. It contains the system kernel and all files required to start the core part of Android.
system - This is a directory containing all files found under /system on a running Android device. It has exactly the same layout.
META-INF - This is a directory containing the update manifest and script. The manifest is a file which lists all files included in the update, with their SHA1 checksums. The update script is used to apply the update on a device

Good? If the kitchen starts up, then you're ready to make a custom ROM! Finally.

  1. Select Option 1 to set up your working folder (the folder where your ROM is going to be created). To find a base ROM to import into this kitchen, follow the instructions in the section below entitled "How do I import a ROM into the kitchen?"
  2. Modify whatever you'd like in the kitchen
    • If you want the ROM to be able to run apps that require root permissions, select the ""Root" option.
    • You can remove unneeded apps (*.apk) from the /system/app folder of your working folder.
    • If you want to add Market or non-stock apps (*.apk) to your ROM (which can be uninstalled or updated from your device later) then select the kitchen's menu option that adds "/data/app functionality". Afterwards you can copy these .apk files to the new /data/app folder of your working folder. If you put those extra apps under /system/app instead then you won't be able to update most of them through the Market.
    • Optional: Read this post for some more information about the fundamentals of creating your ROM with this kitchen.
  3. When you are finished modifying your ROM, just choose Build ROM.
  4. Your completed ROM can now be copied your SD card, ready for flashing from the recovery menu!
  • NOTE: It is always recommended to make a Nandroid backup from the recovery menu before flashing a new ROM!! The recovery menu allows you to recover from a non-bootable ROM.

  My Reasons

Alllllrighty now... Whether -or not- this is a good place to stick this is... well a matter of opinion. At any rate, my main reasons, for using this "Kitchen" are; I want to learn more about how my phone and Android work. IN ADDITION ... I want to try to repair the broken parts -OR- replace them ... in our newest CM11. At this time the MAIN thing is the Camcorder. The rest seems to work. Now the Camcorder should only be an app. Which means it could be replaced... -BUT- with an app that works with a Samsung S5K3H2YX rear and a Aptina MT9D015 front cameras -or- sensors. Which unfortunately does NOT look to promising.

Now then, the following was taken from the "file_contexts" file in our WORKING_DIR that was extracted from the ROM. Inside the ROM we have a section called or labeled:

# Devices
   ...   And inside it we find:
/dev/cam		u:object_r:camera_device:s0
   ...   and further down in the same section we find:
/dev/s3c-jpg		u:object_r:camera_device:s0
/dev/s3c-mem		u:object_r:camera_device:s0
Now we get to a new section:
# Data files
    ...   and we find:
/data/misc/camera(/.*)?	u:object_r:camera_data_file:s0
And still further down, a section within a section:
# asec containers
   ...   which contains
# Qualcomm MSM Interface (QMI) devices
/dev/socket/qmux_audio/*           u:object_r:qmux_audio_socket:s0
/dev/socket/qmux_bluetooth/*       u:object_r:qmux_bluetooth_socket:s0
/dev/socket/qmux_gps/*             u:object_r:qmux_gps_socket:s0
/dev/socket/qmux_radio/*           u:object_r:qmux_radio_socket:s0

/dev/diag                          u:object_r:diag_device:s0
/dev/media([0-9])+                 u:object_r:camera_device:s0
/dev/smd([0-9])+                   u:object_r:smd_device:s0
/dev/mdm                           u:object_r:radio_device:s0
Now then, those are the sections that 'mention' the Camera. Nothing says Camcorder, so I guess it must all be inside the code for the Camera.

The following is the structure of our ROM inside our WORKING_DIR:
We are not going to expand this any further cause it takes up to much room. Suffice it to say that the Camera is inside:     System -> app -> Camera2.apk
Which is velllly intellesting... cause when you look at the "source code" it is inside:
    frameworks -> av -> camera
and then under camera there are a number of *.cpp files and two dirs; camera2 and test.

Now then, under camera we have two files that look to be interesting:
    ICameraRecordingProxy.cpp and ICameraRecordingProxyListener.cpp


  The Innards

The folders are:
The file:


  Adding removing Apps

Section between these lines was copied, with some changes, from: simply-android.wikia

Basic ROM Modification

Download a ROM you want to modify, and if you want to get rid of bloatware (Apps added by manufacturers/carriers) navigate to /system/app and look for the file names, back them up to a safe place, and then delete them. If the ROM is odexed (/system/app/ or /system/framework/ contains *.odex files) do not delete any apps, you must "deodex" the ROM first. In the kitchen, there is an option to deodex the ROM. This process can take a while. Once that is done you can go back and delete the apps you don't want. To edit the name of the ROM open the build.prop in /system/ and look for ro.romversion or ro.modversion and edit the name. (Actually you can use the Kitchen to change the name. This is just left here for reference.)

Here is where most of the stuff is changed:

Themes: /system/framework/framework-res.apk or /system/framework/services.jar

Start-Up Scripts: /system/etc/init.d/

Boot-Animations: in /data/local/ or in /system/media/

Start-Up tones; Notification tones: /system/media/audio/

LIbraries: /system/lib/

Kernels: boot.img and /system/lib/dhd.ko

In case you are about to 'theme' the ROM read this because it is VERY important:

If the ROM is odexed (/system/app/ or /system/framework/ contains *.odex files) do not delete any apps, you must "deodex" the ROM first. In the kitchen, there is an option to deodex the ROM. This process can take a while.

ROMs produced in this way may NOT be shared on any site, including Simply-Android, unless you have spoken directly to, and have permission from the original developer.

How to Add or Remove Applications

If you have correctly followed the previous part of the tutorial, you will have a working folder buy now.

  1. Go to the working folder where you originally extracted Android ROM.
  2. Go to system/app. You will see a list of all the .apk files that are in the Android ROM.
  3. Change or delete any apk you want, just be careful not to delete any important apk. If you do not know what to do here, leave this step as it is.

Adding a Boot Animation

Boot animation refers to the flash screen that you see before your phone boots. Like in SONY phones, you see XPERIA flashing on the screen before the actual startup.

For this, replace the bootanimation.zip located in the workingfolder/system/media with any animation of your choice. You can choose the animations from this link

boot animation

Fixing GPS location for your country

Since a ROM is free for all and anyone can install it, there is no certain position of the GPS to which the Android ROM should target. Therefore, if you ever try to customize a ROM, make sure you edit the GPS settings as well.

  1. Go to workingfolder/system/etc
  2. Go to the file named "gps.conf". Open it in notepad++(not in simple notepad). Notepad++ is a free utility and you can download it from anywhere.
  3. Download the required gps script file of your country from this link. Extract it and replace with the above "gps.conf"

Changing the default wallpaper

Changing default wallpaper is easy but you have to be careful while editing or deleting it.

  1. Go to workingfolder/system/framework/
  2. If you have installed 7zip on your computer, then its good, otherwise do it. Then from the same folder, open framework-res.apk
  3. Go to res/drawable-hdpi/ and you will see default_wallpaper.jpg file. Just replace this file with any other you like. Make sure both are in the same format.

Changing the system interface

This part deals with the change in the overall menu appearance throughout the ROM. This is the most crucial step and if you are unsure about this, please do not try.

  1. Go to workingfolder/system/ and open the file named "build.prop" with notepad++.
  2. Now you will see a lot of options that you can change. I cannot tell all of them as they are a lot but I will change the LCD density here.
  3. Locate ro.sf.lcd_density=240 inside the "build.prop" file and change the value to anything you like. Just replace it with 240.


Now you have changed your ROM according to your likings and are ready for the final step of the whole process which is repacking the Android ROM to install onto the mobile. I will discuss it in the next part of the tutorial.



 31 Oct 13  -   5 Nov 13  -  NO YES it is  still NOT  ready.  yet. 
Finally It Worked!! Fini November 5th, 2013 / 9:27am We have a CM10.2 System!
And on December 17th, 2013 we created a CM11.0 System!!!

    openSuSE and CyanogenMod


  1. Requirements
  2. About this guide
  3. Install "Oracle JDK"
  4. Install other needed packages
  5. Install "make 3.81"
  6. Install "Android SDK & Eclipse"
  7. Install Android Studio
  8. Set up "repo"
  9. Note: "Neo Wisdom"
  10. Set up source directories
  11. Set up repositories
  12. Update source code
  13. Update Cherry Picks
  14. Build CyanogenMod 11
  15. Done!
  16. Possible build errors on openSuSE
    and Credits
 Select Build Notes    Camera Project    My Java Android    Market Place  

YES... This is a mess. Don't know that I ever will get it straightened out. As you will see, we have searched and searched the Net, trying to find answers. Had a hard time finding the right words for our searches. Got everything -but- what we needed. Sometimes we found things that we didn't even know we needed!! However, for some reason, simply following directions is NOT good enough. And... THAT... is ALL I will say about that matter!! I have poured out my efforts, good -and- bad, mainly so that 'I' will have references -but- published them for anyone else that 'just might' benefit from them.

[GUIDE] Building CyanogenMod 11.0 from Source with openSuSE 12.3
                        And we have moved up to openSuSE 13.2

And probably won't go any higher on either!! TR - June 28th, 2015

This was Borrowed/Stolen from: riggnix on the The XDA-Dev forum (November 8th, 2012). Our plans are to convert it over to openSuSE 12.3 and CM11.0 building. This was started for CM10.2 (August 13th, 2013) -but- things changed in midstream and we changed also. After all, CM11.0 KitKat is the latest. We were trying to keep his stuff intack and our changes separate. We were also trying to include both, CM10 and CM11. That got to be to much for our "Senior Moments". This will be changed to conform just to what we are doing, or trying to do. IF any of his stuff is left, it is by accident.     Sorry riggnix, but we are giving you the "original credit". His, riggnix, was for CM9 and openSuSE 12.1.
This whole thing has changed (October 12th, 2014). I purchased a new PC - an  HP 500-277c i7-4770 Quad-Core 3.4GHz . We have faster compiles, 1 hr vs 8 hrs, and we have Android Studio.

another: SDK for Android

Another person who deserves credit for contributions to this is Neo. He is/was the current Head Honco over on the ReZound CyanogenMod site at: XDA-Developers Forum. -But- that has changed as of April 3rd, 2014. We have a new Head Honcho, REV3NT3CH. He has claimed that he has a lot of patience and likes to help. IF that is so this page will get lots better. (June 6th, 2014 -- I am now the Head Honcho )

We receved our Smartphone, an HTC ReZound, in Januray of 2012. Here it is October 2013 and we feel that we haven't done a whole lot with it. Been researching a lot -and- half of that time was a waiting period. Waiting for HTC and Verizon to get together and release  Android ICS . Yeah, that is not really an excuse... but then none of the others we have are either. At any rate, we have decided to pursue this path more diligently. As stated at the top... it -and we- ain't done yet.

Need to make sure these people get credit where credit is due. They are all part of this in one way or another, whether they know it -or- not. They are all over on the XDA Developers Forum



If you have tried to build  Android  on systems other than Ubuntu (or Ubuntu based systems) you may have noticed, that pretty much, there are not any guides for other systems. Well, we are finally trying to set up our openSuSE to build CM11.0 successfully, and would like to share the process with everyone.

This is a copy of riggnix's CM9 copy on The XDA-Dev forum. He talked about doing a version for CM10 but we never found one. So we are trying to do it -and- re-writing his copy. IF we get it working, we will notify him. However, we are going to install as much as we can from openSuSE. Well, right off that was a lie. We are getting the "Official Java". Worked in this industry for years and still don't know what I'm doing!!

SE, SDK, JDK, Oracle version, Open version, 6U, 7U ... ???? arrrgg!!. which to use??!!
December 3rd, 2013 - Ok, with persuasion, finally decided on 6u45.

1. Requirements

  • openSuSE 12.3, 13.1, 13.2 64bit (may work on other versions too)
  • a good internet connection (We have COX cable)
  • as much RAM as possible (at least 2GB to finish a build, but that will take very, very long.) (We have 4GB 12GB.)
  • Gona need some disc space too - Android source code alone consumes around 9GB of hard drive space, and to carry out a 'single' device build at least 30GB will be required. If building for more devices, this can easily exceed 100GB. At this time I have 269GB free of 426GB. Refer: Building from Source
  • patience (well, that 's gona be hard)
  • common sense (think we have it  )
Note: I did all this in a virtual machine, but I highly recommend installing Linux on your hardware. Building Android takes a long time even on high end hardware.
OK. We are; We did; We have a "Hardware Oriented" openSuSE 12.3. We BootUp into it everyday. It is also 64-Bit and was part of the course of our troubles for so long. Refer: openSuSE 12.3 VMwareFix
Hardware Specs of my machine: Sys Environment

 October 30th, 2014 / 12:50pm  Well, things are changing. Got a new Computer and set it up with openSuSE 13.1 13.2. Now to see IF we can get the Android Build Environment setup on it. - - - We did.

 May 17th, 2016 / 7:45am  Things are changing again... Got another new 'Puter. Also set it up with openSuSE 13.2. We are now trying to get the Android Build Environment setup on it. Due to the fact that almost everything I have is "Out-of-Date" it will probably be a real challenge.
-AND- I have just learned that my stuff is 'so old' that I may NOT be able to setup an Android Build Environment on my new 'Puter. I may just have to continue using the previous new one.

2. About this guide

  • Lines beginning with '$' are supposed to be entered in shell (without the $ sign).
  • File names are bold. maybe... IF we remember.
  • This guide assumes that you set up the sources at ~/Android/cm11.0-rezound/. Feel free to change that.
    The directory structure can not be changed. At least NOT as of Jan 8th, 2014. Reason?? Script files have the dirs hard coded!! This will work with CM10.2 .. maybe... -AND- it will work with CM11.0
  • vigor = device name (e.g. HTC ReZound. See CyanogenMod Homepage for other devices.)

Now then, we have "copied" the text from the afore mentioned WebPage -but- from here on out there will probably be "Lots" of changes. Different versions of CyanogenMod and different versions of SuSE. Plus -- "Ve have our vays..."  
Annnndddd now we are changing to openSuSE 13.1 13.2.

3. Install "Oracle JDK"

Well now, time has passed the Author and it really has also passed us. -But- we are going to try to get the "Latest" -or- the "Latest time frame" that will co-ordinate with what we have available -and- for our version of openSuSE 12.3. Now IF that doesn't make sense to you... well it is really hard for us too. On top of that, there is a problem with all the "Liciensing". Can't do this, but you can do that, and then if... so we are presented with some 'almost' like Software. -But- then we are told by some -"Don't use it!!" In fact this Author states that further down. Well, we had installed the open-JDK stuff during our setup. Ok so we will remove it and get what he says to get -but- we will be getting "Later" versions. The file, this one, will be edited/changed accordingly. Lots!! Sorry this first part is a 'little' confusing -but- that happens when you get stuff from someone else and try to change it... yeah I know... excuses, excuses. But that's my story and I'm stickin with it.

  • This will be our first big change.Unfortunately, NO it won't. Until we can learn more ... we will use Java 6u45.
  1. We still need to install: jdk-6u45-linux-x64-rpm.bin. Jump over to Java Install

  2. Use Yast2 and search for openJDK and check uninstall for ALL openJDK packages. (We did.)
  3. DON'T click accept yet, go to next chapter.
  • Well, shuckins. Do it however will work for you.
  • The JDK Path is: /usr/lib64/jvm/java-1.6.0-sun-1.6.0

 August 25th, 2014   Java 6 & 7 Same Time
in a command prompt or batch file
set JAVA_HOME=<path to java version bin>
<command to execute>

 November 7th, 2014 /8:24pm  This is an UpDate... We got a new PC and must install this again. Going to install via an RPM. jdk-7u71-linux-x64.rpm It is supposed to be the latest.

 September 5th, 2014 /11:24am  Well, it's in, Java 7 -but- we haven't tried or tested it yet. So how do we make sure everything is alright???

ln -s /usr/lib64/jvm/java-1.7.0-sun-1.7.0/jre/lib/amd64/libnpjp2.so libnpjp2.so
libnpjp2.so -> /usr/lib64/jvm/java-1.7.0-sun-1.7.0/jre/lib/amd64/libnpjp2.so
javaplugin.so -> /etc/alternatives/javaplugin

Later  We dumped ALL of our Java and Re-Installed via an RPM. jdk-7u67-linux-x64.rpm. Now we need to try a 'build and see if it still works.

September 15th, 2014 /5:03am  My final(at this time) version is:

> ls -l /usr/java/
total 4
lrwxrwxrwx 1 root root   16 Sep  5 14:46 default -> /usr/java/latest
drwxr-xr-x 8 root root 4096 Sep  5 14:46 jdk1.7.0_71
lrwxrwxrwx 1 root root   21 Sep  5 14:46 latest -> /usr/java/jdk1.7.0_71
> java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)

 October 30th, 2014  Now we need to install Java 7 upon this openSuSE 13.1... and we did.  The Install  

 November 14th, 2014 / 6:07am  Almost time to walk the dog. But the reason for this entry is... we need to change where our "Java" is located. openSuSE keeps wanting to install all these "openJDK" packages everytime I want to install something else. Guess Java is used a lot more than I thought. Sooooo... we are going to install it the SuSE way and get all the "default" paths set to our "Oracle" version. Guidelines for this can be found at  SDB:Installing Java  

4. Install other needed packages

  1. Search and install following packages with YaST (Also look in "Provides".)
    • git
    • gnupg - (No have, but have (gpg2 - GnuPG 2)   GnuPG 2 is the successor of "GnuPG" or GPG. It provides: GPGSM, gpg-agent, and a keybox library.)
    • flex
    • bison
    • gperf
    • SDL-devel - (Have libSDL-devel)
    • esound-devel - (Have libesd-devel)
    • wxGTK-devel - (Nope! However, research shows wxWiWidgets-2_9 has the code. So we installed them.
    • zip
    • curl
    • ccache
    • ncurses-devel
    • ncurses-devel 32bit
    • zlib-devel
    • zlib-devel 32bit
    • gcc-c++
    • glibc-devel 32bit
    • libstdc++47-32bit and/or libstdc++33-32bit
    • libzzip-0-13-32bit
    • mesa libs - (Have a bunch of Mesa-lib thingys.)
    • schedtool - This is also needed and is obtained from the 'Packman Repository'.
      In theory, using the SCHED_BATCH policy of the Linux scheduler should help with huge cpu-bound builds, such as making aosp. SCHED_BATCH was designed for non-interactive, CPU-bound applications. It uses longer timeslices (to better exploit the cache), but can be interrupted anytime by other processes in other classes to guarantee interaction of the system.
      This is a 'root' process -and- requires 'root'. Also need /usr/sbin added to the $PATH.

Getting the corect 32-bit libs 'may' be your biggest headache. They all seem to be different!! I also included the development 32-bit libs.

64-bit Debian or Ubuntu : apt-get install libc6-i386 or libc6:i386
64-bit Fedora : yum install glibc.i686 zlib.i686
64-bit SUSE : zypper install glibc-32bit zlib-32bit
Refer:  Missing libc  

This is the default search path of GCC. Refer:  Where does GCC look?     a BLOG:  GCC/Clang   From digging on the net I derived the following two ways to get my defaults that I am now going to place in the Eclipse 'C/C++' Paths. w32api.h has been deprecated, sooooo... I included what I think are 32 bit dirs. If they aren't then there is something drastically wrong with their directory naming. I'm not really sure what the dirs with the ../../../../ in them are.
Unfortunately, in order to set them ... I HAD to create a little C and C++ file inorder to see the "General C/C++" selection in the "Prperties" menu you get by right cliking on the "Project" name.

 Nov 26th, 2014/5:03am  Didn't include where I found info on this!! Anywho:
If Autodiscovery is enabled, after a build finishes, any discovered paths and symbols will be displayed in the Discovered Paths section.

To add include paths and symbols:

  1. To set properties for your project, right-click your CDT project and select Properties. Alternatively, to set properties for a specific source file in your project, right-click a source file within your make project and select Properties.
  2. Expand C/C++ General and select Paths and Symbols.
Autodiscovery is set in:
    Window -> Preferences -> C/C++ -> New C/C++ Project Wizard -> Makefile Project     .. Don't use it!!
Refer:  Eclipse C/C++ Paths  

$ cpp -v
echo "//" | gcc -xc++ -E -v -

5. Install "make 3.81" -or- "make 3.82"

Note: Other versions won't work... not true anymore.

Well, we have 3.82 installed, when we installed the Sytem, and we don't really see why it won't work -cause- we have all new Software anyway. Hopefully, we won't have to eat our words.     Later: We don't!! Can use the 3.82 make.

  1. Download source from http://ftp.gnu.org/gnu/make/make-3.81.tar.gz.
    Well, you don't need to IF you have installed the "make" included with openSuSE 12.3.
  2. This is for openSuSE 12.3 and make 3.81 is NOT needed. Use the make 3.82 that is included.
    Well, guess what?? In addition to the higher make, we are up to GCC 4.7.2!!
  3. Well, guess what sports fans??? In openSuSE 13.2 we have make version GNU Make 4.0 -and- gcc 4.8.3!!

Refer: Open Source Project

6. Install "Android SDK & NDK & Eclipse"

javap -verbose EclipseClass.class
 Eclipse Installation     My Install Version  
 Install Eclipse Plugin     SDK for Android - Wiki  

 August 24th, 2014 / 4:55am   'I' not only list the successes in my installs, -but- also the failures and/or problems. This is in hopes that it might help anyone else who happens to read my Web Pages. -And- as reminders to me!! As you can see, I more or less started trying to install -and- use Eclipse for my ROM building last November(2013). I have been successful in building ROMs -but- not thru Eclipse. I have just in the past couple of weeks decided that 'I' am gona make it work. So that is what this particular section is all about.
Thank you
Ok, we had some success. Found that we had to turn OFF some check on the 'C' language stuff in Eclipse because of ... ta, ta, da, daaa... bugs in Eclipse indexing. And now we have a new machine and installing all this stuff again. The 'New' Install will be up here at the top. The horror stories from the past follow... only IF you care to read them. IF not you can jump to the next step from here.
Believe it or not... this is 'somewhat' cleaned up!! Nov 19th, 2014

 May 17th, 2016/7:04am   Well, here we go again. Got another 'Puter this past Febuary 24th, 2016. So in order to get 'back' into this I am going to try to set it up on this newest one. -But- all of my stuff is so out of date, it may be even more of a challenge than it was the first time. -AND- even though Dakotah, my dog, is now a couple months over a year old, he still demands a lot of my attention. (I got this newest PC on 'his' 1st Birthday!!)
Now then, another thing to note is... I don't think I am gona bother with 'Eclipse' or 'Android Studio' on this newest machine. You can't build the OS in them anyway... or so I have been told. So, at this time we will just set things up so we can do a build. I am interested in how fast 'this' machine will do a 'Full' build from scratch.

Now pay attention here Taylor... The 'fix' for 'cannot be resolved' was ONLY for the Kernel projects. NOT the Android OS Platform one!!!

  1. Three dirs created in home dir:
    Android    -- for the Phone Code,
    AndroidSDK -- for Eclipse and SDK,
    AndroidNDK -- for the NDK native code.

  2. Get the AndroidADT and extract it into the AndroidSDK dir.
  3. It has Juno and we are going to update it to Luna. We just 'dumped' Juno and then clicked on the  Luna Archive   to Extract it into AndroidSDK/adt dir. Luna Eclipse is now installed.
  4. SDK on the other hand can be updated through the SDK Manager. We moved up to version 23.0.2.
    Possible problem on my new setup. It is using version 23.0.5.
  5. Some setups:
    cd ~/Android/cm11.0-rezound/
    cp development/ide/eclipse/.classpath .
    chmod u+w .classpath

    cd ~/AndroidSDK/adt/eclipse/
    Edit eclipse.ini
        Change to:
      Now then, my Xmx value was at 768, so I increased it to 1024. These are 'heap' values. Small and maX.
    Refer: Installing Eclipse and Install Eclipse 4.4
    IF you get the following error... you probably forgot to copy over the .classpath file.

    Archive for required library: 'libcore/luni/src/test/resources/tests/api/java/net/InvalidJar.jar' in project 'AndroidCM11' cannot be read or is not a valid ZIP file
    The project cannot be built until build path errors are resolved	                                                                                                

     Classpath Info  

  6. Make a Symlink to Distinguish ADT Eclipse Bundle from Ordinary Eclipse:
        ln -s /home/ctaylor/AndroidSDK/adt/eclipse/eclipse /home/ctaylor/adtec
    Insert Android Developer Tools into User PATH
    edit /etc/profile.local and put in:
        export PATH=/home/ctaylor/AndroidSDK/adt/eclipse:$PATH
    Launching ADT Eclipse Bundle
    Create a Desktop Launcher
    Right click in the Desktop Folder. Move the mouse over Create New. Move the mouse down to Link to Application and Left click on it. In General change Link to Application to Eclipse. Left click on the Application Tab. Left click on the Browse button. Find your Eclipse in the folders presented and click on it. Click on OK to exit.
    Right click on the Ugly icon just created. Left click on Properties. Left click on the Ugly icon under the General Tab. Left click on the Other icons radio button. Click on Browse.. IF you are lucky it will still be in the Eclipse dir. IF not, move to it and click on icon.xpm. You will return to the General Tab. Click on OK and the Ugly icon on your Desktop will change to a pretty Eclipse icon. https://developer.android.com/sdk/installing/index.html?pkg=adt
  7. Now click on your new Desktop icon to execute Eclipse It will want to create a 'workspace' folder. That is the default name for it. However, we are gona change it to 'CM11workspace'. That is what we are doing at this time. The Eclipse that started this time around is: Eclipse Luna. I state that cause I have had 3 different ones installed on here ... trying to get one to work. I was "learning" -and- I was expecting to much. Se la vi... that's what happens.

  8. Alllllrighty now... we are at the Welcome Screen. IF you continued on ... get out and come back in.
    Refer:  CodeBin  

    Eclipse 4.4 Luna repositories:

    In case you're using Eclipse for Android development, the ADT repo hasn't changed:

    The above are from the referenced file which is instructing on how to do an upgrade. Works for the initial install too!! Be patient... some of the operations are slow. Clicking on one of the boxes does NOT necessarily produce quick results. I have clicked on Developer Tools and waited over ten minutes for something to happen... with absolutely NO indication that anything was happening... just have to wait!!
    Two recomended "cures" ---
    1.) From what I can tell, this is because it checks a whole bunch of slow servers looking for updates every time you    try and install something. You can disable this behaviour in the "Install New Software" dialog by unchecking the       "Contact all update sites" option.
    2.) The issue is that Eclipse appears to be trying to contact mirrors that don't have a proper copy of all the files it's     expecting. My solution was to invoke eclipse with the following flag. Add it after "eclipse", or in eclipse.ini
    ** Neither did anything for me. I do believe that the day of the week -and- the time of day have a lot to do with it.
    What ho and foresooth!! It appears that you "Must Use" the add button and fill in the dialog and then it will accept the checks in the boxes. Prior to that ... it just sat there!!

  9. After the above step -and- a restart, you will be presented with a Welcome Screen that contains a lot more. You can do what you want with this screen -but- I am going to do some more setup(s). One is telling Eclipse where to find the NDK. -But- first we must install it.

  10. Need the NDK. Download it. Now then, pay attention here('I' didn't!! Read further down.), from version NDK r9 they have split the download file. For the latest, r10, it is:
          android-ndk64-r10-linux-x86_64.tar.bz2     and
          android-ndk-r10-cxx-stl-libs-with-debug-info.zip <-- Legacy version, probably NOT needed.
    Extract the NDK downloaded package using tools available on your computer, into the AndroidNDK dir. Normally the extraction tools will create a dir with the name android-ndk-. You can rename it IF you so desire. I did. Renamed is 'ndk'.
    Then in Eclipse, go to:
        Window -> Preferences -> Android -> NDK -> And set NDK path
    to point to your 'ndk' dir. The FULL path. These are SUPPOSED to be BACKWARDS COMPATIBLE... at least to my version 4.7 GCC.
    Now then, they made a claim about splitting the files -but- the first one was extracted into an android-ndk-r10 dir -and- that is where the second one wanted to go. Problem was/is that some of the dirs and files in the second one were the same as the first one. So "some" of the first one was over written. Not sure how to find out what is correct until we just try it. Ooooops... Didn't read it properly. The second download contains legacy NDK toolchains for that platform, which is only required if you are not using the current, recommended toolchain for your NDK builds. Think I am going to ReDo it and just have the 'First' one. IF I have troubles again, then I will Re-Install the second one. Gota play the guessing games...
  11. The CDT can either be installed as part of the Eclipse C/C++ IDE packaged zip file or installed into an existing Eclipse using the "Help -> Install New Software..." dialog and entering the p2 repository URLs listed below. We are doing the later.
          CDT 8.5.02 for Eclipse Luna CDT Downloads.
    This one was also a surprize. It claimed that CDT was already installed and it changed itself to an UpDate. I did not install the "Optional Features" at this time.

  12. Noowwww... we need to create our Android Project.
           File > New > Project > Select a wizard > Java > Java Project
    click on Next, and pick a Project Name. Ours will be AndroidCM11. Now the next item was tuff to figure out. Do NOT use the default loction... UN-check it. Enter the path to your code. Mine is/was:
    Click 'Finish'. Now go gitchur caffe... it is gona be a while reading all that code.
    May 18th, 2015 Note: It has been learned over these attempts that the Android OS you are trying to setup in here should already be compiled. It looks for some 'libraries' that are built during the compile. They are all in 'sub dirs' of the 'out dir' that gets created.

  13. It finished -and- we had some errors. Some 'not resoved' errors which are a problem in Eclipse's indexing. It is fixed below in our "Eclipse Kernel" section. Which is NOT true. It only fixes things for the Kernel. The 'not resolved' needs another library -and- I have NOT figured out which one... yet. It is blamed as a 'Java Problem'.

     May 18th, 2015/3:57am  Back at it. I was trying to switch over to Android Studio -but- not doing well there either. So I came back to here. In both, the Studio and Eclipse I had better results when I first stubled through the setup on both!! Seems like the more I try to "fix them" the worse they get. In my first Android Studio setup, I had used the 'Import an Eclipse' project and I could see a similar setup like my Eclipse. Now in my latest efforts, the Studio attempts are all a bust. So I have come back here to setup an Eclipse Project again to import into my Android Studio. Many UpDates and changes have been made to both, soooooo... don't know whether it is gona make any difference or not.

  14.  Note:  Also, at our SuSE System Install time, we installed the  Android Tools , 'adb' and 'fastboot'. Why? Well, then we won't have to be in any particular dir when executing them. Yes, we know that feature could be set up with the ones that come with the SDK -but- ... well, just but. They are both the same version:

  15. adb Commands can be found at: SDK Commands and fastboot commands at: fastboot Commands
    More on 'adb' here:  adb Doc   and at:  Androidsage  

The Kernel in Eclipse

I have successfully hacked and built android from Eclipse CDT! (Well, I haven't... but I used this guy's info to setup my Eclipse to help trouble shoot the kernel. It works)

I have used  this site   as a reference to Eclipse configuration for android kernel, which refers to an old revision of a generic kernel configuration tutorial that can be found  here  .

Remember that the first build has to be done from the shell, in order to create the .config and some other stuff.

Next, you will get "Type xyz could not be resolved" errors, but this is due to a  bug in Eclipse Indexer   that still isn't fixed in the latest build. The workaround to this is to switch code-analysis off in:
   Window -> Preferences -> C/C++ -> Code analysis
but I recommend to disable only the Mal-functioning features, which in my case were "Symbol is not resolved" and
"Type cannot be resolved".

Hope this helps, have fun hacking the kernel !

And we have  StackOverflow   to the rescue again!!! Those NOT Resolved things are what I have been fighting in my Eclipse Android Platform setup.

 Luna Help     Using Eclipse for develop Android app mixed Java and C/C++ code  
 WindowBuilder Pro Editor    WB Release 1.7    Learn Java in 30 Min    WindowBuilder Pro SWT Development  
 EclipseCpp How To    android ADT  

Claim was made that "some projects" are NOT in the make -but- included in the .classpath file. So, the cure is to 'make' them individually. -But- that did NOT work in our case.
 Import AOSP  

 September 4th, 2014 / 10:18am   Well, now... we finally found an answer to ALL our problems in trying to use Eclipse in our ROM developement. Searching for Android and Cyanogen did not help. Finally used AOSP in my searches... and got answers!!
Actually, you cannot build AOSP using Eclipse. The only thing you can do is to develop parts of AOSP using Eclipse.
To use Eclipse for the development you need to, at first, download and build AOSP from the command line, following the instructions  here  . Only after a successful build you can start to use Eclipse for development (the build system, during the build, generates some files, which may be missing without the build).    After that,   following the   instructions on the link,      Using_Eclipse  , you provided, you can install Eclipse as a development system for AOSP.
However, in 'my humble opinion', you have to do "a lot more research" in order to accomplish anything. 'I' could not get any decent operations with Eclipse UNTIL I found and installed Eclipse Luna.
StackOverFlow and Using Eclipse to browse and edit Android platform source code

 November 1st, 2013/4:46am  Ok, so we will add it now. First we create an  AndroidSDK  dir in our home dir. Then you need to download the SDK Tools, IF you have Eclipse installed already, -or- download the ADT Bundle, which contains Eclipse. Both can be found at: Android Developer
 May 27th, 2014/7:33am  Last evening tried to update this... had problems. Fix found at: StackOverflow and also at StackOverflow
Well we also had to add in the NDK. Get NDK

The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++.
         Android NDK Toolset  
This is also where we had our most trouble on our Luna setup. AS ALWAYS, we followed the directions, -or- so we thought, -but- we did NOT get the proper installation. Either that or it doesn't work the way they say it does. Right now, Sep 12th, 2014/11:17am, we can NOT get the "General C/C++" to appear as a selection in our "Project Properties" menu. Consequently, we can not set the paths and, consequently, we can not get an "Error Free" load.

We brought down our selection to:
We chose to install the ADT version: adt-bundle-linux-x86_64-20130522.zip   Notice that it is a 'zip' file. To install it we just used Dolphin, went to the dir, selected the file, Left clicked on it, then clicked on Extract, selected our  AndroidSDK  dir in our home dir and then clicked on OK. This created an adt-bundle-linux-x86_64-20130522 dir under  AndroidSDK  in our home dir. Whew.... Anywho, however you want to do it... that is the way we did it.
The 'claim' is you can put it anywhere you want. And that claim seems to be for ALL of them. As you will learn, or already have, we dumped this one for another later on anyway.

openSuSE Eclipse
Setup Eclipse Environment SDK Setup Libs
Kepler Help

Code: Select all
sudo zypper in fetchmsttfonts libstdc++33-32bit libGLU1-32bit libICE6-32bit libSM6-32bit libXrender1-32bit libfreetype6-32bit libglib-2_0-0-32bit libgmodule-2_0-0-32bit libgobject-2_0-0-32bit libgstaudio-1_0-0-32bit libgstinterfaces-0_10-0-32bit libgthread-2_0-0-32bit libmng1-32bit libpng12-0 fontconfig-32bit cups-libs-32bit
WPS Community


7. Install/Setup Android Studio

Well now, here it is years later and we are installing  Android Studio . Well it is only years later for our phone.  Android Studio  is newer. In fact, at this time it is still listed as Beta.

Now then, according to what we have read so far, it is similar to Eclipse. You just bring down the Tar or Zip file and extract it to where you want it. No installation process. (For Linux) -But- there-in lies a problem. It,  Android Studio , also includes a copy of the SDK -- which we already have installed!! Hmmmmmm...  Android Studio  installs it's own version of the SDK in it's own app folder. Now then, there was a write up on this and the gentleman talked about pointing to the "already installed" SDK because the version of the  Android Studio  he was installing was 0.1!! Well, we are getting 0.8 Beta. So, we'll just leave it as is and see what happens.

We have an  AndroidSDK  dir that we were/are using for the previous SDK. We will create a new one called... hmmmmm... let's see ... how's about ...  AndyStudio ... just for fun.

 August 15th, 2014/7:56am  Well, now it is only days later and we have finally tried to use the Studio. We want to use it to develope the Android Platform for our ReZound. Upon first grins, we were presented with a menu of choices. First one being to "Open a New Project" which we did not want to do. the next was to "Import a Project" which sounded reasonable... so we tried it. Nope! It wanted an "AndroidManifest.xml" file and it could not find one. I searched and there were/are a gazillion of them in our project. So which one??

Well, then, we decided to "Just Open" a project. Now understand, this was the FIRST time using this studio ... SO, we really didn't have a "former" project to open. -BUT- we had an "Eclipse .project" file in our "~/Android/cm11.0-rezound" dir. Which was/is our current Eclipse project. Well, guess what??? It accepted and loaded it!! In fact it is still loading it as I am typing all this in. It, like Eclipse, here at first start is taking a lonnggg time to load it. Hopefully that is cause it is making some file associations so's I can get some correlation between them. Now gona take a break while it finishes.

 Android Studio     Installing The Android SDK In Eclipse    My Eclipse/Android Studio Docs  

 June 16th, 2016  I had trouble getting this running on my newest machine. However, I found a 'fix' on  Stackoverflow :

  1. Open the folder bin under the directory where you installed your Android Studio.
  2. Find the file idea.properties and open it with Notepad++, UltraEdit, or other edit tools.
  3. Add disable.android.first.run=true as the final line and save the file. IF the line is already there -but- is set to false, then change it to true.
  4. Restart Android Studio.

 June 17th, 2016  And we have another change for this Studio:  Inotify Watches Limit  

1. Add the following line to either /etc/sysctl.conf file or a new file under /etc/sysctl.d/ directory:
     fs.inotify.max_user_watches = 524288  
2. Then run this command to apply the change:
     sudo sysctl -p --system  
And don't forget to restart your IDE.


8. Set up "repo"

Note: "repo" is a tool by Google, created to make access to git and gerrit very, very easy. This step only needs to be done once... unless you are redoing your system. -OR- there is an UpDate to repo, of which I was informed on February 9, 2014.
  1. $ mkdir ~/bin - (already have this dir)
    The following command sequence will get the 'repo' command and place it in your home dir bin dir.
  2. $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  3. $ chmod a+x ~/bin/repo
  4. Open ~/.bashrc in a file editor (e.g. kwrite)
  5. Add the following line:
    • PATH=~/bin:$PATH - (well, our home bin is already in our PATH)
  6. Save and close.
  7. Close your shell and re-open it.

Refer: Repo command reference

If you have a Git project you want to import, but Eclipse can't see it because it has not the .project file in its directory, here's the steps:  (Think you need a Git Init first.)

  1. File > New > Java Project: put in the name the name of the project's dir, so as Antimony said, the project will be automatically configured.
  2. You will see your project in the Project list, but it's not bound to Git yet.
  3. If it's a maven project, you can convert it to maven project now: right click on the project and select Configure > Convert to Maven project.
  4. Delete the project (DO NOT SELECT "Delete project from disk")
  5. Now you can import the project as a Git project from File > Import > Git Project
From: StackOverflow

9. Note:   Words of wisdom from Neo, _litz... and a few extra from me!

We conversed with Neo via a PM(Private Message) over on the XDA-Developers Forum. A synopis of this exchange is here: Neo Directions. We had the following steps in place before our conversation with Neo. He is knowledgable and experienced in this so we are following his path. Ours was essentially the same. It turns out that our biggest problem was to many suggestions by others and some changes made by the CM Team. Plus we got an outdated cherrypick. Talking to, and following Neo's directions got us up first time! Later: Got help from _litz in doing the 'hybrid' version. Through working with him, _litz, we finally got ourselves straight on the "Directory Paths". Should not have been this difficult -but- it happens. Believe that the 'Lord' has guided us through Neo and _litz to get the new phone system working.

 April 3rd, 2014  REV3NT3CH(Rev) has taken over the moderator job. Neo moved on to my next phone, IF I get another, the HTC One(M8). However, I am still enjoying my ReZound immensely -and- REV3NT3CH has claimed the patience to help/teach. -And- since he is a proponent of "Command Line" operations I may learn a little more and faster. It won't all be hidden in scripts. Just a thought.

Alllllrighty now... The previous 7 steps should be relatively straight forward... -and- they should be fit for 'ANY'  Android Build . We had concern over the 'C' differences but they turned out to NOT be a problem. In fact, we are going to build this again... using 'our dirs' just to prove that it can be done IF you have all the right stuff to begin with!     Annnndddd... as of January 7,8,9, 2014 we found that we need to use the 'same' directory structure used by the dev's!!
Now then PLEASE NOTICE that from here down is for building an  Android CyanogenMod  for the:
    HTC ReZound.

Now then, as stated this is primarily for an HTC ReZound, -but- it was originally for a Samsung Galaxy SIII I9300. So it should be modifiable by anyone for any other phone. Well, that is only partially true. A lot of the following stuff is ReZound specific. Use caution IF you are trying to do this on another phone.

From _litz: January 10th, 2014
 it's a matter of "what does what" ...

all repo init does, is pull down manifest.xml and start seeding the information in the .repo directory.

repo sync is what actually goes to each and every project listed in either manifest.xml or 
local_manifest.xml, and pulls the actual code down, project by project by project. The reason you use 
"-j 8" or "-j 16" is to allow it to pull multiple projects in parallel, thus speeding up the process.

manifest.xml       = all of the CM projects, android OS projects, etc.
local_manifest.xml = all of the device specific stuff that makes a Rezound a Rezound 
                            (and makes android actually work on a Rezound)

10. Set up source directories

 December 16th, 2013  Now then, Neo created a single level directory. We, however, had created a two level structure following the example mentioned above from riggnix out on the The XDA-Dev forum. Don't see why this can't continue to be followed... with some of our own little idiosyncrasies.

 January 8th, 2014/8:14pm  Lots of frustration has shown that this is not necessarily a "Free Format" directory structure. It is looking for the following structure. Anything else will fail. (January 8th, 2014)

  1. $ mkdir ~/Android
  2. $ mkdir ~/Android/cm11.0-rezound <-- 'Build -or- Source Tree root'

 May 26th, 2014/1:04am  Yeah, I work all hours. Anywho, more on the cache. It was being used -but- not the one that I thought. Finally opened my eyes and looked at the 'make.sh' file:

make.sh file
#/bin/bash # setup android cd ~/Android/cm11.0-rezound TOP="~/Android/cm11.0-rezound"; export TOP source build/envsetup.sh # setup ccache export USE_CCACHE=1 export CCACHE_DIR="$HOME/.ccache_cm11.0-rezound" ccache --max-size=8G # Increase the cache to 8gb (sufficient for most builds) # clobber if we supply clobber as arg1 if [ "$1" == 'clobber' ] then make clobber fi # make, logging all to either build.err or build.log { time brunch vigor 2>build.err ; } 2>&1 | tee build.log # note - build log is in "build.log", syserrs encountered are in "build.err" # any actual compilation errors will be in the build.log, not the build.err
Please notice just where the 'ccache' files are... so I removed the 'ccache' dir that I had previously created. The reason I couldn't see it being used is cause... it wasn't. Like I said previously... this is not a free format. They have set things up with 'specific dirs'. Not that that is bad, mind you, just that you need to be aware... so's you don't make the same mistakes that I did... learning and RE-learning.

 November 1st, 2013/8:24am  Well now, here is something to be done with no explanation as to why, what, or wherefore. We are trying to NOT do everything by rote. Would be nice to understand what and why something is to be done. We presume, at this point, that these dirs do not have anything to do with the SDK setup since that was in the step before. These dirs must have something to do with the 'System' that is going to be placed on your phone. Ah yes, that is it. This will be an 'Android' dir right in your home dir. We remember seeing that file structure on our phone... or think that is where we saw it. Anywho, we created it... them.
As it turns out, these dirs get the Android source code that is extracted by 'repo' in step 10.


11. Set up repositories

 December 11th, 2013/6:43pm  Ok. Things have changed in the manner of obtaining the source code...(again 7 Jan 14) And we need to be a little more explicit in what's happening. The "Fetch" in the following really means, copy the code at site addressed and paste it into a file named "initrepo_hybrid.sh" in your system dir. This will be your 'top level', also referred to as your base and it is referred to as your "Build -or- Source Tree root". (think I got'em all )

  1. $ cd ~/Android/cm11.0-rezound <-- 'Build -or- Source Tree root'
  2. Fetch cm11.0 initrepo_hybrid.sh https://raw.github.com/vigor/android...repo_hybrid.sh into this dir.
    The following "assumes" that you understand bash scripts. IF not check here. -And- You can trace what really happens with repo --trace init ...
    Now then, "repo init" is supposed to create a .repo dir -but- I do believe that we are creating one, on our own, because of the local_manifest manipulations.
    > date
    Sun May  4 08:36:00 MST 2014
    > df -H /home
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda7       458G  136G  322G  30% /home
    # IF .repo doesn't exist, create it. Then push it on the stack and cd into it.
    [ -d .repo ] || mkdir .repo
    pushd .repo
    # same logic as above.
    [ -d local_manifests ] || mkdir local_manifests
    pushd local_manifests
    # we are now in ~/Android/cm11.0-rezound/.repo/local_manifests.
    # Remove local_manifest.xml file IF it is there.
    rm -f local_manifest.xml
    # Bring over the latest ReZound manifest file.
    wget https://raw.github.com/vigor/android/cm-11.0/local_manifests/local_manifest_hybrid.xml
    ># wget https://raw.github.com/vigor/android/cm-11.0/local_manifests/local_manifest_hybrid.xml
    # --2014-04-20 08:15:36--  https://raw.github.com/vigor/android/cm-11.0/local_manifests/local_manifest_hybrid.xml
    # Resolving raw.github.com (raw.github.com)...
    # Connecting to raw.github.com (raw.github.com)||:443... connected.
    # HTTP request sent, awaiting response... 200 OK
    # Length: 996 [text/plain]
    # Saving to: `local_manifest_hybrid.xml'
    # 100%[==========================================================>] 996         --.-K/s   in 0s      
    # 2014-04-20 08:15:37 (29.1 MB/s) - `local_manifest_hybrid.xml' saved [996/996]
    # ReName it.
    mv local_manifest_hybrid.xml local_manifest.xml
    # pop back to .repo dir
    # pop back to cm11.0-rezound dir... which still 'looks' empty.
    # -But is not. It contains .git and .repo hidden dirs.
    # To initialize your local repository using the CyanogenMod tree
    #  -u: specify a URL from which to retrieve a manifest repository.
    #  -b: specify a revision, i.e., a particular manifest-branch.
    repo init -u https://github.com/CyanogenMod/android.git -b cm-11.0
    # > repo init -u https://github.com/CyanogenMod/android.git -b cm-11.0
    # Get https://gerrit.googlesource.com/git-repo
    # remote: Counting objects: 114, done
    # remote: Finding sources: 100% (114/114)
    # remote: Total 2800 (delta 1570), reused 2800 (delta 1570)
    # Receiving objects: 100% (2800/2800), 2.22 MiB | 1.37 MiB/s, done.
    # Resolving deltas: 100% (1571/1571), done.
    # From https://gerrit.googlesource.com/git-repo
    #  * [new branch]      maint      -> origin/maint
    #  * [new branch]      master     -> origin/master
    #  * [new branch]      stable     -> origin/stable
    #  * [new tag]         v1.0       -> v1.0
    #  == == ==
    # === Branches and New Tags which I am not gona include ===
    #  == == == 
    #  * [new tag]         cm-7.1.0   -> cm-7.1.0
    # Your identity is: Chuck Taylor <tr@compu.com>
    # If you want to change this, please re-run 'repo init' with --config-name
    # repo has been initialized in /home/ctaylor/Android/cm11.0-rezound
    # ctaylor@dusty-tr2:~/Android/cm11.0-rezound
    # >

    Alllllrighty now... We have a break in the script. Mainly cause I want to describe something that just happened. After the above, the cm11.0-rezound dir still 'looked' empty. But information concerning the CyanogenMod repositories was placed in the two hidden dirs. At this time we are not going to show what it was. Just suffice to know that something was done. The real action takes place in the next steps.

    # Now we change into .repo and find:
    # > lsd
    # local_manifests/  manifests/  manifests.git/  manifest.xml@  repo/
    #  Notice that manifest.xml is just a 'link' to another file. Just so happens it is manifests/default.xml
    # Push .repo and cd into it.
    pushd .repo
        sed -i "s/sync-c=\"true\"//g" manifest.xml
    # The above command removed the /sync-c parameter in default.xml
    # and copied it into manifest.xml
    # Now pop back into cm11.0-rezound
    # Now we repo sync and clone git repositories to .repo/projects for each project in manifest.xml
    # and local_manifest.xml, create working directories with .git having symlinks to the corresponding
    # bare repository, check out the branch specified in the manifest, and update .repo/project.list. A lot to do
    # and it takes some time.
    repo sync -j8
    # Push the vendor/cm dir and cd into it.
    pushd vendor/cm
    # get the prebuilts
    # contains prebuilt toolchains for cross-compiling on linux and darwin (MacOS X)
    # and a few tools for Windows. Cross-compiling allows you to build Android for
    # an architecture (such as ARM-based CPU) from another architecture (such as x86_64). 
    # > ./get-prebuilts 
    #   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    #                                  Dload  Upload   Total   Spent    Left  Speed
    # 100   178  100   178    0     0   1881      0 --:--:-- --:--:-- --:--:--  6592
    # 100  474k  100  474k    0     0  1082k      0 --:--:-- --:--:-- --:--:-- 1082k
    # Archive:  ./proprietary/Term.apk
    #   inflating: ./proprietary/lib/armeabi/libjackpal-androidterm4.so  
    #   inflating: ./proprietary/lib/mips/libjackpal-androidterm4.so  
    #   inflating: ./proprietary/lib/x86/libjackpal-androidterm4.so  
    # pop back to cm11.0-rezound

    Refer: Doc: the cm source  -  CyanogenMod  -  Repo command reference  -  How it Works

  3. Ok now, after you have fetched and created the file... and made it executable... execute it:
    $ time ./initrepo_hybrid.sh
    • This will take a while...
      from scratch on Jan 7, 2014:
      real    67m27.377s
      user    20m58.911s
      sys     7m54.347s
  4. Now then, as you probably have suspected, we did NOT execute initrepo_hybrid.sh this time thru. We did things manually. Wanted to see it work and wanted to be able to see just what is going on.

According to Neo(Head Honcho at the ReZound site.), and _litz(a Senior Member) execute the above command and it will do all the proper sync work for you. We do not init repo from vigor's android.git directly anymore as the android.git for cm changes often.
Now then, it will take an hour -or- two, depending on Internet speed, to create the following structure under your 'Build -or- Source Tree root':

ctaylor@dusty-tr2:~/Android/cm11.0-rezound <-- 'Build -or- Source Tree root'
> lsd
abi/       build/        device/      initrepo_hybrid.sh*  ndk/        sdk/
android/   cts/          docs/        kernel/              packages/   system/
art/       dalvik/       external/    libcore/             pdk/        tools/
bionic/    developers/   frameworks/  libnativehelper/     prebuilt/   vendor/
bootable/  development/  hardware/    Makefile             prebuilts/  vigor/
Last execution times:
real    68m13.360s
user    20m58.646s
sys     8m5.273s

 April 15th, 2015/4:11pm  The initrepo_hybrid.sh simply tells the system to initiate a repo init cm based on their android.git and then create a local manifest to sync all of our device tree specifics from our team git, then perform the repo sync for you. This was in an effort to keep current with any changes CM was to make to their android.git that would cause sync or build problems for us (in that projects that they've added were not getting pulled to our repo sync due to old android.git info).

12. UpDate source code

Notice the word 'UpDate'. If you just performed the previous step... skip this one!!   Run this when you want to wipe out ALL changes and re-sync your source tree.

Here we had to switch to 'root' in order to accomplish the 'UpDate'. Do believe that is cause we had to be 'root' in order to do the 'build'!! (Sometimes we hate computers.)

  1. $ cd ~/Android/cm11.0-rezound <-- 'Build -or- Source Tree root'
  2. IF you haven't already, copy fixrepo.sh from vigor/Build Scripts/ to this 'root' dir and make it executable.
  3. $ time ./fixrepo.sh
    • This will take a while... maybe.

At this point, IF you get:
  fatal: manifest 'default.xml' not available
  fatal: manifest default.xml not found
I am told you just run "fixrepo.sh" again. We'll see the next time it happens.
 January 14th, 2014/1:31am  Well, just running it again was NOT a good fix. It required a change in fixrepo.sh and then we could execute with success.

13. Cherry Picking -- FOR cm11.0

 April 20th, 2014/1:13pm  Well, as you can see, from here down things got screwier and screwier. But we will make it.

Please notice... at this time, 7 Jan 14, this section is for CM11 only!!     Annnnddd... there have been some changes. As noted above, the 'initrepo' scenario has changed and it looks like the 'cherry picking' scenario has changed. Operations now are such that we copy the 'scripts' that we wish to execute to our 'root' Build dir, which in this case is '~/Android/cm11.0-rezound', and execute them. These 'scripts' are in a dir called '~/Android/cm11.0-rezound/vigor/Build Scripts'. Don't like the 'space' in the dir name -but- I guess these folks came from a Windows environment.

$ cd ~/Android/cm11.0-rezound  <-- 'Build -or- Source Tree root'

Ok, once these scripts are copied, make them 'executable'.   chmod +x scriptname. Then execute the 'cherrypick.sh' script. (Note from the README:)

cherrypick.sh -- run this to apply all your local customizations and changes
      add arg "auto" to apply all changes automatically (instead of hitting a key after each one)
          add arg "check" to check for merged commits only
          return value of 1 = errors detected
          return value of 2 = merged commits detected
          example : ./cherrypick.sh auto

And I must say... these "cherrypicks" are to be performed AFTER initrepo or fixrepo.

 January 8th, 2014 / 8:57am   Last night we tried it by just entering:
    $ ./cherrypick.sh
-And- it was a failure... and once again in our distressed emotion, we forgot to record just what the failure was. This time we are going to time it -and- record it... and do it automagically. Hitting the key after each one was a drag. Oh, and one other thing... just for good measure we are going to make sure the environmet is set.

  1. $ cd ~/Android/cm11.0-rezound  <-- 'Build -or- Source Tree root'
  2. $ . build/envsetup.sh
  3. $ time ./cherrypick.sh auto | tee CherryPick-1-8-14.txt
  •  58461 - 29 Jan 14   The Pick

Cherry Picking Explained


14. Build CyanogenMod 11

Here we had to switch to 'root' in order to accomplish the build. Primarily cause of 'schedtool'.
OK. NO we didn't!! Just had to get our 'paths' straight!!! Had to add '/usr/sbin' to our $PATH.

  1. $ cd ~/Android/cm11.0-rezound
  2. $ . build/envsetup.sh
  3. $ time ./make.sh

Now here is where the Patience is needed. This has taken as long as 7.72hrs to finish on a Pentium D Two Core, 3.2Ghz with 4GB of RAM. -But- have also done it in as little as 1.63hrs. That was a fixrepo ReBuild, so most of it was compiled already.

Refer: Difference between breakfast, brunch and lunch

 January 1st, 2015 / 8:08pm  The "make" for this Android is a rather complicated entity. It consists of many scripts, some of them in Python. One, 'common.py', controls some of the "Options". And it has one of the 'Options' that will make your log file more verbose. -But- it didn't for me!!!

 January 5th, 2015 / 9:27am  Well, I didn't make it... Unless I fix it today. What? The Camcorder problem. Wanted to fix it by my three year mark. Only got 14½hrs left.
Just got told to remove "sepolicy" in the CM12 code.

 January 13th, 2015 / 4:25am  Having difficulties with the newest "Stable" version. It was recomended by my Team Members(Beau and Shaun) and upon grabbing it... it was missing a few things. Mainly the HTC dirs with the ReZound info. One of them was/is in vendor. You change into the vendor dir and use:
    git clone https://github.com/vigor/vendor_htc_vigor -b cm-11.0_hybrid htc/vigor
This will create a: vendor/htc/vigor/proprietary directory.
Allllrighty... had to copy over the:
    kernel/htc/vigor-3.0 dir
for some reason not all of it was obtained in the "repo sync".
Needed vendor/cm/propritary/. Copied the one from Oct CM11.
Needed hardware/qcom/media-legacy Copied the one from Oct CM11.
Needed hardware/qcom/display-legacy Copied the one from Oct CM11.

 November 21st, 2014 / 8:08am   Had trouble with a "clean, fresh" copy of CyanogenMod on the new machine. It appears that they have added stuff that is not cool. I tar'd the last version on the 'old' machine and un-tar'd it on this new PC. Was a bitch at first. The 16GB file would NOT copy to my 64GB USB flash. That was cause it was formatted as FAT32 -and- FAT32 will only allow "files" of 4GB max. Had to re-format the USB as NTFS. Fortunately Linux will read NTFS by default now. At least our openSuSE is that way.

Now to test this copy and see IF it works -OR- if I just wasted a lot of time. Before compressing it, I did a "make clobber" so it would be smaller. Now we need to do a build and see IF it still works. I deleted the project, the .project file -and- the CM11workspace. I left the VigorKernel project, which may or may not be a mistake.

Since I had done a "make clobber" before compressing, we don't need to do another. The "repo sync" will NOT be performed cause I want the 'old' code. -And- since there was NO resync, we won't need the "cherrypics". Should be able to just start a make.

 We have a BIG Error!!  Sometimes Computers make me so angry!! Now over on the 'old' PC I compressed the "Whole" cm11.0-rezound directory. -But- I didn't get all of it. There is a 'src' dir inside cm11.0-rezound/external/wpa_supplicant_8/hostapd/ that was 'empty'!! It is supposed to contain some drivers. Gona copy that portion from the 'old' PC and see IF anything else is missing. NOPE!! What the problem is... the "missing dir" is a link -and- links don't get compressed unless you do something special --- which I did not do!! So I need to re-create that link.

ARRGGHHH!! Gona redo it. There is a way keep the links. The '-h' option when you are 'UN-taring'.

 March 4th, 2014  Now then, we just had some difficulties creating a build of the latest. It failed with a missing library.

, , cherry pick the two commits, .
  1. make clobber -or- wipe to start clean. Please notice it is make and NOT make.sh
  2. 2:38 - 2:46am repo sync -or- initrepo_hybrid.sh IF you wiped
    repo sync -f
    -f is forced sync
    just ensures all files are pulled
    -j1 ensures all the roms repo's are up to date and deletes unnecessary reppo files
  3. cherry pick the two commits (These are to fix the camera) (Still Valid as of 4 May 14.)
    Actually, the first is to fix the camera. The second is to get the Spinning Wheel inside a Spinning Wheel boot animation... that I like. Really not sure IF it is still required for the Camera fix -or- not.
    • 7:43am cd into frameworks/av and then do this:
      git fetch https://github.com/vigor/android_frameworks_av cm-11.0 && git cherry-pick 1dd29957a2292c0398923ffff8e2aca47c5931ac
      From https://github.com/vigor/android_frameworks_av
      * branch cm-11.0 -> FETCH_HEAD
      [detached HEAD f491f16] Repeal CyanogenMod's Divorce with Legacy Devices <_< SMH
      Author: David <DavidEddlemon@Hotmail.com>
      9 files changed, 187 insertions(+), 3 deletions(-)
    • 7:59am cd into vendor/cm and then do this:
      git revert --no-edit b71b47d72b129915327f41653b06edaea5008534 || retval=1
      [detached HEAD 2c846bd] Revert "Bootanimation by Dima Skvarskyi"
      12 files changed, 0 insertions(+), 0 deletions(-)
      rewrite prebuilt/common/bootanimation/1080.zip (67%)
      rewrite prebuilt/common/bootanimation/1200.zip (64%)
      delete mode 100644 prebuilt/common/bootanimation/1600.zip
      rewrite prebuilt/common/bootanimation/240.zip (94%)
      rewrite prebuilt/common/bootanimation/320.zip (91%)
      rewrite prebuilt/common/bootanimation/360.zip (90%)
      rewrite prebuilt/common/bootanimation/480.zip (85%)
      rewrite prebuilt/common/bootanimation/540.zip (83%)
      rewrite prebuilt/common/bootanimation/600.zip (81%)
      rewrite prebuilt/common/bootanimation/720.zip (78%)
      rewrite prebuilt/common/bootanimation/768.zip (76%)
      rewrite prebuilt/common/bootanimation/800.zip (75%)
    • @kkozma brought it to my attention earlier today that there has been a code option in place since 2012 that is flag activated which can be activated to tell the system not to cache textures if they're expected to use a lot of VRAM (rmcc). There is also a flag option to make the system use RGB565 instead of ARGB8888 as RGB565 uses considerably less memory. This flag being used together with the texture caching should allow a smooth bootanimation on not so powerful devices (such as the ReZound) and hopefully save us memory on boot.
      That being said, I have committed the two flags and am building now without reverting to the older (much cooler imo) bootanimation mostly in an effort to drop our forced cherry-picking from 2 to 1 commit and free up memory (which anyone can appreciate). I can't guarantee (and do not expect) it to resolve our Camcorder Playback issue but it's definitely a step in the right direction.
      It's somewhat surprising that nobody picked up on this option since back then but, then again, the problem only surfaced at the introduction to the new boot animation in cm-11.0.
      I'll post it up when it completes built in about 45 min or so (provided it completes without incident).
  4. rebuild (This one uses make.sh!!)
  5. Do nothing more than those 4 steps.
make: *** [/home/ctaylor/Android/cm11.0-rezound/out/target/product/vigor/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1
Investigation showed the 'LINKED' dir empty. libwebviewchromium.so was/is missing. Was it missed in the repo sync -or- is it created in the compile??

Well I got through a build but I had to skip over the libwebviewchromium.so library that was making my build crash. This is the new Chromium WebView for KitKat, so there's not a lot of info out there yet. Others are having similar problems with it though. From: Android Central

We searched the Web and found that we possibly needed more memory. We can not add anymore physical RAM cause our machine is maxed. So, we need a bigger swap. But how?? Well, we found the following:

You decided to create a separate swap partition upon installation. You can't resize it online - even an offline resize is going to take a considerable amount of time and bear the potential risk of damaging your subsequent filesystem on /dev/sdc2.

The easiest option to work around this is to either create a new swap partition on a different disk you don't currently use (or can afford to offline for re-partitioning) or simply use a swap file within an existing filesystem (which comes with some minor performance penalty due to the filesystem overhead).

The general procedure to add a swap partition/file:

  • create either a new partition of type 82h or a new 8 GB file using dd if=/dev/zero of=/swapfile bs=1M count=8192
  • initialize it using mkswap /swapfile or mkswap /dev/sdXX
  • use swapon /swapfile or swapon /dev/sdXX respectively to enable your new swap space on-the-fly
  • add an entry to /etc/fstab to make sure your new swap space gets activated upon reboot

Your current swap partition remains in use, you may want to get rid of it for the sake of complexity reduction. Just use swapoff /dev/sdc1 to disable its usage for the moment and remove the reference in /etc/fstab

Refer: syneticon-dj on serverfault

In a terminal, type- "swapon" (without the quotation marks) this would indicate if swap is being used, and which partition is used for swap; and if my answer helped you, please mark it as solved :) - Aaditya Bagga Aug 14 '13 at 18:35

in linux, you can use

  • cat /proc/meminfo to see total swap, and free swap (all linux)
  • cat /proc/swaps to see which swap devices are being used (all linux)
  • swapon -s to see swap devices and sizes (where swapon is installed)
  • vmstat for current virtual memory statistics

You can have more than one swap file. They are assigned priorities. Make sure you have the fastest as the highest.

Refer: Unix & Linux

 Later:  Now then, since all we did AFTER the above swapfile creation was RE-start the 'make', we MUST assume that the lib was created during the compile ... and then tossed. Cause AFTER a SUCCESSFUL compile the lower two dirs libwebviewchromium_intermediates/LINKED/ and libwebviewchromium.so were NOT there!! However, we were able to install the code produced on our phone ... and it worked!

 March 21, 2014 / 12:03pm  We tried again and again were not successful. Had to go to Neo for help. what he expained thusly and ane what we did:

  • Latest build did not work... this was after a FULL wipe and restor. Trying to apply the latest cherrypicks:
    > git fetch https://github.com/vigor/android_frameworks_av cm-11.0 && git cherry-pick d14051be7a7f6c8c66a6446a9471c95f2e0f6bbe
    error: could not apply d14051b... Repeal CyanogenMod's Divorce with Legacy Devices <_< SMH
    > git revert --no-edit b71b47d72b129915327f41653b06edaea5008534 || retval=1
    # Not currently on any branch.
  • His, Neo's, reply:
    What's most likely happened, is that cm made changes to frameworks/av that cause incompatibility with my cherry pick to work with it.

    Basically, when you modify source, the pick will continue to work so long as the lines being changed continue to remain the same every time you attempt to change it. However, when a change is made to source that changes any of those lines you are modifying with the cherry-pick, you will get an error.. At that point, what you will need to do is a "git status" to see which specific files are having issues, then do a git reset to unstage the attempted changes. Pull the files that have the build conflict and make the changes manually based on the changes I made to the files in the cherry-pick. After you've done that, save them somewhere else, attempt to add the cherry pick, drop the modified files over the current files, then commit the changes.

    If you have difficulties or can't figure it out that's no problem, as I will be doing it soon.

    I replied and asked him to let me know when he had a fix.
  • Neo's reply:
    Fixed it. Use this instead now: https://github.com/vigor/android_fra...e2aca47c5931ac

    This kind of thing will continually happen from time to time unfortunately due to CM divorcing legacy devices.
  • Still had problem with cherries...
    You need to do a repo sync to clear any changes and and then try to apply the commit again. My build completed and I'm about to upload it.
  • That didn't work either ...
    cd into frameworks/av and do:
     git reset --hard  
    Then perform your repo sync from your root cm-11.0 directory
  • OK. the above fix worked and we have a clean repo. Now to do the 'cherrypick':
    > git fetch https://github.com/vigor/android_frameworks_av cm-11.0 && git cherry-pick 1dd29957a2292c0398923ffff8e2aca47c5931ac
    From https://github.com/vigor/android_frameworks_av
    * branch cm-11.0 -> FETCH_HEAD
    [detached HEAD 0d30e8e] Repeal CyanogenMod's Divorce with Legacy Devices <_< SMH
    Author: David
    9 files changed, 187 insertions(+), 3 deletions(-)
    Alllllrighty now... the cherrypick worked!!
  • Now the make... Later... we have success!!

15. Done!

You now should have a TWRP-flashable or a CWM-flashable .zip file

The Red date portion is naturally changeable.

 May 7th, 2014/4:54am  We did a 'make clean' to reduce the size of all this and then we "zipped it up" into cm11src.tgz for safe keeping. Had to reformat the 16GB USB Drive to NTFS so it would fit. At any rate, we have our latest 'working' KitKat source saved.

 September 5th, 2014 /1:24pm - Flashing F2FS Flash Friendly File System

 August 1st, 2014  And a special one for my 68th Birthday.

Package Complete: /home/ctaylor/Android/cm11.0-rezound/out/target/product/vigor/cm-11-20140801-UNOFFICIAL-vigor.zip

real    127m50.026s
user    140m30.528s
sys     18m34.175s

16. Possible build errors on openSuSE

Because Ubuntu is based on Debian and openSuSE is based on Slackware, you will posibly get some build errors. In the following section is a list of errors that can occur and how to fix them. However, these were from the "Originator" and he was using CM9 and openSuSE 12.1. We did not get the Errors. Just for reference in case you do.



  Some Defs

   Camera        Android Camera    Saving Media     Media Recorder  

   Services        Android Services  




  XDA-Dev conversations

These were conversations with the Devs over obtaining information concerning our ReZound. We would like to continue using it and making some mods.

16th February 2014, 05:05 AM -- from Me

Cool Can you all leave any hints...

Originally Posted by IAmTheOneTheyCallNeo View Post
It was time to move on like many before him. We still chat and share ideas in Google hangouts. I too will be upgrading at some point next month and development for this device from me will even further slow down. I will continue to do what I can of course but as many of you have already noticed, I haven't been nearly as active as I used to be. I hope to at least get my personal rom update out with tachyon-2.0 before then and hopefully with the data issue resolved. Same with this vanilla build.
Is there any chance that you and Flyhalf, Snuzzo and _litz could leave some hints on the changes that you make to get the CM11 software to work on the ReZound??? It appears that the repo just goes out and gets the latest CM11 code from their site and then we use the stuff in the Vigor directory. I know it is NOT all that simple, if it were, more people would be doing it.

So, I ask again, is there anything that you and the others can leave for us that "don't want to leave" but would like to update?? I finally have been able to get successful builds. Just had to get my directory structure straight.

I realize that this is a lot to ask... but then the worst that could happen is you say no. At any rate, to you and all the others,

Thanks a lot for all your efforts,

16th February 2014, 08:22 AM -- from Snuzzo


I'm a makefile, bash scripter, and themer type of guy. Usually can get stuff to boot/build out of existing code with minimal modification.

Sent from my Nexus 7 using xda app-developers app

16th February 2014, 03:19 PM -- from Neo

Whenever CyanogenMod or other similar aosp roms are built, it's simply the rom source plus our device tree. Our device tree consists of a handful of repos located at github.com/vigor. That's it. If you wanted to build cm for another device, you would simply clone in the necessary device tree into your current rom source and build it as well (provided the device tree has been modified to build correctly with the source).

16th February 2014, 10:40 PM -- from Snuzzo

Forget cm, what I have planned will blow the rom out of the water, heavy mixture of like 6 different ROMs.

17th February 2014, 01:46 AM -- from Me

Cool That's my question...

Originally Posted by IAmTheOneTheyCallNeo View Post
Whenever CyanogenMod or other similar aosp roms are built, it's simply the rom source plus our device tree. Our device tree consists of a handful of repos located at github.com/vigor. That's it. If you wanted to build cm for another device, you would simply clone in the necessary device tree into your current rom source and build it as well (provided the device tree has been modified to build correctly with the source).
The last part
(provided the device tree has been modified to build correctly with the source)
is what I am most curious about. I find it hard to believe that the "vigor tree" never needs any mods. Who maintains the "vigor tree"?? I presume it would be me IF it was my ROM that I was building...?? When you are creating your "Builds" are you, or someone else making any changes to the "vigor tree"?? Or do we just copy over the code from CM and see what works??

Again I presume that the "vigor tree" is primarily concerned with the "hardware", like the device drivers in Linux.?.?


---------- Post added at 01:46 AM ---------- Previous post was at 01:43 AM ----------

Originally Posted by Snuzzo View Post
Forget cm, what I have planned will blow the rom out of the water, heavy mixture of like 6 different ROMs.

Sent from my Rezound using Tapatalk 4
Cool.... When and where can we findit???


17th February 2014, 03:41 AM -- from Snuzzo


When its ready. No eta.

17th February 2014, 06:50 AM -- from Neo

If you were to just visit https://github.com/vigor, you will see which repos are modified, when they were last modified, who has been modifying them, what the modifications are for and why they are needed. You're correct to presume that it needs modification. This is most necessary when the platform changes completely. How do we know what needs to be fixed and how to fix it? Some of it we can just see what's wrong, other times it's experimental, and other times it's googling the issue to see if others on similar devices have solved the problem and we apply their solution to our device in a way that the code is accepted. As for the maintainers, I assumed the position to maintain the device tree after flyhalf left. However, I believed in a community maintained tree and thus, made the device tree a team effort and is unfettered to the following devs: _litz, kkozma, TheBr0ken, snuzzo, flyhalf, and myself. As you will notice, a great majority of these changes are being made by the first two listed. When I upgrade to the HTC One next month, this will no longer be my primary device and I will be passing Admin access over to both _litz and kkozma. I will of course remain a member of the team and provide/build what/when I can.
I hope to have enlightened you and anyone else who may have been curious about the answers to your questions.

Cool 19th February 2014 -- from Me

Thank you. It appears to be the same scenario that I have used in the past for my computer endeavors. Thanks for your time and to all the devs mentioned ... Thanks. Have had some conversations with _litz over in the "Build" section and he, like you, is very friendly. I'm sure the rest are also and hopefully can put up with my questions as I am learning an "old" phone.

Thanks to you and _litz I can create a "Build" and it does work on my phone. I have also set up the dsixda's Kitchen and plan to use it to make some changes to my own liking. After all, that is what this is all about in the first place... right??

Just received a "Pro Git" book in the mail so hopefully it will help answer questions also. Course it may cause more...

Thanks again for the information,
Yeah... I like the guy with glasses...

24th February 2014 -- from _litz

Originally Posted by Chucktr View Post
Hello _litz or anyone that will answer my question,

You have provided information about a cherrypic but have not really told me how you knew about it. Yes, you go to review.cyanogenmod.org -but- what says that the info is needed for a Rezound?? Sorry, if I am being stupid but I just don't see the connections... yet.

I am trying to build the code that is there at this time. It did not work with just a "fixrepo" so I now have an "initrepo_hybrid" going and when it is finished I presume that I will have to execute a "cherrypic" ... correct?? And that "should" be included in the code that I am downloading??

When you are looking at review.cyanogenmod, you want to look for a few things ...

1) does it look like an interesting change
2) does it apply to a specific device (e.g., does it say "kernel" or "device" with a device name) or is it generic CM (system, frameworks, apps, etc)
3) is it cm11?
4) is it merged? (if it's merged, you don't pull it as a cherrypick -- it's already in the code base)

At the moment, I don't believe we are pulling any cherrypicks at all.

28th February 2014, 10:39 PM -- from Me then Neo

Originally Posted by Chucktr View Post
Does this mean that I can do a fixrepo and build and get the same thing??

Repo sync, then commit this to frameworks/av:

Don't forget to git revert the merge in vendor/cm to use the older boot ani:
git revert --no-edit b71b47d72b129915327f41653b06edaea5008534 || retval=1

1st March 2014, 06:11 PM -- from Me then Neo

Originally Posted by Chucktr View Post
I'm still new at this... How do I do a 'commit' ??

I presume that the 'git' is performed from the command line 'inside' vender/cm ... correct??

cd into frameworks/av and then do this:
git fetch https://github.com/vigor/android_frameworks_av cm-11.0 && git cherry-pick d14051be7a7f6c8c66a6446a9471c95f2e0f6bbe
That is how you cherry pick from github.

git fetch urlOfRepo BranchName && git cherry-pick CommitID(sha)

28th February 2014, 10:27 AM -- from Neo

So I need to check through all merged commits between 2/3-2/25.... yay..... lol

It actually won't take long to find them all

EDIT: Here's where it all started: http://review.cyanogenmod.org/#/c/59396/

I encourage those interested to read the comments below listed in that commit :eye roll:.. Just goes to show how these guys look to the newer devices and drop the older one's fast... Keep in mind the HTC Rezound, being a legacy and msm8660 device, was a flagship phone not even two years ago.

EDIT: ok SO... It looks like we need to revert the following two changes:

59396 and then 60053. I'm going to do this right now and then rebuild.

-- from


  Build Errors Post

Possible build errors on openSuSE

Note: I used kwrite as text editor. To use another, just change kwrite to whatever editor you want to use.
Note: Open shell and got to ~/android/system

 November 5th, 2013/12:40pm  Well, the only 'Errors' that we encountered was the missing 'schedtool'. After we got that straight and moved into 'root' ... for the compile ... it went through the whole compile. Claimed to have created the file. So, we'll see... have to find the 'log' file and examine it. -But- there must not be anything serious or it would have 'killed' the make... In our humble opinion.
Further checking shows 'our file' is the same size as the ones they have for download on November 2nd & 3rd, 2013. Oooopps... maybe not. Their MD5 is 72 bytes and ours is 126.
Finally did get ours to work ... with the correct cherry picks. There error messages below are only left for reference, just in case they 'pop up'.

Error 1

make gets killed at some point

Fix: you need more RAM to finish the build.
   Well, evidently 4GB is enough cause our 'make' did not get killed.

Error 2

frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base 'android::KeyedVector<android::String8, android::sp<AaptDir> >' are not found by unqualified lookup
frameworks/base/include/utils/KeyedVector.h:193:31: note: use 'this->indexOfKey' instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
  • $ kwrite frameworks/base/tools/aapt/Android.mk
  • Add '-fpermissive' to line 31:
    • LOCAL_CFLAGS += -Wno-format-y2k -fpermissive

Error 3

frameworks/base/include/utils/KeyedVector.h:193:31: error: �indexOfKey� was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base �android::KeyedVector<android::String8, android::wp<android::AssetManager::SharedZip> >� are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use �this->indexOfKey� instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error 1
  • $ kwrite frameworks/base/libs/utils/Android.mk
  • Add '-fpermissive' to line 64:

Error 4

external/srec/tools/thirdparty/OpenFst/fst/lib/cache.h:136:11: note: use �this->SetState� instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
  • $ cd external/srec
  • $ wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff"
  • $ patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
  • $ rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
  • $ cd ../..

Error 5

development/tools/emulator/opengl/host/tools/emugen/main.cpp:79:9: error: �optind� was not declared in this scope
development/tools/emulator/opengl/host/tools/emugen/main.cpp:92:45: error: �optind� was not declared in this scope
make: *** [out/host/linux-x86/obj/EXECUTABLES/emugen_intermediates/main.o] Error 1
  • $ kwrite development/tools/emulator/opengl/host/tools/emugen/main.cpp
  • Add '#include <getopt.h>' to list of includes:
    • #include <getopt.h>

Error 6

host C++: liboprofile_pp <= external/oprofile/libpp/arrange_profiles.cpp
In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
external/oprofile/libpp/format_output.h:94:22: error: reference �counts� cannot be declared �mutable� [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1
  • $ kwrite external/oprofile/libpp/format_output.h
  • Remove 'mutable' from 'mutable counts_t & counts;' on line 94:
    • counts_t & counts;

Error 7

development/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp:345:65:   required from here
frameworks/base/include/utils/KeyedVector.h:193:31: error: �indexOfKey� was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base �android::KeyedVector<unsigned int, ShaderData*>� are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use �this->indexOfKey� instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libOpenglCodecCommon_intermediates/GLSharedGroup.o] Error 1
  • $ kwrite development/tools/emulator/opengl/Android.mk
  • Add '-fpermissive' to line 25:
    • EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive

Error 8

/usr/bin/ld: note: 'XInitThreads' is defined in DSO /lib/libX11.so.6 so try adding it to the linker command line
/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/emulator_renderer] Error 1
  • $ kwrite development/tools/emulator/opengl/host/renderer/Android.mk
  • Add new entry 'LOCAL_LDLIBS += -lX11' after line 6 as shown:
    • LOCAL_SRC_FILES := main.cpp
      LOCAL_CFLAGS += -O0 -g
      LOCAL_LDLIBS += -lX11

      #ifeq ($(HOST_OS),windows)
      #LOCAL_LDLIBS += -lws2_32

Error 9

external/llvm/include/llvm/ADT/PointerUnion.h:56:10: error: enumeral mismatch in conditional expression: �llvm::PointerLikeTypeTraits<llvm::PointerUnion<clang::Stmt*, const clang::Type*> >::<anonymous enum>� vs �llvm::PointerLikeTypeTraits<clang::eek:bjCInterfaceDecl*>::<anonymous enum>� [-Werror]
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs.o] Error 1
  • $ kwrite frameworks/compile/slang/Android.mk
  • Remove '-Werror' from line 22:
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter

Error 10

frameworks/base/libs/rs/rsFont.cpp:224:76:   required from here
frameworks/base/include/utils/KeyedVector.h:193:31: error: �indexOfKey� was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base �android::KeyedVector<unsigned int, android::renderscript::Font::CachedGlyphInfo*>� are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use �this->indexOfKey� instead
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libRS_intermediates/rsFont.o] Error 1
  • $ kwrite frameworks/base/libs/rs/Android.mk
  • Add '-fpermissive' to line 183:
    • LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable -fpermissive

Error 11

external/mesa3d/src/glsl/linker.cpp:1394:49: error: expected primary-expression before �,� token
external/mesa3d/src/glsl/linker.cpp:1734:59: error: �offsetof� was not declared in this scope
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] Error 1
  • $ kwrite external/mesa3d/src/glsl/linker.cpp
  • Add '#include <stddef.h>' to list of includes as shown:
    • #include <climits>
      #include <stddef.h>
      #include <pixelflinger2/pixelflinger2_interface.h>

Error 12

external/gtest/src/../include/gtest/gtest-param-test.h:287:58: note: �template<class Container> testing::internal::ParamGenerator<typename Container::value_type> testing::ValuesIn(const Container&)� declared here, later in the translation unit
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/gtest-all.o] Error 1
Fix 1:
  • $ kwrite external/gtest/src/Android.mk
  • Add '-fpermissive' to lines 52 and 70 (both lines contain same info)
    • LOCAL_CFLAGS += -O0 -fpermissive
Fix 2:
  • $ kwrite external/gtest/include/gtest/internal/gtest-param-util.h
  • Add '#include <stddef.h>' to list of includes as shown:
    • #include <vector>
      #include <stddef.h>
      #include <gtest/internal/gtest-port.h>

Error 13

frameworks/compile/slang/slang_rs_export_foreach.cpp: In static member function �static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)�:
frameworks/compile/slang/slang_rs_export_foreach.cpp:249:23: error: variable �ParamName� set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] Error 1
  • $ kwrite kwrite frameworks/compile/slang/Android.mk
  • change
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror
  • to
    • local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter

  CM10.2 Notes


These are the only picks I will be using in the CM-10.2-nightlies from now on:
Remove Default Wallpapers Packed into the rom since there are already wallpapers present in the cm wallpaper app.
					Fix memory leak in ManageApplication
					Settings: Fix the memory leak in Settings
					Fix WifiManager memory leak, change context to getApplicationContext
					Faster Status Bar
					fix possible buffer overrun and memory leak
					Speed up default Animation Scales
					Lower the RAM requirement for hardware acceleration
					Mms: Upon already initialized, return immediately (Memory Leak Fix)
					Mms: Fix javacrash in com.android.mms due to memory leak
These 10 are chosen specifically because they improve overall performance within the rom.

For added "features" you will need to flash a custom rom

I am going to rebuild cm-10.2 now with these commits.

Oh also, a commit I was going to start including just got merged. That is to disable wallpaper scrolling for the PhaseBeam Live Wallpaper to reduce lag and ram usage.
Originally Posted by _litz View Post
Very cool, thanks.

Is there a list anywhere of common "custom features" one can pick from to add to a custom rom?
There is this: http://review.cyanogenmod.org/#/q/statuspen,n,z
Which is where I pulled most of my stuff.

You are also free to explore and pick my tachyon branches for stuff I modified to work for us that will be present in my Tachyon update slated for tomorrow.

my git: https://github.com/IAmTheOneTheyCall...b=repositories
Post For rom builders - message from Neo

For those who line to build their own cm roms, or for any who are interested to know what goes on, I have uploaded a few of my scripts

This is the auto script I use that a cronjob runs automatically every day. It does a repo sync, cherry picks my 10 commits to source, builds the rom, generates the api changes and then uploads the new api, rom, md5, and boot.img to the hosted server. I have of course tweaked some of it to protect certain log in information but you can modify it how you like to work for you. Reading over it a bit you will gain an understanding of how it all works!

This script modifies your build source to allow the use of any custom gcc (android toolchain) of your choice! All that's required is you follow a couple rules outlined at the commits url listed at the bottom of the script. Take note that this is intended for use with the stock vigor kernel and that if you attempt it with any other, some extra source work may be required.

Curious about how Neo builds his roms? This script will build you a powerful and optimized base version of cm-10.2 that I use to create all my roms. it HEAVILY modifies your build environment and rom source. Aside from custom cherry-picks and after-rom-zip modifications, you too can build a super smooth noticeably improved version of cm-10.2

Feel free to use them as you like!