projects:android:shamu-lineageos-cm-14.1
Table of Contents
Information
- Custom builds of LineageOS for the Nexus 6
- cm-14.1 branch
Prerequisites
xda-developers
Dependencies
sudo dnf install java-1.8.0-openjdk-devel ImageMagick-devel patch ncurses-compat-libs schedtool libstdc++.i686 glibc.i686 m4 gcc && sync
Prepare Build Environment
Cleanup
cd ~ && sudo rm -Rf ~/'android/cm-14.1/'* ~/'.ccache' ~/'.jack-server' ~/'.jack-settings' && sync
Install git-repo
mkdir -p ~/'bin' && wget -O ~/'bin/repo' 'https://storage.googleapis.com/git-repo-downloads/repo' && chmod +x ~/'bin/repo'
Configure Git
nano ~/'.gitconfig'
[user] email = espionage724@x name = Sean Lynn Rhone [color] ui = auto
Initialize Repo
mkdir -p ~/'android/cm-14.1' && cd ~/'android/cm-14.1' && repo init --manifest-url='https://github.com/LineageOS/android.git' --manifest-branch='cm-14.1' --depth=1 && sync
Motorola Manifest
- If pulling in fresh sources, do not add this until the sources are backed-up 1)
mkdir -p ~/'android/cm-14.1/.repo/local_manifests' && nano ~/'android/cm-14.1/.repo/local_manifests/motorola.xml'
<?xml version="1.0" encoding="UTF-8"?> <manifest> <!-- Motorola --> <project path="vendor/motorola" name="TheMuppets/proprietary_vendor_motorola" remote="github" revision="cm-14.1" /> </manifest>
Sources Management
Pull-in and Update Sources
Network Sync
- As of 2017/07/07, this downloads around 10GB for
cm14.1
- If pulling fresh sources, this command is good to leave running overnight, and then followed up with a backup
cd ~/'android/cm-14.1' && repo sync --current-branch --network-only --jobs='4' --force-broken --force-sync && sync
Complete Sync
- Performs both Network and Local file sync
- Add the Motorola Manifest before doing this
cd ~/'android/cm-14.1' && repo sync --current-branch --network-only --jobs='4' --force-broken --force-sync && sync && repo sync --current-branch --local-only --jobs='16' && sync
Backup Sources
cd ~/'android/cm-14.1' && tar -cvzf ~/'Downloads/lineageos-cm14.1-'$(date +%Y-%m-%d)'.tar.gz' '.repo' && cd ~ && sync
Restore Sources
mkdir -p ~/'android/cm-14.1' && cd ~/'android/cm-14.1' && tar -xvzf ~/'Downloads/lineageos-cm14.1-'*'.tar.gz' '.repo' && sync
Modifications
Allow Signature Spoofing
- This allows microG Services Core and FakeStore to fake Google Play Services and Play Store respectively
wget -O ~/'Downloads/GmsCore-android_frameworks_base-N.patch' 'https://raw.githubusercontent.com/microg/android_packages_apps_GmsCore/master/patches/android_frameworks_base-N.patch' && cd ~/'android/cm-14.1' && patch --no-backup-if-mismatch --strip='1' --directory='frameworks/base' < ~/'Downloads/GmsCore-android_frameworks_base-N.patch' && rm -f ~/'Downloads/GmsCore-android_frameworks_base-N.patch' && sync
Allow Location Providers Outside /system
- This allows microG Services Core to provide UnifiedNlp without having to be installed to
/system/priv-app
or having to have an outdatedNetworkLocation.apk
there
wget -O ~/'Downloads/UnifiedNlp-android_frameworks_base-N.patch' 'https://raw.githubusercontent.com/microg/android_packages_apps_UnifiedNlp/master/patches/android_frameworks_base-N.patch' && cd ~/'android/cm-14.1' && patch --no-backup-if-mismatch --strip='1' --directory='frameworks/base' < ~/'Downloads/UnifiedNlp-android_frameworks_base-N.patch' && rm -f ~/'Downloads/UnifiedNlp-android_frameworks_base-N.patch' && sync
Remove Deprecated HWUI GCC Flag
- Removes the deprecated
-mapcs
flag and prevents clang++ from reporting an error about it later on - Only has effect and needed if
HWUI_COMPILE_FOR_PERF
istrue
sed -i 's/-marm -mapcs/-marm/g' ~/'android/cm-14.1/frameworks/base/libs/hwui/Android.mk'
Tweaks
- If this file doesn't exist, this is likely being ran on fresh sources, and requires breakfast to be served first
- Place this at the top of the file underneath the copyright 2)
nano ~/'android/cm-14.1/device/moto/shamu/device.mk'
# Begin Custom Stuff # Dalvik/ART Tweaks PRODUCT_PROPERTY_OVERRIDES += \ dalvik.vm.image-dex2oat-filter=everything \ dalvik.vm.dex2oat-filter=everything \ dalvik.vm.check-dex-sum=false \ dalvik.vm.checkjni=false \ dalvik.vm.usejit=true \ dalvik.vm.dexopt-flags=v=a,o=v \ dalvik.vm.dex2oat-swap=false \ dalvik.vm.dex2oat-threads=4 \ dalvik.vm.boot-dex2oat-threads=4 \ dalvik.vm.image-dex2oat-threads=4 \ dalvik.vm.heaptargetutilization=0.9 \ dalvik.vm.heapgrowthlimit=288m # Single-user PRODUCT_PROPERTY_OVERRIDES += \ fw.max_users=1 # HWUI Performance Compiler Options HWUI_COMPILE_FOR_PERF := true # Graphics Tweaks PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.ui.hw=true # Native Density PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=493 # Freedom PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.hdcp_checking=never # End Custom Stuff
Steven Black's Unified Hosts File
- Includes
fakenews
andgambling
extensions
rm -Rf '/tmp/master.zip' '/tmp/hosts-master' && wget 'https://github.com/StevenBlack/hosts/archive/master.zip' -O '/tmp/master.zip' && unzip '/tmp/master.zip' -d '/tmp' && python3 '/tmp/hosts-master/updateHostsFile.py' --auto --extensions 'fakenews' 'gambling' --output ~/'android/cm-14.1/system/core/rootdir/etc' && rm -Rf '/tmp/master.zip' '/tmp/hosts-master' && sync
Build Prep
Quick Command
- This expects signing keys in-place
- This does the next 9 commands in-order and produces a flashable zip
cd ~/'android/cm-14.1' && make 'clobber' && sync && source ~/'android/cm-14.1/build/envsetup.sh' && breakfast 'shamu' && sync && unset 'CCACHE_DISABLE' && export 'CCACHE_DISABLE=1' && unset 'ANDROID_JACK_VM_ARGS' && export 'ANDROID_JACK_VM_ARGS=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx12G' && mka target-files-package dist && sync && croot && ~/'android/cm-14.1/build/tools/releasetools/sign_target_files_apks' -o -d ~/'.android-certs' ~/'android/cm-14.1/out/dist/'*'-target_files-'*'.zip' ~/'android/cm-14.1/signed-target_files.zip' && sync && ~/'android/cm-14.1/build/tools/releasetools/ota_from_target_files' -k ~/'.android-certs/releasekey' --block --backup='true' ~/'android/cm-14.1/signed-target_files.zip' ~/'Downloads/'$(date +%m-%d)'-oreo-los-N6-esp724.zip' && sync && jack-admin kill-server
Cleanup
cd ~/'android/cm-14.1' && make 'clobber' && sync
Set-up Environment
cd ~/'android/cm-14.1' && source ~/'android/cm-14.1/build/envsetup.sh'
Breakfast!
- Be sure to run Tweaks after serving
breakfast
if using fresh sources
cd ~/'android/cm-14.1' && breakfast 'shamu' && sync
Environment Variables
Disable ccache
unset 'CCACHE_DISABLE' && export 'CCACHE_DISABLE=1'
Jack
unset 'ANDROID_JACK_VM_ARGS' && export 'ANDROID_JACK_VM_ARGS=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx12G'
Signed Build
Key Management
Generate
- Change the
x
inemailAddress=
- If a backup exists and is being restored, don't run this
subject='/C=US/ST=Pennsylvania/L=Charleroi/O=Realm of Espionage/OU=Android/CN=Sean Lynn Rhone/emailAddress=espionage724@x' && mkdir ~/'.android-certs' && for x in releasekey platform shared media; do ~/'android/cm-14.1/development/tools/make_key' ~/'.android-certs'/$x "$subject"; done
Backup
cd ~ && tar -cvzf ~/'Downloads/android-certs-'$(date +%Y-%m-%d)'.tar.gz' '.android-certs' && sync
Restore
cd ~ && tar -xvzf ~/'Downloads/android-certs-'*'.tar.gz' '.android-certs' && rm -f ~/'Downloads/android-certs-'*'.tar.gz' && sync
Build
- This takes approximately 1 hour to complete
- If
mka
can't be found, make sure this is being ran from the Terminal window where previous commands took place
cd ~/'android/cm-14.1' && mka target-files-package dist && sync
Sign Build
croot && ~/'android/cm-14.1/build/tools/releasetools/sign_target_files_apks' -o -d ~/'.android-certs' ~/'android/cm-14.1/out/dist/'*'-target_files-'*'.zip' ~/'android/cm-14.1/signed-target_files.zip' && sync
Generate Zip
~/'android/cm-14.1/build/tools/releasetools/ota_from_target_files' -k ~/'.android-certs/releasekey' --block --backup='true' ~/'android/cm-14.1/signed-target_files.zip' ~/'Downloads/'$(date +%m-%d)'-nougat-los-N6-esp724.zip' && sync
Kill Jack Server
- It remains running in the background after the build is complete
jack-admin kill-server
Install Zip
- Flash
~/Downloads/lineageos-cm14.1-shamu-unofficial-(date).zip
Unsigned Build
Build and Generate Zip
- This takes approximately 1 hour to complete
cd ~/'android/cm-14.1' && croot && brunch 'shamu' && sync
Install Zip
- Flash the 400MB+ zip found in
~/android/cm-14.1/out/target/product/shamu
Nexus 6 Configuration
Changelog
Notes
- Unless otherwise specified, all uploaded builds are updated from the source (resync) prior to building
Changelog
- 2017/10/31: More Dalvik/ART tweaks, HWUI compiled in performance mode, disable HDCP checking, force 2D GPU acceleration
- 2017/10/29: Dalvik/ART tweaks, disabled multi-user
- 2017/10/18: Resync
- 2017/09/29: Resync
- 2017/09/26: Resync
- 2017/09/23: Add fakenews and gambling extensions back for Steven Black's hosts file
- 2017/09/21: Resync
- 2017/07/22: Resync
- 2017/07/19: Remove Dalvik/ART Tweaks, re-enable multi-user
- 2017/07/17: Dalvik/ART Tweaks, disabled multi-user
- 2017/07/16: Back to userdebug build
- 2017/07/13: Resync
- 2017/07/11: Resync
- 2017/07/09: Removed gambling, fakenews, and porn filters for Steven Black's host file (the default hosts are included still)
- 2017/07/07: Now includes all default apps, Steven Black's Unified Hosts File built-in with the gambling, fakenews, and porn filters enabled
- 2017/07/06: DPI to 493, user build (changed from userdebug)
- 2017/07/05: Initial build, removal of some default apps
1)
that way the backup can be a clean-slate and be used for other non-Moto devices
2)
this ensures the custom
PRODUCT_PROPERTY_OVERRIDES
are used, see comment/srv/www/wiki/data/pages/projects/android/shamu-lineageos-cm-14.1.txt · Last modified: by 127.0.0.1