[Solution] Bypassing Lineage Setup Wizard - LineageOS News & Discussion

The Problem
Installing LineageOS from scratch, every time upon first boot there's the Setup Wizard, which now includes 13 screens to tap through. It would be much better to be able to boot straight into the home screen as any initial setup can be done faster either programmatically or through the menus. Unfortunately, bypassing the Setup Wizard is more cumbersome than one would expect.
adb shell echo "ro.setupwizard.mode=DISABLED" >> /system/build.prop used to work but no longer does.
Simply deleting /system/priv-app/LineageSetupWizard/LineageSetupWizard.apk before first run leaves the system in an unprovisioned state, where, in particular, the Home button does not work.
The Solution
The workaround I have come up with is to edit the wizard script, which is included as a raw XML file inside the APK, to bypass all the intermediate screens and take you directly to the last one. A patch and a modified APK file based on LineageOS 2018-08-21 build for Whyred is attached. The patch:
Code:
diff -urN LineageSetupWizard.orig/res/raw/lineage_wizard_script.xml LineageSetupWizard/res/raw/lineage_wizard_script.xml
--- LineageSetupWizard.orig/res/raw/lineage_wizard_script.xml Fri Aug 24 00:36:29 2018
+++ LineageSetupWizard/res/raw/lineage_wizard_script.xml Fri Aug 24 00:11:49 2018
@@ -21,57 +21,17 @@
wizard:firstAction="bluetooth_setup">
<WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_BLUETOOTH_SETUP;end" id="bluetooth_setup">
- <result wizard:action="welcome" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_WELCOME;end" id="welcome">
- <result wizard:action="locale" />
- </WizardAction>
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_LOCALE;end" id="locale">
- <result wizard:action="datetime" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_DATETIME;end" id="datetime">
- <result wizard:action="wifi_setup" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_WIFI_SETUP;end" id="wifi_setup">
- <result wizard:resultCode="1" wizard:action="sim_missing" wizard:name="no_sim" />
- <result wizard:action="choose_data_sim" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_SIM_MISSING;end" id="sim_missing">
- <result wizard:resultCode="1" wizard:action="location_settings" wizard:name="skip_sim" />
- <result wizard:action="choose_data_sim" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_CHOOSE_DATA_SIM;end" id="choose_data_sim">
- <result wizard:action="enable_mobile_data" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_ENABLE_MOBILE_DATA;end" id="enable_mobile_data">
- <result wizard:action="location_settings" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_LOCATION_SETTINGS;end" id="location_settings">
<result wizard:action="lineage_settings" />
</WizardAction>
<WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_SETTINGS;end" id="lineage_settings">
- <result wizard:action="fingerprint_settings" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_FINGERPRINT_SETTINGS;end" id="fingerprint_settings">
- <result wizard:action="lockscreen_settings" />
- </WizardAction>
-
- <WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_LOCKSCREEN_SETTINGS;end" id="lockscreen_settings">
<result wizard:action="finish" />
</WizardAction>
<WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.LINEAGE_SETUP_COMPLETE;end" id="finish">
<result wizard:action="exit" />
</WizardAction>
+
<WizardAction wizard:uri="intent:#Intent;action=org.lineageos.setupwizard.EXIT;end" id="exit" />
</WizardScript>
How It Works
The modified process leaves the first step, the Bluetooth Setup, intact as this part happens automatically in the background, and does not require any user action.
It then proceeds directly to the Lineage Settings screen, as this is actually the only remotely useful part of the Setup Wizard, where you have the chance to opt out of being tracked (the box is checked by default).
Once you uncheck the box, you are then taken straight to the final screen. This way, the whole setup is completed in 3 taps (or 2 if you don't opt-out).
How To Apply
The process is fairly standard. Here's one way to do it, step by step. Adjust to your environment:
adb shell mount /system (in Recovery) - or -
adb shell mount -o remount,rw /system (from within the OS)
apktool2 d -b LineageSetupWizard.apk.orig -o LineageSetupWizard
patch --binary --no-backup-if-mismatch -E -i reduce_setup_wizard_to_minimum.diff -p0
apktool2 b -c -o LineageSetupWizard-unaligned.apk LineageSetupWizard
zipalign -f 4 LineageSetupWizard-unaligned.apk LineageSetupWizard.apk
adb shell rm -f /system/priv-app/LineageSetupWizard/LineageSetupWizard.apk (in Recovery)
adb push LineageSetupWizard.apk /system/priv-app/LineageSetupWizard/
adb shell chown root.root /system/priv-app/LineageSetupWizard/LineageSetupWizard.apk
adb shell chmod 644 /system/priv-app/LineageSetupWizard/LineageSetupWizard.apk
adb reboot
How It Can Be Improved
The above solution is a bit crude, a better workaround could be one of these:
It should be possible to remove the APK and reproduce the steps it does to set the device as provisioned programmatically. The following discussion, which describes how to trigger the Setup Wizard (AOSP, not LineageOS) when it has already run, could be useful: https://android.stackexchange.com/q...-setup-wizard-at-next-boot-using-command-line
Alternatively, it should be possible to preload a simple APK that includes a customized wizard script, which then runs in place of the stock one. Thus, the equivalent result could be obtained without decompiling the stock APK. I could only find two articles in Chinese describing this process but it's more or less clear what the steps are: https://blog.csdn.net/Aaron121314/article/details/78355652 and http://lib.csdn.net/article/android/6988. In fact, the Lineage Setup Wizard APK already includes a "user" wizard script that just goes straight to the finish, although it's not obvious how to trigger it.
Related Material
An older thread about disabling stock Setup Wizard on Nexus 7 (which actually required Wi-Fi connectivity to complete): https://forum.xda-developers.com/showthread.php?t=1909602
A post on the official LineageOS Reddit mentions that tapping the 4 screen corners clockwise from top right will bypass the wizard. I could not confirm it but here it is: https://www.reddit.com/r/LineageOS/..._some_way_of_bypassing_the_lineageos/dkp15k1/
LineageOS Setup Wizard source code: https://github.com/LineageOS/androi...ee/lineage-15.1/src/org/lineageos/setupwizard
Hope some of this helps someone running into the same issue.

yay, thats nice, but I prefer to set some defaults, so less clicks are needed for the setup wizard not only during engineering
How can I modify the default locale in android?
By default, the android system's default location is US and language is en. But I want to set the default location to another country. So, the users will see their mother language when the first time
stackoverflow.com

How can I setup lineage setupwizard project on android studio ?

Yes, it's actual. Especially in 19.1 where there's no way to skip step of internet connection (offline setup).

Related

CM10 Building guide + Linux + troubleshooting

Guide to build cm10 for the n7000. It works for sure on linux.
If you want to build for another samsung phone replace all n700's with the new model number
First of all u need to:
Initialize you're build environment.
Follow the steps descibed here: Linux is at the top.
http://source.android.com/source/initializing.html //if you're on ubuntu 12.04 or higher skip the Installing the JDK part
Now do sudo apt-get install libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools pngcrush schedtool
Setting up android tools:
cd ~
mkdir android-SDK
cd android-SDK
wget http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz
tar -xvzf android-sdk_r20.0.3-linux.tgz
cd tools
./android update sdk -u --filter platform-tools,android-16,extra-android-support
export PATH=$PATH:~/android-SDK/android-sdk-linux/platform-tools
export PATH=$PATH:~/android-SDK/android-sdk-linux/tools
Now add the 2 lines above to ~/.bashrc using your favourite text editor
Getting the source:
mkdir -p ~/bin
mkdir -p ~/android/system
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin
Now add the line above to ~/.bashrc using your favourite text editor
cd ~/android/system/
repo init -u git://github.com/CyanogenMod/android.git -b jellybean
create ~/android/system/.repo/local_manifest.xml using this content: //If you want the latest kernel read the bottum of post 3 or read the comments.
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="teamhacksung/buildscripts" path="buildscripts" remote="github" revision="jellybean">
<copyfile dest="build.sh" src="samsung/build.sh" />
</project>
<project name="CyanogenMod/android_device_samsung_n7000" path="device/samsung/n7000" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_device_samsung_galaxys2-common" path="device/samsung/galaxys2-common" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_kernel_samsung_smdk4210" path="kernel/samsung/smdk4210" remote="github" revision="jellybean" />
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="jellybean" />
<project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="jellybean" />
</manifest>
cd ~/android/system/
repo sync -j16
cd ~/android/system/device/samsung/n7000/
Connect your galaxy note to the PC
./proprietary-files.sh
If you want to change the boot animation to the CM10 one or a different one read the last lines of post 3.
Building:
If you want to built android with a costum kernel you can use: export TARGET_PREBUILT_KERNEL=<path to zImage>/zImage
cd ~/android/system
repo sync -j16
./build.sh n7000
updating source:
repo sync -j16
Troubleshooting
Possible problems:
error: project –j16 not found
The – is a non unicode character. You can type the command by hand on you're keyboard instead of copy-pasting to fix this.
If that doesn't work use repo sync
Repo sync general error fix:
rm -r the directory it complains about
cd ~/android/system
repo sync -d -j16
Error nvram_net.txt_AU is missing or just in general and nvram_net.txt_ file:
open the file vendor/samsung/n7000/n7000-vendor-blobs.mk
and remove these lines:
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_AU:system/etc/wifi/nvram_net.txt_AU \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_IL:system/etc/wifi/nvram_net.txt_IL \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_SG:system/etc/wifi/nvram_net.txt_SG \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_TN:system/etc/wifi/nvram_net.txt_TN \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_murata_AU:system/etc/wifi/nvram_net.txt_murata_AU \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_murata_IL:system/etc/wifi/nvram_net.txt_murata_IL \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_murata_SG:system/etc/wifi/nvram_net.txt_murata_SG \
vendor/samsung/n7000/proprietary/system/etc/wifi/nvram_net.txt_murata_TN:system/etc/wifi/nvram_net.txt_murata_TN \
Also open the file
device\samsung\n7000/proprietary-n7000-files.txt
and remove all lines containing:
nvram_net.txt_murata_*
nvram_net.txt_*
Tips & Trics
Removing CM apps:
To remove roms manager terms or torch:
Edit the file: vendor\cm\config\common.mk
And remove
vendor/cm/proprietary/<App Name>.apk:system/app/<App name>.apk \
Removing other apps:
Edit the file : build\target\product\core.mk
Edit the file : build\target\product\full_base.mk
Edit the file : build\target\product\generic_no_telephony.mk
To change the name of the zip and some info:
Edit the file: vendor\cm\config\common.mk
And change the else part in the file:
ifdef CM_RELEASE
CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
else
CM_VERSION := <Enter new zip name here>
endif
Editing LCD density:
Edit the file device\samsung\n7000\n7000.mk
And change ro.sf.lcd_density to whatever you like.
a hint 320 is default
213 is nexus 7 mode
160 is tablet mode
Editing Trebuchet Settings:
Edit the file packages\apps\Trebuchet\res\values\config.xml
Edditing normal Settings:
Edit the file packages\apps\Settings\res\values\bools.xml
Finding out what went wrong:
./build.sh n7000 2> error.log
This means all errors and warnings will be logged to error.log
To find the actual error, you could use "grep -ins error error.log"
Moving the source:
Copy all the files to there new location.
This can be done with cp -rf old location new loaction
The force option is to avoid can't find .git errors
Warning the next part requires to be done all together without interuptions!!!
On the new loaction use rm -rf to remove the files. // I know this will delete the files. Force option is to avois sym link errors.
Now curl the repo to the new location using the steps in the first post.
Repo init as described in the first post.
Repo sync -j16 //The tric is it will restore all files that are still usable and redownload all corrput files
Changing to new kernel thanks to utacka:
local_manifest.xml - to use the latest 9100 kernel update // this file can be found in the .repo dir
change from teamhacksung/android_kernel_samsung_smdk4210 to teamhacksung/android_kernel_samsung_smdk4210_new
Also you may temporarily need to remove it from cm.dependencies in device/samsung/n7000, it'll do weird stuff (like syncing two different kernel repos to the same place) if you don't make that change.
Changing bootanimation:
Copy your new bootanimation zip file to: vendor\cm\prebuilt\common\bootanimation\<Your zip file>
Now make this change in vendor/cm/config/common.mk: //this wil be around line 46
PRODUCT_COPY_FILES += \
vendor/cm/prebuilt/common/bootanimation/<Your zip file>:system/media/bootanimation.zip
endif
The Cm10 bootanimation can be found here: http://goo.gl/x2KC8
Building time
My building time just to give you a heads up on what to expect:
System spec:
6 GB ddr3 ram
Core i5-2500 processor
2tb SATA6 samsung HDD
128GB vertex 2 SSD
Motherboard DH67CL intel
Graphic crad Radeon HD 6870 extreme edtion
VM-Ware workstation Ubuntu 12.04 64 bit headless with image on hdd and workstation on SSD with 4.5 GB ram and windows 8 release preview 64 bit as host OS.
Building after clean 53 min
Building after update 6 min.
Native Lubuntu 12.04 64 bit installed on HDD:
Building after clean 58 min
Building after update 12 min.
Just curious if you have any tips on building on OSX?? I have tried several times and cm10 just will not compile..
I commented out the quemu stuff.. but I still end up failing somewhere along the road. No problems at all on ubuntu VM, just takes 150+ minutes :crying:
madbuda said:
Just curious if you have any tips on building on OSX?? I have tried several times and cm10 just will not compile..
I commented out the quemu stuff.. but I still end up failing somewhere along the road. No problems at all on ubuntu VM, just takes 150+ minutes :crying:
Click to expand...
Click to collapse
I can't really help if i don't know the issue. The problem is most likely related to missing packages.
Could you try building with ./build.sh n7000 2> error.log
And then uploading/posting the contents of the error.log file.
The 2 means log all errors and warnings to the error.log file.
Some VM advise for the best speed:
Use a headless ubuntu server. Login trough ssh. \\The ssh part does not increase speed, but it allows copy pasting.
Give it all you're cores and a lot of memory in the VM settings.
Finally don't use the computer while building it slows the building down
Thanks, didn't even think about how many CPUs I gave to my VM.
Clean built in less than an hour now
Sent from my SCH-I535 using xda app-developers app
Thanks for the guide.. It was really helpfull to me, but I faced some problems, so I think it need an update in the following areas:
1 - Your config builds using the old Kernel... To build with the new one (Preview#4), you need to edit local_manifest.xml , and change teamhacksung/android_kernel_samsung_smdk4210 to teamhacksung/android_kernel_samsung_smdk4210_new . You also need to edit cm.dependencies in device/samsung/n7000 , the same way...
2 - Sun Java is no longer in Ubuntu repositories, so the instructions in: http://source.android.com/source/initializing.html will not work properly, and by following them you will end up building with OpenJDK, It will probably work, but is highly experimental and can result in inexpected problems.
mundano said:
Thanks for the guide.. It was really helpfull to me, but I faced some problems, so I think it need an update in the following areas:
1 - Your config builds using the old Kernel... To build with the new one (Preview#4), you need to edit local_manifest.xml , and change teamhacksung/android_kernel_samsung_smdk4210 to teamhacksung/android_kernel_samsung_smdk4210_new . You also need to edit cm.dependencies in device/samsung/n7000 , the same way...
2 - Sun Java is no longer in Ubuntu repositories, so the instructions in: http://source.android.com/source/initializing.html will not work properly, and by following them you will end up building with OpenJDK, It will probably work, but is highly experimental and can result in inexpected problems.
Click to expand...
Click to collapse
Thats the official building manual from google which also states that openJDK is not expermental for ICS and JB (different page).
This is also confirmed in the android-building group ...
Also OpenJDK 6 builds CM10 without any issues.
The sun java 6 can't be installed headless (if not in repository) because you need to click accept at the official download side....
Kernel is at 3th post bottum (Tips and Trics):
It will not be in the official manual because if it gets stable enough it will get merged in the CM10 repo
mnm1992 said:
Kernel is at 3th post bottum (Tips and Trics):
It will not be in the official manual because if it gets stable enough it will get merged in the CM10 repo
Click to expand...
Click to collapse
ooppss... Didn't saw that one..
I will try OpenJDK.
Thank you mnm1992, you really helped me, it is an all-in-one guide :laugh:.
Hi mnm1992, the manifest have changed to new ones since codeworkx have merged it into main streamline, check this: http://forum.xda-developers.com/showthread.php?p=31166205
Skickat från min GT-N7000 via Tapatalk 2

[GUIDE CM11] How to build your own CyanogenMod 11.0 ROM from sources for the Moto G

Make your 'own' KitKat-ROM today!
V1.1 - 20140219 Repos changed
V1.0 - 20140218 Initial release
Thank you note: Many thanks to dhacker29 for dedicating his time developing for this fine piece if hardware.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Overview
I. Preparation
II. Installation of the required packages
III. Installing Java
IV. The sources
V. Building the ROM
VI. Rebuilding with newest sources
I. Preparation
Things you need for building:
A computer
An internet connection
An open mind
Time
Patience
First of all, you need a running up-to-date Ubuntu/Linux system. I am using Ubuntu 13.10 64-bit.
Use the terminal to make the steps. A terminal window can be opened by pressing Ctrl+Alt+T. Every single command for the terminal is marked with a $ sign. Just paste every command (without the $ sign) to your terminal window and there shouldn't be any problem.
IMPORTANT: INSTALL EVERYTHING AS A USER WITH NORMAL RIGHTS. DON'T INSTALL AS ROOT!
II. Installation of the required packages (Ubuntu 13.10 64-bit)
Install packages:
Code:
$ sudo apt-get install bison build-essential curl flex \
g++-multilib gcc-multilib git-core gnupg gperf \
lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev \
libesd0-dev libncurses5-dev libsdl1.2-dev \
libwxgtk2.8-dev libxml2 libxml2-utils lzop \
openjdk-6-jdk openjdk-6-jre pngcrush schedtool \
squashfs-tools xsltproc zip zlib1g-dev
III. Installing Java
You need a version 6 Java Development Kit for building CM11.0. Usually, the SUN JDK 6 is recommended. But there is another way: you can use the OpenJDK 6. When you installed the required packages as described above, you will just need to configure your Java installation.
Check your Java version:
Code:
$ java -version
Verify the symlinks. Javac, Java, Javaws, Javadoc, Javah, Javap and Jar should all point to the right Java location and version:
Code:
$ ls -la /etc/alternatives/java* && ls -la /etc/alternatives/jar
If they are pointing to the wrong versions you have to change that to OpenJDK6.
Select the default Java version for your system:
Code:
$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javaws
$ sudo update-alternatives --config javadoc
$ sudo update-alternatives --config javah
$ sudo update-alternatives --config javap
$ sudo update-alternatives --config jar
That's it.
IV. The sources
Install repo:
Repo is a tool that makes it quite easy to download and maintain the sources of Cyanogenmod.
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ cd ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
Create the working directory:
Code:
$ mkdir ~/cm11
$ cd ~/cm11
Initialize Repo:
Code:
$ repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
and enter your credentials.
Download the sources:
Code:
$ repo sync
Wait until it's finished - takes some time to download the hefty 12 GB of source code!
Have a break, have a KitKat!
If the process stops responding, use Ctrl+C to break out of it and resume the download with another
Code:
$ repo sync
If you are running into a lot of syncing errors the reason might be that the 'repo sync' command is establishing four threads automatically. This might be too much. So try to change the command to run with one thread only by using
Code:
$ repo sync -j1
Initialize the environment
Code:
$ . build/envsetup.sh
Obtain the files:
Add repositories for the MOTO G by creating two files in the local_manifests directory. To see this directory, you have to press Ctrl-H in your file manager. If the directory isn't already there, create it with
Code:
$ mkdir ~/cm11/.repo/local_manifests
Use this code to create the file falcon.xml
Code:
$ gedit ~/cm11/.repo/local_manifests/falcon.xml
Paste the following lines to the editor (20140219: repos changed to CyanogenMod)
Code:
<manifest>
<project name="CyanogenMod/android_device_qcom_common" path="device/qcom/common" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_device_motorola_qcom-common" path="device/motorola/qcom-common" remote="github" revision="cm-11.0"/>
<project name="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_device_motorola_falcon" path="device/motorola/falcon" remote="github" revision="cm-11.0"/>
<project name="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="github" revision="cm-11.0"/>
<project name="[COLOR="DarkRed"]CyanogenMod[/COLOR]/android_device_motorola_msm8226-common" path="device/motorola/msm8226-common" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_display-caf-new" path="hardware/qcom/display-caf-new" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_media-caf-new" path="hardware/qcom/media-caf-new" remote="github" revision="cm-11.0"/>
<project name="CyanogenMod/android_hardware_qcom_fm" path="hardware/qcom/fm" remote="github" revision="cm-11.0"/>
</manifest>
Save the file.
Use this code to create the file vendor.xml (in case you already have a vendor.xml file because you are buiilding for multiple devices, just add the project line to your vendor.xml file)
Code:
$ gedit ~/cm11/.repo/local_manifests/vendor.xml
Paste the following lines to the editor
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="vendor/motorola" name="TheMuppets/proprietary_vendor_motorola" remote="github" revision="cm-11.0"/>
</manifest>
Save the file.
Run
Code:
$ repo sync
again to get the files needed.
Download the necessary prebuilts from cyanogenmod by running
Code:
$ cd ~/cm11
$ vendor/cm/get-prebuilts
And you're done syncing!
V. Building the ROM
Now build it:
Code:
$ brunch falcon
And the building process starts. Have patience now. Building takes around half an hour on fast systems and a lot more on older and slower machines.
When everything worked as it should you will find your new ROM-image in ~/cm11/out/target/product/falcon
It is called cm-11-DATE-UNOFFICIAL-falcon-zip. You can flash it via CWM/TWRP as usual.
VI. Rebuilding with newest sources
Whenever you like to update your sources and build a new version you have to run these four simple commands:
Code:
$ cd ~/cm11
$ repo sync
$ . build/envsetup.sh
$ brunch falcon
Compiling again takes less time than compiling took the first time because it's only building new parts while reusing old parts that haven't changed.
Happy building!
Reserved
Reserved
Good
Thanks for taking the effort to write this down.
Docker template for building CyanogenMod
Have you seen this?
http://forum.xda-developers.com/showthread.php?t=2650345
Guide changed
New V1.1 - 20140219 Repos changed
First post has been changed accordingly.
VI. Rebuilding with newest sources
Whenever you like to update your sources and build a new version you have to run these four simple commands:
Code:
$ cd ~/cm11
$ repo sync
$ . build/envsetup.sh
$ brunch falcon
Compiling again takes less time than compiling took the first time because it's only building new parts while reusing old parts that haven't changed.
Click to expand...
Click to collapse
Is it not necessary to also run this again?
Code:
cd vendor/cm
./get-prebuilts
cd ../..
PS: At the end of part IV youve got "get-prebuilts" instead of "./get-prebuilts".
if you could add option to build with Linaro-Toolchain
tazlooney89 said:
if you could add option to build with Linaro-Toolchain
Click to expand...
Click to collapse
+1
michalurban said:
Is it not necessary to also run this again?
Code:
cd vendor/cm
./get-prebuilts
cd ../..
Click to expand...
Click to collapse
It is the pre-built terminal program. You just need it the first time you build. Otherwise you would get an error message while compiling the ROM. It is unnecessary to get the program over and over again. Since it's pre-built, it gets its updates from the market/play store.
michalurban said:
PS: At the end of part IV youve got "get-prebuilts" instead of "./get-prebuilts".
Click to expand...
Click to collapse
Something got mixed up there. Changed my lines. But your solution works too, of course. Thanks for pointing me to it.
tazlooney89 said:
if you could add option to build with Linaro-Toolchain
Click to expand...
Click to collapse
Really depends on the time I will have on my hands and the interest the thread draws. Maybe I'll add some tweaks and tricks including a basic set of compiling against Linaro TC 4.8.x next week. We will see...
Is there an automatic way to have the build.prop file (the system/build.prop option ro.build.date) altered?
I have a script renaming the compiled rom - to make the filaname end with "-michalurban-$NOW" where $NOW is a variable containing date and time of creation. And I would like to remove the ro.build.date value and replace it with michalurban-$NOW so I would easily know if Im using Official NIGHTLY or my build ...
My Linux (Bash, whatever) skill is knee deep in manure Im afraid ... is this possible?
michalurban said:
Is there an automatic way to have the build.prop file (the system/build.prop option ro.build.date) altered?
I have a script renaming the compiled rom - to make the filaname end with "-michalurban-$NOW" where $NOW is a variable containing date and time of creation. And I would like to remove the ro.build.date value and replace it with michalurban-$NOW so I would easily know if Im using Official NIGHTLY or my build ...
My Linux (Bash, whatever) skill is knee deep in manure Im afraid ... is this possible?
Click to expand...
Click to collapse
I usually change the build.prop indirectly before the building process.
I delete a few files before rebuilding. E.g. the old build.prop with
Code:
rm -f out/target/product/falcon/system/build.prop
Whenever I am setting up a new build environment I edit the file common.mk in /vendor/cm/config
In line 317 or 323 you could try to change the value of CM_DISPLAY_VERSION or ro.cm.display.version to suit your needs.
Or you can do what I am doing - I usually add a time value to my ROMs (Rom-name and CyanogenMod-version under 'About phone'):
line 288 reads:
Code:
CM_VERSION := $(PRODUCT_VERSION_MAJOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
and I changed it to
Code:
CM_VERSION := $(PRODUCT_VERSION_MAJOR)-$(shell TZ=":Europe/Berlin" date +%Y%m%d\-%H%M%S)[email protected]$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
I also added [email protected] You can change practically everything here.
Then save the file and rebuild.
The CyanogenMod Version in 'about phone' should look like this when you flash the ROM:
Happy building!
Is it possible to do this on a NTFS-formatted drive? Im running low on space on my linux /home directory but Ive got plenty of space on my Win7 NTFS drive ... Im just afraid of file permission troubles ...
you can make an image file on the NTFS partition loopmount it, then format it to ext4.
Sent from my XT1032
Rhyn said:
you can make an image file on the NTFS partition loopmount it, then format it to ext4.
Sent from my XT1032
Click to expand...
Click to collapse
You mean to create a file on the NTFS partition, format it as EXT4, mount it somewhere and then use it for compilation via Ubuntu but "on" the NTFS drive? Wouldnt it mean a hard hit to the performance? I suppose it wont but as my PC is not high-end everything matters ...
BTW I found some guide on the Net and Ive modified it for my needs (probably lol). Is it ok?
Code:
# Create file to store EXT4 partition on NTFS partition (100GB)
dd if=/dev/urandom of=/media/D/linux.img bs=2048 count=50000000
# Create and format loop device (of the EXT4 file)
losetup /dev/loop0 /media/D/linux.img
mkfs.ext4 -b 1024 /dev/loop0
# Mount the new EXT4 file
mount -o loop /media/D/linux.img /home/michal/NTFSdrive
EDIT: Script tested and running fine (I got so excited I wrote this edit in czech not english the first time lol).
yeah I meant exactly that. This guide seems ok. The performance won't be as good as with a native partition, but won't be terribly bad either
Sent from my XT1032
Another weird question of mine:
I deleted all files, set the CCACHE to be 100GB using command "prebuilts/misc/linux-x86/ccache/ccache -M 100G" which was confirmed and started the whole process. But after successfully finishing compilation the directory is again "only" 50GB ... why? I expected it to be twice as large ...
michalurban said:
Another weird question of mine:
I deleted all files, set the CCACHE to be 100GB using command "prebuilts/misc/linux-x86/ccache/ccache -M 100G" which was confirmed and started the whole process. But after successfully finishing compilation the directory is again "only" 50GB ... why? I expected it to be twice as large ...
Click to expand...
Click to collapse
You have to inform the compiler that the cache will be used first, then config a directory and last, set the cache size to xx GB which creates the hidden dir. (to see it, use Ctrl+H)
Code:
$ export USE_CCACHE=1
$ export CCACHE_DIR=/your_path_here/.ccache
$ prebuilts/misc/linux-x86/ccache/ccache -M 100G
Btw: it's a good idea to use a 'make clean' first...
To see what's going on while caching, open another terminal, go to your cm11 root dir and execute
Code:
watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
Now, Ive got a script building the ROM for me. It usually works fine for first sync and compilation as well as for any secondary syncs. But sometimes it returns a message that something isnt present in some file (it differs) and the compilation ends with "Error 1" which I found to be "Out of memory". Now, the guide at CM web says that I should
Code:
edit: system/build/tools/releasetools/common.py
change: java -Xmx2048m to java -Xmx1024m or java -Xmx512m
BTW the right file path is
Code:
build/tools/releasetools/common.py
But Im curious if this change could be done in an automated way by the script (and Im not really familiar with sed, awk and all this regular expressions) ... If not, I guess Ill put some READ command before the compilation itself, giving me time to change it - or just add "nano system/build/tools/releasetools/common.py". But still, automatic way would be better.
EDIT: Solution (with JAVAMEM being set in the beginning of the script):
Code:
sed -i 's/Xmx2048m/Xmx'$JAVAMEM'm/' build/tools/releasetools/common.py
ADD:
Weird, when I try to set the directory and size for CCACHE, nothing happens - it stays at /home/michal/.ccache and 100GB ...
About two days ago a new problem emerged. I followed the guide exactly but in the end, after "brunch falcon"
Code:
make: *** [/home/michal/Build/MotoG-CM11/out/target/product/falcon/obj/SHARED_LIBRARIES/hwcomposer.msm8226_intermediates/hwc_utils.o] Error 1
It happened before so I erased all content of the directory and did all the commands from scratch. But its the same ... even after changing Java memory something (Xmx2048m) to 1024, which was recommended in the CM guide.

Increase in-call volume, Moto E LTE (single sim) (handset+headphones)

I have the Moto E 2015 LTE (single sim eu version) and had a hard time hearing what the other person were saying during calls.
This was a problem when trying to talk "normally", with the phone against my ear. (no headphones or speakerphone)
After some googling and testing i finally found a way to fix this.
This fix requires a working recovery (i used TWRP), but rooting is NOT required.
(rooting disables my camera)
There is a file called mixer_paths.xml located in /system/etc/ that contains the answer to my problem, witch im now sharing with the rest of the world.
I made the following changes:
(line 23-25)
<ctl name="RX1 Digital Volume" value="92" /> (was 84)
<ctl name="RX2 Digital Volume" value="92" /> (was 84)
<ctl name="RX3 Digital Volume" value="92" /> (was 84)
(line 34-35)
<ctl name="DEC1 Volume" value="92" /> (was 84)
<ctl name="DEC2 Volume" value="92" /> (was 84)
(line 50)
<ctl name="Speaker Boost" value="ENABLE" /> (was "DISABLE)
(line 486)
<ctl name="ADC1 Volume" value="8" /> (was 7)
(line 493)
<ctl name="RX1 Digital Volume" value="90" /> (was 84)
(line 504)
<ctl name="ADC1 Volume" value="8" /> (was 7)
If you are rooted you can edit the mixer_paths.xml in a root file manager, but you will have to mount /system as read/write first. You probably will still have to boot into recovery and wipe cashe.
Google is your friend for such endevours.
Included below are two files, the original one (default) and the modified version with the above mentioned value changes.
Install instructions:
To install, reboot your device into recovery mode and mount system partition.
Using the recovery mode file browser, find and rename the current mixer_paths.xml (change name to mixer_paths.xml.bak)
Connect your device to your computer and launch a ADB terminal.
Make sure youre in the directory where you unpacked the mixer_paths.xml
type these commands:
adb push mixer_paths.xml /system/etx/mixer_paths.xml
Use the recovery mode to chmod the new file, chmod 755 should work, but i did chmod 777.
Use the recovery mode to wipe cashe.
reboot your device.
Restore instructions
To restore to original, boot to recovery, delete your modified mixer_paths.xml file and rename mixer_paths.xml.bak to mixer_paths.xml.
When youre done, wipe cashe and restart.
In case you deleted it instead of renaming it, download the default one below and follow the install procedure.
A warning; too high volume will damage your device and boosting the volume might degrade your audio quality.
reserved
General help Moto E
I have tried Google but I'm still lost (sorry). I am using TWRP and my phone is a XT1527 Moto E (2nd) Surnia 2015, so can I use your file or should I edit the existing (phone) file?
General: Do I use TWRP on my phone (in recovery mode) to mount the System on the phone (SD or internal) memory?
Thanks in advance,
Glen

Building AOSP for Manta

Dear friends,
I really need your help compiling PureNexus for Manta. Here is what I did:
1) set up the environment. I'm fairly sure that I did this right, on Ubuntu 16.04. I installed the required libs, openjdk7, android sdk, set the PATH, installed repo ofc.
2) created a folder for the project, did the repo init as specified in the github manifest:
Code:
repo init -u https://github.com/PureNexusProject/manifest.git -b mm2
Next, before doing a repo sync, I added a local manifest in .repo/local_manifests/local_manifest.xml, with the following content:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="gh" fetch="git://github.com/" />
<project path="kernel/samsung/manta" name="CyanogenMod/android_kernel_samsung_manta" remote="gh" revision="cm-13.0" />
<project path="device/samsung/manta" name="CyanogenMod/android_device_samsung_manta" remote="gh" revision="cm-13.0" />
<project path="vendor/samsung/manta" name="TheMuppets/proprietary_vendor_samsung" remote="gh" revision="cm-13.0" />
</manifest>
This is what I was able to find regarding manta. I added the device tree and kernel from Cyanogen's, and the vendor stuff from TheMuppets.
3) repo sync -j5 successfully downloaded everything, so it was build time!
4) As manta is not officially supported, I had to add and edit a few things here and there:
4.1) in vendor/nexus/products/AndroidProducts.mk I added this code:
Code:
ifeq (nexus_manta,$(TARGET_PRODUCT))
PRODUCT_MAKEFILES += $(LOCAL_DIR)/nexus_manta.mk
endif
4.2) next I actually created the nexus_manta.mk. I copied and adapted the flounder one, it ended up like this:
Code:
#Include Pure Nexus tablet configuration
include vendor/nexus/configs/nexus_tablet.mk
# Inherit AOSP device configuration for flounder
$(call inherit-product, device/samsung/manta/aosp_manta.mk)
# Override AOSP build properties
PRODUCT_NAME := nexus_manta
PRODUCT_BRAND := Google
PRODUCT_DEVICE := manta
PRODUCT_MODEL := Nexus 10
PRODUCT_MANUFACTURER := Samsung
# Device Fingerprint
PRODUCT_BUILD_PROP_OVERRIDES += \
PRODUCT_NAME=mantaray \
BUILD_FINGERPRINT=google/mantaray/manta:6.0.1/MOB30P/2960889:user/release-keys \
PRIVATE_BUILD_DESC="mantaray-user 6.0.1 MOB30P 2960889 release-keys"
4.3) finally i edited vendor/nexus/vendorsetup.sh to add this line at the end:
Code:
add_lunch_combo nexus_manta-user
5) After this I did:
Code:
. build/envsetup.sh
lunch
picked number 31, nexus_manta-user, all seemed fine.
6) Time to build, "brunch manta". This won't end up well, the current issue is:
Code:
make: * No rule to make target '/home/android/android/system/out/target/product/manta/obj/SHARED_LIBRARIES/libinvensense_hal_intermediates/export_includes', needed by '/home/android/android/system/out/target/product/manta/obj/SHARED_LIBRARIES//import_includes'. Stop.
make: * Waiting for unfinished jobs....
I must admit that manta and exynos 5 arent really popular, cause I often never found anything useful.
Anyway, I'm stuck there, but in the next post I'll add something that I tried to get started again, but didn't work out.
Thank you so much everyone,
TD
The error told you the issue
manta make file requested libinvensense_hal and your build has no Android.mk claiming to build such a thing
i published instructions a while go to build manta M, try following those to start with
dmitrygr said:
The error told you the issue
manta make file requested libinvensense_hal and your build has no Android.mk claiming to build such a thing
i published instructions a while go to build manta M, try following those to start with
Click to expand...
Click to collapse
Wow that is a completely different execution step by step.... Hopefully the mix of the two will produce something.... Thanks man!
dmitrygr said:
The error told you the issue
manta make file requested libinvensense_hal and your build has no Android.mk claiming to build such a thing
i published instructions a while go to build manta M, try following those to start with
Click to expand...
Click to collapse
Mate do you think that you can help me with this new error?
I can't really understand how it can happen, since it's not really on a part of code that is related to Manta, isn't it?
Code:
frameworks/av/media/libstagefright/codecs/mp3dec/SoftMP3.cpp:268:17: error: format specifies type 'unsigned long' but the argument has type 'OMX_U32'
(aka 'unsigned int') [-Werror,-Wformat]
Thank you so much,
TD
tylerdurden83 said:
Mate do you think that you can help me with this new error?
I can't really understand how it can happen, since it's not really on a part of code that is related to Manta, isn't it?
Code:
frameworks/av/media/libstagefright/codecs/mp3dec/SoftMP3.cpp:268:17: error: format specifies type 'unsigned long' but the argument has type 'OMX_U32'
(aka 'unsigned int') [-Werror,-Wformat]
Thank you so much,
TD
Click to expand...
Click to collapse
Did you ever manage to fix this? I'm having the same error trying to build AOSP6 for a different device (lt03wifi, Galaxy Note 10.1 2014).
it is just a type mismatch. this particular one is harmless on a 32-bit arm device (sizes are same)
fix it in source code (cast to int)

[GUIDE] build lineageOS for titan in ubuntu 16.04 (or Debian 8) environment

LineageOS is in an official state, so that's for the ones with no patience, like me. I want my nightlies!! So DIY!!
This is not about flashing. Only how to build a ROM in an Ubuntu (meanwhile Debian 8) environment! So I have nothing to do with what you do with the finished Zip-file.
I am not responsible for your phone or your computer! Everything you read here resulting in taking action is at your own risk!
All credits go to all devs and supporters here on XDA, CyanogenMod / LineageOS for all their work they provide for free on github. We just take thankful the benefit!! Mainly LuK1337 provided the best hints and informations!
## These sites will help you:
http://wiki.lineageos.org/titan_build.html
http://web.archive.org/web/20160722172103/http://wiki.cyanogenmod.org/w/Envsetup_help
http://web.archive.org/web/20160421170720/http://wiki.cyanogenmod.org/w/Build_for_titan
http://gojira.tokyo/?building_cyanogenmod_14_from_source
http://source.android.com/source/initializing.html
## GIT and repos
https://forum.xda-developers.com/showthread.php?t=2329228
## SET UP THE ENVIRONMENT
## Install (in VMware Player or Virtualbox?) 64-bit-Ubuntu 16.04.1 LTS / 8GB RAM / 100GB HDD
## All following is done in a terminal
## These are the packets you need (if you use debian some will fail (e.g. JAVA) -take them out of the list manually):
Code:
sudo apt-get install android-tools-adb automake bc bison build-essential bzip2 ccache curl dpkg-dev flex git gnupg gperf libbz2-1.0 libesd0-dev libghc-bzlib-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop make maven openjdk-8-jdk pngcrush python-networkx schedtool squashfs-tools xsltproc zip zlib1g-dev g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev lib32readline6 lib32readline6-dev
## To install JAVA 8 in Debian:
Code:
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer
## Add all needed paths and the ccache command (following two lines) to the end of ~/.bashrc
## copy the whole box to your terminal and the lines will be added...
Code:
echo "export PATH=~/bin:~/android/lineageos/toolchain:~/android/lineageos/external/v8/build/toolchain:~/android/lineageos/prebuilts/sdk/tools:$PATH
export USE_CCACHE=1" >> ~/.bashrc
## Maybe here is a good point to restart the Ubuntu machine once...
## I'm not sure if necessary you need an account at https://github.com but it complains when not...
Code:
git config --global user.email "your-GIT-REG-email"
git config --global user.name "your-GIT-REG-username"
Code:
mkdir -p ~/bin
mkdir -p ~/android/lineageos/
mkdir -p ~/android/lineageos/.repo/local_manifests
## get the repo command
Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
## The right git-repos to sync are in: ~/android/lineageos/.repo/local_manifests/roomservice.xml
## copy the whole box into the terminal and the roomservice.xml will be written:
Code:
echo "<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="ssh://[email protected]" name="bitbucket" />
<remote fetch="ssh://[email protected]" name="gitlab" />
<remote fetch="git://codeaurora.org/" name="caf" review="codeaurora.org" sync-c="true" />
<project name="LineageOS/android_device_motorola_titan" path="device/motorola/titan" remote="github" />
<project name="LineageOS/android_device_motorola_thea" path="device/motorola/thea" remote="github" />
<project name="LineageOS/android_device_motorola_msm8226-common" path="device/motorola/msm8226-common" remote="github" />
<project name="LineageOS/android_device_qcom_common" path="device/qcom/common" remote="github" />
<project name="LineageOS/android_kernel_motorola_msm8226" path="kernel/motorola/msm8226" remote="github" />
<project name="LineageOS/android_packages_resources_devicesettings" path="packages/resources/devicesettings" remote="github" />
<project name="TheMuppets/proprietary_vendor_motorola" path="vendor/motorola" remote="github" />
<project name="TheMuppets/proprietary_vendor_qcom_binaries" path="vendor/qcom/binaries" remote="github" />
<project name="TheMuppets/proprietary_vendor_asus" path="vendor/asus" remote="github" />
</manifest>" > ~/android/lineageos/.repo/local_manifests/roomservice.xml
## Get the github to the machine
Code:
repo init -u git://github.com/lineageos/android.git -b cm-14.1
## additional folders to put the repos and binaries for building
## O.K. lets start the first try
Code:
cd ~/android/lineageos/
source build/envsetup.sh
Code:
repo sync
## Wait VERY LONG (really hours) and IF STUCKS, press "ctrl+C" and once more "repo sync" again.
## Then Extract proprietary blobs from the phone
## the device must be connected via USB cable (adb has to be functional) and go to the TITAN directory:
Code:
cd ~/android/lineageos/device/motorola/titan
## and
Code:
./extract-files.sh
## and maybe (only once before the first time of building) configure the CCACHE, which makes compiling much faster:
Code:
prebuilts/misc/linux-x86/ccache/ccache -M 50G
##WHEN ALL IS DONE
## we now can forget all steps before! ...Until we run in trouble - then look at the bottom or restart from scratch.
## In my experience now it shows, that the compiling processes recompiles and replaces "new synced packets" in the out-directory and leave the untouched untouched. So we can (nearly) always restart a broken build process... maybe the devs will VETO this. Some delete the whole out-directory every time - I think you can easily start over
## However, what we should do everytime before we start building is:
Code:
cd ~/android/lineageos/
source build/envsetup.sh
repo sync
## OKAY, lets build.... Nooooooo! Not yet!
## The most Important question now:
## "Do you want to have a ROOTED phone?" If yes, then you have to
Code:
export WITH_SU=true
## If you don't want root then just start with:
Code:
brunch titan
## Now you can wait again for hours and hopefully got finished
## ~/android/lineageos/out/target/product/titan/lineage-14.1-2017****-UNOFFICIAL-titan.zip
------------------------------------------------------------------------
------------------------------------------------------------------------
## TROUBLE with compilation stops / stucks with error:
## JACK-SERVER error:
## reinstall the Jack Server
Code:
cd ~/android/lineageos/prebuilts/sdk/tools
jack-admin kill-server
jack-admin uninstall-server
jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
## sometimes a permission problem:
Code:
chmod 700 ~/.jack-server
find ~/.jack-server -type f -print0 | xargs -0 chmod 600
chmod 664 ~/.jack-settings
##Also helpful if Java stops compiling is to limit the usage of RAM:
Code:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
##NINJA error:
## increase RAM of VM, or you cant put
Code:
export USE_NINJA=false
command to the .bashrc
## APPS/org.cyanogenmod.platform-res_intermediates error:
Code:
javac: file not found: ~android/lineageos/out/target/common/obj/APPS/org.cyanogenmod.platform-res_intermediates/src/cyanogenmod/platform/Manifest.java
Usage: javac <options> <source files>
use -help for a list of possible options
ninja: build stopped: subcommand failed.
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '~/android/lineageos'
#### make failed to build some targets (25:19 (mm:ss)) ####
When this happens, give a:
Code:
mka org.cyanogenmod.platform-res
This also works for most other Errors, which stop the process... Find the line with "****_intermediate" and give the "mka ****" WITHOUT the "_intermediate".
After compiling of the single package is finished - once more:
Code:
brunch titan
## New one: *** This repo is now deprecated. Move your blobs to your device's vendor repo..
Code:
find: "~/android/lineageos/out/target/common/obj/SHARED_LIBRARIES/libwifi-hal-mock_intermediates": Datei oder Verzeichnis nicht gefunden
build/core/package_internal.mk:143: Empty argument supplied to find-subdir-assets
./vendor/qcom/binaries/Android.mk:1: *** This repo is now deprecated. Move your blobs to your device's vendor repo..
The solution is given here by mirkosrc:
Code:
~/android/lineageos$ mv vendor/qcom/binaries/Android.mk vendor/qcom/binaries/Android.mk.bak
Now we have the proper solution given by kessaras in post #37 (thanks a lot!!):
the solution is not to rename the .mk or even remove that repo since we ignore it by renaming the .mk.
The proper solution is to edit the .mk and remove the 1st line that redirects to an error on purpose because its depricated (old).
This way, IF the .mk is needed during the build, it will get called.
If its not needed , then the compiler will just not use it.
At least thats my point of view here. We dont just remove things by renaming. We add them properly in case they r needed. If they are not needed then they wont be used.
Click to expand...
Click to collapse
## LAST OPTION:
When nothing works at all anymore you can delete the whole content of the out-folder:
Code:
rm -rf ~/android/lineageos/out/*
But then the first compiling last very long again...
## If the DISK runs full,
look into android/lineageos/out/target/product/titan/obj/PACKAGING/target_files_intermediates and delete the files...
## repo sync crashes with error:
Code:
repo sync -j1 -f --force-sync
------------------------------------------------------------------------
Thank you for this guide. I'll try to build CM14.1 here
Danilo-Sanchez said:
Thank you for this guide. I'll try to build CM14.1 here
Click to expand...
Click to collapse
Ah, great keep me informed, so I can make it better. Try myself from the scratch and have found some issues in the chronological order... is getting better. So look out for changes
mankokoma said:
Ah, great keep me informed, so I can make it better. Try myself from the scratch and have found some issues in the chronological order... is getting better. So look out for changes
Click to expand...
Click to collapse
Ok. As soon as I try I'll let you know
For the Ninja error:
export USE_NINJA=false
Has been asked for RAM usage. Battery life is as CM always have been - not the best, could be worse, so what?
mankokoma said:
Has been asked for RAM usage. Battery life is as CM always have been - not the best, could be worse, so what?
Click to expand...
Click to collapse
Thank you
It's almost the same RAM usage as CM13.
i will also try to build the rom from ur guide........really thanks.......so much for the guide
:laugh:Thank you for share!!!:good:
@mankokoma Can I extract proprietary files even if I'm not using CM14.1?
Danilo-Sanchez said:
@mankokoma Can I extract proprietary files even if I'm not using CM14.1?
Click to expand...
Click to collapse
Why not? As far as I can follow the scripts, the files will be extracted (in our case) to ~/android/lineageos/vendor/motorola/titan/proprietary/... (and maybe also to /android/lineageos/vendor/motorola/msm8226-common/proprietary...) I'm not sure if they are always the same for the different Android Versions, but I assume: Yes.
I put some more order in the guide and cleaned the chaos in case there is still interest in building LineageOS yourself. In fact preparing of the environment and the first setup and building of the ZIP lasts really (annoying) long but the following building processes are done within ONE and a HALF hours. So I enjoy immediately the last build when there has something good changed in the Repos: https://www.cmxlog.com/14.1/titan/
Have a lot of fun!
mankokoma said:
I put some more order in the guide and cleaned the chaos in case there is still interest in building LineageOS yourself. In fact preparing of the environment and the first setup and building of the ZIP lasts really (annoying) long but the following building processes are done within ONE and a HALF hours. So I enjoy immediately the last build when there has something good changed in the Repos: https://www.cmxlog.com/14.1/titan/
Have a lot of fun!
Click to expand...
Click to collapse
Did you managed to build Lineage OS 13.0?
I've tried to build Lineage OS 13.0 but unfortunately it didn't work.
Danilo-Sanchez said:
Did you managed to build Lineage OS 13.0?
I've tried to build Lineage OS 13.0 but unfortunately it didn't work.
Click to expand...
Click to collapse
No, I didn't. "Shoot from the hip": Downgrade Java to 1.7 first. Maybe it's easier to building up Ubuntu 14.x environment as I don't know about gcc or other libs-things for CM13
mankokoma said:
No, I didn't. "Shoot from the hip": Downgrade Java to 1.7 first. Maybe it's easier to building up Ubuntu 14.x environment as I don't know about gcc or other libs-things for CM13
Click to expand...
Click to collapse
Did you managed to include OMS support in Lineage 14.1?
Danilo-Sanchez said:
Did you managed to include OMS support in Lineage 14.1?
Click to expand...
Click to collapse
No, didn't have any efforts, though a dark notification panel would be nice.
I just take, what comes from the "normal" repositories.
@mankokoma any idea?
Makefile:795: *** multiple target patterns. Stop.
hashroot said:
@mankokoma any idea?
Makefile:795: *** multiple target patterns. Stop.
Click to expand...
Click to collapse
I'm sorry, have only very little time these days... can you provide some more lines before this error occurs?
Are you using Ubuntu or Debian?
I have read something about cleaning the "obj" folder could help
Hi, I am building klte version of CrdroidAndroid ( a LineageOS based ROM) on a ubuntu 16.04 LTS VM.
I am getting the following error. I am not sure what to do here. I have been cleaning the build folder and ccache and trying to build. I keep ending at this error. Any help to solve this issue is greatly appreciated.
----------------------------------
/usr/bin/x86_64-linux-gnu-ld: /home/sadanand/crdroid/android/system/out/host/linux-x86/obj/SHARED_LIBRARIES/libart_intermediates/base/allocator.o: relocation R_X86_64_PC32 against protected symbol `_ZN3art18g_malloc_allocatorE' can not be used when making a shared object
/usr/bin/x86_64-linux-gnu-ld: final link failed: Bad value
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
-----------------------------------------------------------
Thanks
Did you try just "mka libart" to compile only the package with the error?
Usually then it's finishing without errors and you can brunch again.

Categories

Resources