• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!
  • Fill out your device list and let everyone know which phones you have!    Edit Your Device Inventory

[Guide][Video Tutorial] How to build Custom ROMs and Kernels![10,P,O,N,M,L]

Search This thread

mdmaher

Senior Member
Jun 6, 2016
552
586
Unavailable
Hi @AlaskaLinuxUser

Do you know how to fix vibration and Headset jack bug in the kernel ????


I finished porting Nougat 7.1.1 for my device mentioned below. Since there was no proper kernel, I ended up using the stock zimage of the rom im porting from since both devices are same but a bit different...
It successfully booted but with only these two bugs.
The kernel also seems to cause ui stutter, like when scrolling, opening apps etc....


My device is(J700F - J7 2015 ) with stock android 6.0.1
And I am porting it from J700T which has got 7.1.1 update... I used J700T stock kernel.

So how can I fix this bug ????

Hoping for some help
Thanks
 
  • Like
Reactions: m.morcielago

aala27

Member
Nov 12, 2015
31
8
Hello,
shortly before finish by building LineageOS16 for cedric(moto g5), I have a mistake:
Code:
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:43: error: package lineageos.platform does not exist
import lineageos.platform.R;
                         ^
lineage-sdk/sdk/src/java/lineageos/preference/RemotePreferenceManager.java:36: error: package lineageos.platform does not exist
import lineageos.platform.Manifest;
                         ^
lineage-sdk/sdk/src/java/lineageos/preference/RemotePreferenceUpdater.java:28: error: package lineageos.platform does not exist
import lineageos.platform.Manifest;
                         ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:77: error: package R does not exist
                R.styleable.lineage_SelfRemovingPreference);
                 ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:78: error: package R does not exist
        mSummaryMinLines = a.getInteger(R.styleable.lineage_SelfRemovingPreference_minSummaryLines, -1);
                                         ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:79: error: package R does not exist
        mReplacesKey = a.getString(R.styleable.lineage_SelfRemovingPreference_replacesKey);
                                    ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:138: error: package R does not exist
                R.styleable.lineage_SelfRemovingPreference);
                 ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:143: error: package R does not exist
            boolean rOwner = a.getBoolean(R.styleable.lineage_SelfRemovingPreference_requiresOwner, false);
                                           ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:149: error: package R does not exist
            String rPackage = a.getString(R.styleable.lineage_SelfRemovingPreference_requiresPackage);
                                           ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:162: error: package R does not exist
            String rAction = a.getString(R.styleable.lineage_SelfRemovingPreference_requiresAction);
                                          ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:175: error: package R does not exist
            String rFeature = a.getString(R.styleable.lineage_SelfRemovingPreference_requiresFeature);
                                           ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:191: error: package R does not exist
            String rProperty = a.getString(R.styleable.lineage_SelfRemovingPreference_requiresProperty);
                                            ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:211: error: package R does not exist
            TypedValue tv = a.peekValue(R.styleable.lineage_SelfRemovingPreference_requiresConfig);
                                         ^
lineage-sdk/sdk/src/java/lineageos/preference/ConstraintsHelper.java:220: error: package R does not exist
                            R.styleable.lineage_SelfRemovingPreference_requiresConfigMask, -1);
                             ^
lineage-sdk/sdk/src/java/lineageos/preference/RemotePreferenceManager.java:104: error: package Manifest does not exist
                                Manifest.permission.MANAGE_REMOTE_PREFERENCES, mHandler);
                                        ^
lineage-sdk/sdk/src/java/lineageos/preference/RemotePreferenceManager.java:135: error: package Manifest does not exist
                    Manifest.permission.MANAGE_REMOTE_PREFERENCES,
                            ^
lineage-sdk/sdk/src/java/lineageos/preference/RemotePreferenceUpdater.java:127: error: package Manifest does not exist
                UserHandle.CURRENT, Manifest.permission.MANAGE_REMOTE_PREFERENCES);
                                            ^
17 errors
[ 22% 297/1317] Building Kernel

Hi,

Can you please share how you fixed this error? I am running in to the same error as well when building my custom rom.

Thanks,
 

SonOfSparda

Senior Member
Feb 14, 2016
204
49
Hello to all, I successfully was able to compile LOS15.1 for my Yuphoria. But the Quick Settings UI is quite old in this ROM, So is there any way to pick these Quick Settings/Tiles UI from DotOS-O or other ROMs? Please explain the procedure to do this.
 
  • Like
Reactions: usamaiqbal1177

NextGeneration9501

Senior Member
Aug 18, 2015
56
2
hello sir, may i need your attention, please? i got errors building my aosp. i've followed sony's guide 100% and i got this instead.

[ 99% 444/445] finishing build rules ...
FAILED:
external/wpa_supplicant_8/hostapd/Android.mk: error: "hostapd (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
external/wpa_supplicant_8/hostapd/Android.mk: error: "hostapd_nohidl (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
external/wpa_supplicant_8/wpa_supplicant/Android.mk: error: "wpa_supplicant (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
frameworks/opt/net/wifi/libwifi_hal/Android.mk: error: "libwifi-hal (SHARED_LIBRARIES android-arm64) missing libwifi-hal-emu (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
frameworks/opt/net/wifi/libwifi_hal/Android.mk: error: "libwifi-hal (SHARED_LIBRARIES android-arm) missing libwifi-hal-emu (STATIC_LIBRARIES android-arm)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
build/make/core/main.mk:1017: error: exiting from previous errors.
22:55:51 ckati failed with: exit status 1

#### failed to build some targets (02:00 (mm:ss)) ####

please help me, sir. im trying to build aosp 10.0 r40 for my x performance (f8131). i chose aosp-arm64 to build aosp as there are no f8131 in lunch's list. im using latest ubuntu 20.04 lts

i reran the command three times and it is not working at all. i've even ran "ALLOW_MISSING_DEPENDENCIES=true" before i ran "make -j$(nproc)" again. can't get through either.
 

AlaskaLinuxUser

Senior Member
Oct 23, 2015
1,948
4,085
Fairbanks
alaskalinuxuser3.ddns.net
hello sir, may i need your attention, please? i got errors building my aosp. i've followed sony's guide 100% and i got this instead.

[ 99% 444/445] finishing build rules ...
FAILED:
external/wpa_supplicant_8/hostapd/Android.mk: error: "hostapd (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
external/wpa_supplicant_8/hostapd/Android.mk: error: "hostapd_nohidl (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
external/wpa_supplicant_8/wpa_supplicant/Android.mk: error: "wpa_supplicant (EXECUTABLES android-arm64) missing lib_driver_cmd_simulated (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
frameworks/opt/net/wifi/libwifi_hal/Android.mk: error: "libwifi-hal (SHARED_LIBRARIES android-arm64) missing libwifi-hal-emu (STATIC_LIBRARIES android-arm64)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
frameworks/opt/net/wifi/libwifi_hal/Android.mk: error: "libwifi-hal (SHARED_LIBRARIES android-arm) missing libwifi-hal-emu (STATIC_LIBRARIES android-arm)"
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
build/make/core/main.mk:1017: error: exiting from previous errors.
22:55:51 ckati failed with: exit status 1

#### failed to build some targets (02:00 (mm:ss)) ####

please help me, sir. im trying to build aosp 10.0 r40 for my x performance (f8131). i chose aosp-arm64 to build aosp as there are no f8131 in lunch's list. im using latest ubuntu 20.04 lts

i reran the command three times and it is not working at all. i've even ran "ALLOW_MISSING_DEPENDENCIES=true" before i ran "make -j$(nproc)" again. can't get through either.
RomDevelopment
https://t.me/alaskalinuxuser_romdevelopment

Sent from my Sony Xperia XA2 Ultra with Android 10
 

AlaskaLinuxUser

Senior Member
Oct 23, 2015
1,948
4,085
Fairbanks
alaskalinuxuser3.ddns.net
Greetings!

I've managed to build a kernel based on your tutorials. Awesome tutotrials btw :fingers-crossed: However I cannot find the Image.gz at the end. I've opened a thread for this, my issue is a bit complicated. https://forum.xda-developers.com/general/rooting-roms/root-newbie-help-to-root-sony-walkman-t4151005
Could you give a hint for this newbie?

Thank You!

Glad they are useful, I recommend you go here:
<br />
RomDevelopment<br />
https://t.me/alaskalinuxuser_romdevelopment<br />
<br />

Sent from my Sony Xperia XA2 Ultra with Android 10
 
  • Like
Reactions: kinghell and 64ashg

kinghell

Member
Aug 21, 2020
7
1
Glad they are useful, I recommend you go here:
<br />
RomDevelopment<br />
https://t.me/alaskalinuxuser_romdevelopment<br />
<br />

Sent from my Sony Xperia XA2 Ultra with Android 10

I've spoken with the guys for over 2 hours, we tried bunch of ideas, but tehere's always a showstopper issue. I ran out of ideas. Never seen kernel source like this before :confused:
I've spent 5 (here goes my holiday I guess) days overall for this, I think it's time to give up haha. There's literally no other site I can google it.
 

Sharashchandra

Senior Member
Mar 8, 2016
114
16
Hi, Thank you for the video series.
Hope you are doing good.

I am trying to compile TWRP for Nokia 6. I used 6.20A kernel as source and compiled twrp but the compiled recovery image is not at all booting.
Then I change the kernel of the compiled recovery image with kernel of (https://forum.xda-developers.com/t/...p-3-2-3-0-modded-for-pie-and-root-it.3903818/) modded recovery image using carliv image kitchen and it boots. i am just curious what mistake i have done while compiling?

Can you please help me?

Stay safe.

Thanks in advance
 

Sharashchandra

Senior Member
Mar 8, 2016
114
16
Hi, Thank you for the video series.
Hope you are doing good.

I am trying to compile TWRP for Nokia 6. I used 6.20A kernel as source and compiled twrp but the compiled recovery image is not at all booting.
Then I change the kernel of the compiled recovery image with kernel of (https://forum.xda-developers.com/t/...p-3-2-3-0-modded-for-pie-and-root-it.3903818/) modded recovery image using carliv image kitchen and it boots. i am just curious what mistake i have done while compiling?

Can you please help me?

Stay safe.

Thanks in advance
 

ROMSG

Senior Member
Aug 6, 2018
115
181
I am trying to compile a treble compatible rom for the lg v20 and keep getting this error at the very end of building.


[ 99% 842/843] Package OTA: /home/romsg/los-treble/out/target/product/vs995/lineage_vs995-ota-a82b654207.zip
FAILED: /home/romsg/los-treble/out/target/product/vs995/lineage_vs995-ota-a82b654207.zip
/bin/bash -c "PATH=/home/romsg/los-treble/out/host/linux-x86/bin/:\$PATH MKBOOTIMG=/home/romsg/los-treble/out/host/linux-x86/bin/mkbootimg ./build/tools/releasetools/ota_from_target_files -v --block --extracted_input_target_files /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207 -p /home/romsg/los-treble/out/host/linux-x86 -k build/target/product/security/testkey --backup=true /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207.zip /home/romsg/los-treble/out/target/product/vs995/lineage_vs995-ota-a82b654207.zip"
running: openssl pkcs8 -in build/target/product/security/testkey.pk8 -inform DER -nocrypt
--- target info ---
blockimgdiff_versions = (str) 3,4
blocksize = (int) 131072
boot_size = (int) 41943040
build.prop = (dict) {'persist.nfc.smartcard.config': 'SIM1,SIM2,eSE1', 'dalvik.vm.heapminfree': '4m', 'vendor.audio.offload.buffer.size.kb': '64', 'persist.camera.preview.ubwc': '0', 'dalvik.vm.isa.arm.variant': 'kryo', 'ro.product.cpu.abilist': 'arm64-v8a,armeabi-v7a,armeabi', 'persist.sensors.wul_multilevel': '3', 'ro.build.product': 'elsa', 'persist.data.iwlan.enable': 'true', 'debug.qualcomm.sns.daemon': 'e', 'ro.build.id': 'OPM7.181205.001', 'ro.hwui.gradient_cache_size': '1', 'persist.audio.fluence.speaker': 'true', 'ro.product.cpu.abilist32': 'armeabi-v7a,armeabi', 'persist.rmnet.data.enable': 'true', 'ro.cdma.home.operator.numeric': '311480', 'persist.sensors.wul_thresh1': '10', 'persist.sensors.wul_thresh0': '2', 'ro.sys.fw.bg_apps_limit': '60', 'persist.sensors.wul_thresh2': '15', 'ro.qc.sdk.audio.fluencetype': 'fluence', 'net.tethering.noprovisioning': 'true', 'persist.sensors.wul_delay': '3000', 'vendor.audio.offload.pcm.24bit.enable': 'true', 'persist.net.doxlat': 'true', 'ro.qualcomm.cabl': '0', 'ro.frp.pst': '/dev/block/platform/soc/624000.ufshc/by-name/persistent', 'af.fast_track_multiplier': '1', 'vendor.audio.offload.passthrough': 'false', 'dalvik.vm.heapmaxfree': '8m', 'ro.build.fingerprint': 'lge/elsa_vzw/elsa:7.0/NRD90M/1628409164d39:user/release-keys', 'ro.product.manufacturer': 'LGE', 'vendor.audio.flac.sw.decoder.24bit': 'true', 'ro.min_freq_4': '307200', 'persist.vendor.audio.fluence.voicecall': 'true', 'ro.min_freq_0': '307200', 'ro.bionic.ld.warning': '1', 'persist.data.netmgrd.qos.enable': 'true', 'ro.hwui.layer_cache_size': '64', 'ro.build.description': 'elsa_vzw-user 7.0 NRD90M 1628409164d39 release-keys', 'persist.debug.sensors.hal': 'e', 'ro.expect.recovery_id': '0x27da54702fa096ec34bfc18e2af9ad150d8b2630000000000000000000000000', 'dalvik.vm.heapstartsize': '16m', 'ro.sys.fw.dex2oat_thread_count': '4', 'ro.product.brand': 'lge', 'wifi.interface': 'wlan0', 'ro.lineage.display.version': '15.1-20210709-UNOFFICIAL-vs995', 'ro.product.model': 'LG-VS995', 'persist.radio.redir_party_num': '1', 'persist.radio.NO_STAPA': '1', 'dalvik.vm.heapsize': '512m', 'persist.audio.fluence.voicecall': 'true', 'persist.data.df.dl_mode': '5', 'ro.vendor.audio.sdk.fluencetype': 'fluence', 'ril.subscription.types': 'NV,RUIM', 'persist.cne.feature': '1', 'persist.vendor.audio.fluence.speaker': 'true', 'dalvik.vm.heaptargetutilization': '0.75', 'persist.dbg.vt_avail_ovr': '1', 'persist.demo.hdmirotationlock': 'false', 'ro.build.host': 'romsg-VirtualBox', 'ro.build.version.security_patch': '2021-06-05', 'telephony.lteOnCdmaDevice': '1', 'vendor.audio.offload.track.enable': 'true', 'ro.product.locale': 'en-US', 'persist.sensors.mag_filter_size': '8', 'persist.audio.fluence.voicerec': 'false', 'audio.offload.video': 'false', 'persist.timed.enable': 'true', 'vendor.audio.parser.ip.buffer.size': '262144', 'vendor.voice.path.for.pcm.voip': 'true', 'persist.loc.nlp_name': 'com.qualcomm.location', 'ro.telephony.call_ring.multiple': 'false', 'vidc.enc.dcvs.extra-buff-count': '2', 'vendor.audio_hal.period_size': '192', 'ro.product.cpu.abilist64': 'arm64-v8a', 'vendor.audio.offload.min.duration.secs': '30', 'persist.camera.video.ubwc': '0', 'ro.am.reschedule_service': 'true', 'ro.vendor.build.security_patch': '2017-11-16', 'ro.vendor.extension_library': 'libqti-perfd-client.so', 'dalvik.vm.stack-trace-dir': '/data/anr', 'vendor.audio.offload.pcm.16bit.enable': 'true', 'ro.bt.bdaddr_path': '/data/misc/bluetooth/bdaddr', 'ro.build.flavor': 'lineage_vs995-userdebug', 'dalvik.vm.isa.arm.features': 'default', 'audio.deep_buffer.media': 'true', 'vidc.debug.perf.mode': '2', 'ro.gps.agps_provider': '1', 'persist.sensors.onhand.en': '0', 'ro.build.version.release': '8.1.0', 'ro.build.version.codename': 'REL', 'DEVICE_PROVISIONED': '1', 'net.bt.name': 'Android', 'debug.qualcomm.sns.libsensor1': 'e', 'ro.build.type': 'userdebug', 'ro.hwui.text_large_cache_width': '3072', 'persist.vendor.audio.speaker.prot.enable': 'true', 'persist.radio.VT_HYBRID_ENABLE': '1', 'ro.cdma.home.operator.alpha': 'Verizon', 'ro.opengles.version': '196610', 'persist.radio.rat_on': 'combine', 'persist.delta_time.enable': 'true', 'ro.hwui.text_small_cache_height': '2048', 'ro.build.display.id': 'lineage_vs995-userdebug 8.1.0 OPM7.181205.001 044c0ba853 test-keys', 'ro.hwui.texture_cache_flushrate': '0.4', 'ro.treble.enabled': 'true', 'persist.hwc.enable_vds': '1', 'persist.radio.force_on_dc': 'true', 'persist.gps.qc_nlp_in_use': '1', 'debug.egl.hw': '1', 'persist.data.wda.enable': 'true', 'ro.carrier': 'unknown', 'persist.data.df.ul_mode': '5', 'ro.build.version.preview_sdk': '0', 'persist.vendor.bt.enable.splita2dp': 'false', 'ro.build.date': 'Thu Jul 8 19:10:32 PDT 2021', 'ro.lineagelegal.url': 'https://lineageos.org/legal', 'vendor.audio.offload.multiaac.enable': 'true', 'ro.use_data_netmgrd': 'true', 'persist.radio.sib16_support': '1', 'persist.data.df.agg.dl_pkt': '10', 'ro.camera.notify_nfc': '1', 'persist.data.df.mux_count': '8', 'ro.build.date.utc': '1625796632', 'dalvik.vm.isa.arm64.variant': 'kryo', 'keyguard.no_require_sim': 'true', 'ro.nfc.port': 'I2C', 'persist.dpm.feature': '0', 'persist.data.df.dev_name': 'rmnet_usb0', 'ro.build.version.all_codenames': 'REL', 'dalvik.vm.lockprof.threshold': '500', 'debug.gralloc.enable_fb_ubwc': '1', 'dev.pm.dyn_samplingrate': '1', 'persist.sys.wfd.virtual': '0', 'ro.hwui.text_small_cache_width': '2048', 'ro.product.cpu.abi': 'arm64-v8a', 'sdm.perf_hint_window': '50', 'ro.product.name': 'elsa_vzw_us', 'ro.hwui.drop_shadow_cache_size': '7', 'ro.build.version.base_os': '', 'persist.data.qmi.adb_logmask': '0', 'persist.data.mode': 'concurrent', 'vendor.audio.safx.pbe.enabled': 'true', 'ro.wifi.channels': '', 'ro.hwui.r_buffer_cache_size': '12', 'ro.modversion': '15.1-20210709-UNOFFICIAL-vs995', 'ro.build.characteristics': 'default', 'vendor.audio.hw.aac.encoder': 'false', 'persist.audio.camcorder.stereo': 'true', 'sdm.debug.disable_rotator_split': '1', 'ro.lineage.releasetype': 'UNOFFICIAL', 'ro.telephony.default_network': '10', 'qemu.hw.mainkeys': '0', 'persist.sensors.knock_delay': '1000', 'ro.build.version.incremental': '044c0ba853', 'persist.vendor.audio.fluence.voicerec': 'false', 'ro.hwui.text_large_cache_height': '2048', 'rild.libpath': '/vendor/lib64/libril-qc-qmi-1.so', 'ro.build.tags': 'test-keys', 'vendor.audio.use.sw.alac.decoder': 'true', 'ro.sf.lcd_density': '560', 'ro.build.version.sdk': '27', 'persist.data.df.iwlan_mux': '9', 'ro.lineage.build.version': '15.1', 'ro.lineage.build.version.plat.sdk': '9', 'ro.lineage.device': 'vs995', 'ro.build.user': 'romsg', 'vendor.audio.use.sw.ape.decoder': 'true', 'dalvik.vm.isa.arm64.features': 'default', 'persist.dbg.volte_avail_ovr': '1', 'ro.hwui.path_cache_size': '39', 'ro.product.device': 'elsa', 'debug.sf.hw': '1', 'vendor.audio.tunnel.encode': 'false', 'persist.vendor.audio.spkr.cal.duration': '5', 'persist.sensors.lgpickup_en': 'true', 'ro.hwui.texture_cache_size': '96', 'persist.sys.dalvik.vm.lib.2': 'libart.so', 'vendor.audio.offload.gapless.enabled': 'true', 'persist.data.df.agg.dl_size': '4096', 'ro.build.system_root_image': 'true', 'ro.vendor.audio.sdk.ssr': 'false', 'persist.radio.apm_sim_not_pwdn': '1', 'ro.lineage.build.version.plat.rev': '0', 'dalvik.vm.heapgrowthlimit': '256m', 'persist.radio.custom_ecc': '1', 'vendor.audio.offload.multiple.enabled': 'false', 'ro.lineage.version': '15.1-20210709-UNOFFICIAL-vs995'}
cache_fs_type = (str) ext4
cache_size = (int) 1288490180
default_system_dev_certificate = (str) build/target/product/security/testkey
ext_mkuserimg = (str) mkuserimg_mke2fs.sh
extfs_sparse_flag = (str) -s
extra_recovery_keys = (str) vendor/lineage/build/target/product/security/lineage
fs_type = (str) ext4
fstab = (dict) {'/mpt': <common.Partition object at 0x7f29d230ac10>, 'none': <common.Partition object at 0x7f29d2307350>, '/system': <common.Partition object at 0x7f29d230a950>, '/cache': <common.Partition object at 0x7f29d230aad0>, '/boot': <common.Partition object at 0x7f29d230a850>, '/sns': <common.Partition object at 0x7f29d230ab90>, '/': <common.Partition object at 0x7f29d230a950>, '/system_image': <common.Partition object at 0x7f29d230a910>, '/persist': <common.Partition object at 0x7f29d230ab10>, '/recovery': <common.Partition object at 0x7f29d230a8d0>, '/firmware': <common.Partition object at 0x7f29d230aa50>, '/persist-lg': <common.Partition object at 0x7f29d230abd0>, '/misc': <common.Partition object at 0x7f29d230aa90>, '/data': <common.Partition object at 0x7f29d230aa10>, '/vendor': <common.Partition object at 0x7f29d230a9d0>}
fstab_version = (int) 2
full_recovery_image = (str) true
mkbootimg_args = (str)
mkbootimg_version_args = (str) --os_version 8.1.0 --os_patch_level 2021-06-05
multistage_support = (str) 1
ota_override_device = (str) vs995,us996,elsa
ramdisk_dir = (str) /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207/ROOT
ramdisk_fs_config = (str) /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207/META/root_filesystem_config.txt
recovery_api_version = (int) 3
recovery_as_boot = (str)
recovery_mount_options = (str) ext4=max_batch_time=0,commit=1,data=ordered,barrier=1,errors=panic,nodelalloc
recovery_size = (int) 41943040
selinux_fc = (str) /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207/META/file_contexts.bin
squashfs_sparse_flag = (str) -s
system_fs_type = (str) ext4
system_root_image = (str) true
system_size = (int) 5326759168
tool_extensions = (str) device/lge/msm8996-common
use_set_metadata = (str) 1
userdata_size = (int) 24897388544
vendor_fs_type = (str) ext4
vendor_size = (int) 536866816
(using device-specific extensions from target_files)
loaded device-specific extensions from /home/romsg/los-treble/out/target/product/vs995/obj/PACKAGING/target_files_intermediates/lineage_vs995-target_files-a82b654207/META/releasetools.py
using prebuilt recovery.img from IMAGES...
Traceback (most recent call last):
File "./build/tools/releasetools/ota_from_target_files", line 1587, in <module>
main(sys.argv[1:])
File "./build/tools/releasetools/ota_from_target_files", line 1542, in main
WriteFullOTAPackage(input_zip, output_zip)
File "./build/tools/releasetools/ota_from_target_files", line 496, in WriteFullOTAPackage
script.Unmount("/system")
File "/home/romsg/los-treble/build/make/tools/releasetools/edify_generator.py", line 355, in Unmount
self.mounts.remove(mount_point)
KeyError: '/system'
ninja: build stopped: subcommand failed.
23:52:47 ninja failed with: exit status 1
 

Top Liked Posts

  • There are no posts matching your filters.
  • 308
    Hey everyone! There is also a telegram channel where you can drop in for some help: https://t.me/joinchat/HR_8JgyDBdw_DvmndPl0kg

    I really hope that you have enjoyed the series, and that it was helpful to you in your Android career!



    13d59eb89fec8697fd05796bb36a6d39

    Praise God! Finally a video tutorial of how to build Android and modify kernels!​
    I have created a video tutorial and guide for how to compile Android, TWRP, alternative recoveries, and MORE! From Lollipop through Marshmallow, Nougat, Oreo, and now Pie! The video series covers several different phones, from Motorola's to LG's, the emulator, kernel and rom editing, app source code editing, smartwatches and much more! Not only do we cover how to compile from source code, you get to see it in action, as well as learning how to upgrade a device from one version to another, building device trees from scratch, and using GitHub and GitLab!

    Who is this video series for?
    Well, this video tutorial is a step by step guide built primarily for the beginner to intermediate builder. This is written for those who already know how to flash TWRP, CWM, or the like, and who have installed a custom rom before. This is designed to help those who are ready to move up from flashing and installing other peoples custom roms to actually start making their own custom roms. I recommend that a beginner watch the entire playlists in order (the videos are marked).

    That said, I believe that an intermediate developer may find a useful trick here and there, and they should just skip ahead to videos of interest. Perhaps kernel development, or something along those lines.

    An advanced rom or kernel developer will probably far exceed my feeble abilities, and will not likely find much useful information here. Perhaps if you are an advanced developer, you would consider continuing the tutorial or making an advanced video series! (See further posts for recommendations on contributing videos.)

    Why did you put this together?
    Well, after building roms for several different devices, I started receiving requests from users who wanted to start building their own roms, but didn't know where to start. I didn't have enough time to answer everyone's questions, so I wrote a few guides and pointed others to guides that were already available, but there are some things that you just need to see to understand. Hence, the video tutorial. I just hope that someone finds it useful.

    This course was written in order! While Lollipop and Marshmallow are old by todays standards, there is still good learning value in building them, and there are topics covered there that really make them worth watching.

    What's in the videos?
    During the series, we will be building for the emulator, as well as over 5 different phones of various brands, and over 5 different roms. I hope that this will give the viewer a good idea of how to build for your own specific phone as you see the differences and similarities across the phones and custom roms.
    Code:
    + Ubuntu installation
    + Java installations
    + Using Git, GitHub, GitKraken, and the command line
    + Fastboot and ADB
    + Heimdall/Odin
    + QFIL, QPST, SALT, and other tools
    + AOSP, OmniRom, LineageOS, SlimRoms, PACrom, AOKP, AOSCP
    + Lollipop, Marshmallow, Nougat, Oreo, Pie
    + TWRP with OMNI or LineageOS
    + TWRP alternatives like Orange Fox and Red Wolf
    + Errors
    + Overclocking CPU/GPU
    + Adding Governors and I/O Schedulers
    + Sound modifications
    + Changing app colors, text, and icons
    + Adding prebuilt apps
    + Adding source code
    + Converting device from one rom to another
    + Upgrading from one version to another
    + Building device trees from scratch
    + Smart watches
    + Making apps
    + AND MORE!

    **** This is an UNOFFICIAL TUTORIAL. Use at your own risk! ****
    Now including more than 37 total hours in over 290 videos!

    New HD videos are coming out just about every week day on YouTube, and posted to my GitLab as well! There are playlists for everything, so be sure to check them out!

    Downloads!
    My GitLab: https://gitlab.com/alaskalinuxuser

    Youtube links:
    My YouTube Channel: http://www.youtube.com/c/AlaskaLinuxUserAKLU

    About the author:

    I'm not a professional Android builder, nor am I considered an expert. However, I have built a lot of custom roms over the years for various Android phones. I'm really just a simple guy whose hobbies include the Bible, cell phones, Android, Linux, and electronics.
    Below are a few of my previous and current Android projects.
    Code:
    Samsung Galaxy S4:
     -AOKP 7.1.2
     -SlimRoms 7.1.1
     -Resurection Remix 7.1
     -AOKP 6.0.1
     -PacRom 6.0.1
     -Resurection Remix 6.0.1
     -SlimRoms 5.1.1
     -AKLU kernels 
      for Lollipop, Marshmallow, and Nougat
    
    Samsung Galaxy S5:
     -AOKP 7.1.2
     -AKLU kernel for Nougat
    
    Samsung Galaxy Note Edge:
     -AOKP 7.1.2
     -SlimRoms 7.1.1
     -AOKP 6.0.1
     -PacRom 6.0.1
     -SlimRoms 6.0.1
     -DataZip for 6.0.1 bootloaders
     -AKLU kernel 
      for Marshmallow and Nougat
    
    LG G4:
     -AOKP 7.1.2
     -SlimRoms 7.1.1
     -AKLU kernel for Nougat
     -Assisted Suicide Squirrels with the AOSCP Oreo bringup
    
    Open Source Apps: (All listed below are under the Apache 2.0 license)
     -Critical Velocity - A side scrolling flappy bird space game.
     -Kppd Control - An app to control the kppd daemon and kernels that enable it.
     -S4 GPU Voltage Control - An app to adjust the voltage of the S4 GPU on the fly.
     -Hourglass - A simple timer application.
     -Just Notes - A simple note taking app.
     -Just Craigslist - A simple Craigslist app.
     -Ship Captain and Crew - A dice game.
    I have also assisted with open source projects by submitting code to SatStat, Easer, SlimRoms 6.0.1 for the Samsung Galaxy J5, and others. I once even turned a Samsung Captivate Glide into a Debian Computer, as well as making numerous how-to guides for compiling ROMs and app creation on both XDA and my website.
    Some of my non-Android projects include building a Bluetooth Autostart, creating several small C++ games with SFML, and working with Linux.


    My Wordpress: https://thealaskalinuxuser.wordpress.com
    My Website: https://thealaskalinuxuser.com
    My device and kernel trees (older - GitHub) : https://github.com/alaskalinuxuser/
    My device and kernel trees (newer - GitLab) : https://gitlab.com/alaskalinuxuser/

    Created 2018-07-09
    Last Updated 2019-03-18
    60
    Open Source License

    Hey everyone, well, the video says it best, so here it is:
    https://www.youtube.com/watch?v=fKSiVL7nIqM

    Essentially, due to changes in my schedule and work, I'll be hanging up the gloves on the video tutorial series.

    Feel free to watch through any of these videos though, as there is still a lot of material. This thread will also stay open for people to ask questions and discuss the videos, however, my involvement in answering those questions is going to come to an end.

    I really hope that you have enjoyed the series, and that it was helpful to you in your Android career!

    cc_icon_black_x2.png
    attribution_icon_black_x2.png

    This project is licensed under the Creative Commons Attribution 4.0.
    https://creativecommons.org/licenses/by/4.0/

    I'm big into sharing! That means that this video tutorial is open source! Here's the official license if you need it:

    Code:
    Attribution 4.0 International
    
    =======================================================================
    
    Creative Commons Corporation ("Creative Commons") is not a law firm and
    does not provide legal services or legal advice. Distribution of
    Creative Commons public licenses does not create a lawyer-client or
    other relationship. Creative Commons makes its licenses and related
    information available on an "as-is" basis. Creative Commons gives no
    warranties regarding its licenses, any material licensed under their
    terms and conditions, or any related information. Creative Commons
    disclaims all liability for damages resulting from their use to the
    fullest extent possible.
    
    Using Creative Commons Public Licenses
    
    Creative Commons public licenses provide a standard set of terms and
    conditions that creators and other rights holders may use to share
    original works of authorship and other material subject to copyright
    and certain other rights specified in the public license below. The
    following considerations are for informational purposes only, are not
    exhaustive, and do not form part of our licenses.
    
         Considerations for licensors: Our public licenses are
         intended for use by those authorized to give the public
         permission to use material in ways otherwise restricted by
         copyright and certain other rights. Our licenses are
         irrevocable. Licensors should read and understand the terms
         and conditions of the license they choose before applying it.
         Licensors should also secure all rights necessary before
         applying our licenses so that the public can reuse the
         material as expected. Licensors should clearly mark any
         material not subject to the license. This includes other CC-
         licensed material, or material used under an exception or
         limitation to copyright. More considerations for licensors:
    	wiki.creativecommons.org/Considerations_for_licensors
    
         Considerations for the public: By using one of our public
         licenses, a licensor grants the public permission to use the
         licensed material under specified terms and conditions. If
         the licensor's permission is not necessary for any reason--for
         example, because of any applicable exception or limitation to
         copyright--then that use is not regulated by the license. Our
         licenses grant only permissions under copyright and certain
         other rights that a licensor has authority to grant. Use of
         the licensed material may still be restricted for other
         reasons, including because others have copyright or other
         rights in the material. A licensor may make special requests,
         such as asking that all changes be marked or described.
         Although not required by our licenses, you are encouraged to
         respect those requests where reasonable. More_considerations
         for the public:
    	wiki.creativecommons.org/Considerations_for_licensees
    
    =======================================================================
    
    Creative Commons Attribution 4.0 International Public License
    
    By exercising the Licensed Rights (defined below), You accept and agree
    to be bound by the terms and conditions of this Creative Commons
    Attribution 4.0 International Public License ("Public License"). To the
    extent this Public License may be interpreted as a contract, You are
    granted the Licensed Rights in consideration of Your acceptance of
    these terms and conditions, and the Licensor grants You such rights in
    consideration of benefits the Licensor receives from making the
    Licensed Material available under these terms and conditions.
    
    
    Section 1 -- Definitions.
    
      a. Adapted Material means material subject to Copyright and Similar
         Rights that is derived from or based upon the Licensed Material
         and in which the Licensed Material is translated, altered,
         arranged, transformed, or otherwise modified in a manner requiring
         permission under the Copyright and Similar Rights held by the
         Licensor. For purposes of this Public License, where the Licensed
         Material is a musical work, performance, or sound recording,
         Adapted Material is always produced where the Licensed Material is
         synched in timed relation with a moving image.
    
      b. Adapter's License means the license You apply to Your Copyright
         and Similar Rights in Your contributions to Adapted Material in
         accordance with the terms and conditions of this Public License.
    
      c. Copyright and Similar Rights means copyright and/or similar rights
         closely related to copyright including, without limitation,
         performance, broadcast, sound recording, and Sui Generis Database
         Rights, without regard to how the rights are labeled or
         categorized. For purposes of this Public License, the rights
         specified in Section 2(b)(1)-(2) are not Copyright and Similar
         Rights.
    
      d. Effective Technological Measures means those measures that, in the
         absence of proper authority, may not be circumvented under laws
         fulfilling obligations under Article 11 of the WIPO Copyright
         Treaty adopted on December 20, 1996, and/or similar international
         agreements.
    
      e. Exceptions and Limitations means fair use, fair dealing, and/or
         any other exception or limitation to Copyright and Similar Rights
         that applies to Your use of the Licensed Material.
    
      f. Licensed Material means the artistic or literary work, database,
         or other material to which the Licensor applied this Public
         License.
    
      g. Licensed Rights means the rights granted to You subject to the
         terms and conditions of this Public License, which are limited to
         all Copyright and Similar Rights that apply to Your use of the
         Licensed Material and that the Licensor has authority to license.
    
      h. Licensor means the individual(s) or entity(ies) granting rights
         under this Public License.
    
      i. Share means to provide material to the public by any means or
         process that requires permission under the Licensed Rights, such
         as reproduction, public display, public performance, distribution,
         dissemination, communication, or importation, and to make material
         available to the public including in ways that members of the
         public may access the material from a place and at a time
         individually chosen by them.
    
      j. Sui Generis Database Rights means rights other than copyright
         resulting from Directive 96/9/EC of the European Parliament and of
         the Council of 11 March 1996 on the legal protection of databases,
         as amended and/or succeeded, as well as other essentially
         equivalent rights anywhere in the world.
    
      k. You means the individual or entity exercising the Licensed Rights
         under this Public License. Your has a corresponding meaning.
    
    
    Section 2 -- Scope.
    
      a. License grant.
    
           1. Subject to the terms and conditions of this Public License,
              the Licensor hereby grants You a worldwide, royalty-free,
              non-sublicensable, non-exclusive, irrevocable license to
              exercise the Licensed Rights in the Licensed Material to:
    
                a. reproduce and Share the Licensed Material, in whole or
                   in part; and
    
                b. produce, reproduce, and Share Adapted Material.
    
           2. Exceptions and Limitations. For the avoidance of doubt, where
              Exceptions and Limitations apply to Your use, this Public
              License does not apply, and You do not need to comply with
              its terms and conditions.
    
           3. Term. The term of this Public License is specified in Section
              6(a).
    
           4. Media and formats; technical modifications allowed. The
              Licensor authorizes You to exercise the Licensed Rights in
              all media and formats whether now known or hereafter created,
              and to make technical modifications necessary to do so. The
              Licensor waives and/or agrees not to assert any right or
              authority to forbid You from making technical modifications
              necessary to exercise the Licensed Rights, including
              technical modifications necessary to circumvent Effective
              Technological Measures. For purposes of this Public License,
              simply making modifications authorized by this Section 2(a)
              (4) never produces Adapted Material.
    
           5. Downstream recipients.
    
                a. Offer from the Licensor -- Licensed Material. Every
                   recipient of the Licensed Material automatically
                   receives an offer from the Licensor to exercise the
                   Licensed Rights under the terms and conditions of this
                   Public License.
    
                b. No downstream restrictions. You may not offer or impose
                   any additional or different terms or conditions on, or
                   apply any Effective Technological Measures to, the
                   Licensed Material if doing so restricts exercise of the
                   Licensed Rights by any recipient of the Licensed
                   Material.
    
           6. No endorsement. Nothing in this Public License constitutes or
              may be construed as permission to assert or imply that You
              are, or that Your use of the Licensed Material is, connected
              with, or sponsored, endorsed, or granted official status by,
              the Licensor or others designated to receive attribution as
              provided in Section 3(a)(1)(A)(i).
    
      b. Other rights.
    
           1. Moral rights, such as the right of integrity, are not
              licensed under this Public License, nor are publicity,
              privacy, and/or other similar personality rights; however, to
              the extent possible, the Licensor waives and/or agrees not to
              assert any such rights held by the Licensor to the limited
              extent necessary to allow You to exercise the Licensed
              Rights, but not otherwise.
    
           2. Patent and trademark rights are not licensed under this
              Public License.
    
           3. To the extent possible, the Licensor waives any right to
              collect royalties from You for the exercise of the Licensed
              Rights, whether directly or through a collecting society
              under any voluntary or waivable statutory or compulsory
              licensing scheme. In all other cases the Licensor expressly
              reserves any right to collect such royalties.
    
    
    Section 3 -- License Conditions.
    
    Your exercise of the Licensed Rights is expressly made subject to the
    following conditions.
    
      a. Attribution.
    
           1. If You Share the Licensed Material (including in modified
              form), You must:
    
                a. retain the following if it is supplied by the Licensor
                   with the Licensed Material:
    
                     i. identification of the creator(s) of the Licensed
                        Material and any others designated to receive
                        attribution, in any reasonable manner requested by
                        the Licensor (including by pseudonym if
                        designated);
    
                    ii. a copyright notice;
    
                   iii. a notice that refers to this Public License;
    
                    iv. a notice that refers to the disclaimer of
                        warranties;
    
                     v. a URI or hyperlink to the Licensed Material to the
                        extent reasonably practicable;
    
                b. indicate if You modified the Licensed Material and
                   retain an indication of any previous modifications; and
    
                c. indicate the Licensed Material is licensed under this
                   Public License, and include the text of, or the URI or
                   hyperlink to, this Public License.
    
           2. You may satisfy the conditions in Section 3(a)(1) in any
              reasonable manner based on the medium, means, and context in
              which You Share the Licensed Material. For example, it may be
              reasonable to satisfy the conditions by providing a URI or
              hyperlink to a resource that includes the required
              information.
    
           3. If requested by the Licensor, You must remove any of the
              information required by Section 3(a)(1)(A) to the extent
              reasonably practicable.
    
           4. If You Share Adapted Material You produce, the Adapter's
              License You apply must not prevent recipients of the Adapted
              Material from complying with this Public License.
    
    
    Section 4 -- Sui Generis Database Rights.
    
    Where the Licensed Rights include Sui Generis Database Rights that
    apply to Your use of the Licensed Material:
    
      a. for the avoidance of doubt, Section 2(a)(1) grants You the right
         to extract, reuse, reproduce, and Share all or a substantial
         portion of the contents of the database;
    
      b. if You include all or a substantial portion of the database
         contents in a database in which You have Sui Generis Database
         Rights, then the database in which You have Sui Generis Database
         Rights (but not its individual contents) is Adapted Material; and
    
      c. You must comply with the conditions in Section 3(a) if You Share
         all or a substantial portion of the contents of the database.
    
    For the avoidance of doubt, this Section 4 supplements and does not
    replace Your obligations under this Public License where the Licensed
    Rights include other Copyright and Similar Rights.
    
    
    Section 5 -- Disclaimer of Warranties and Limitation of Liability.
    
      a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
         EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
         AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
         ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
         IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
         WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
         PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
         ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
         KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
         ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
    
      b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
         TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
         NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
         INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
         COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
         USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
         ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
         DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
         IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
    
      c. The disclaimer of warranties and limitation of liability provided
         above shall be interpreted in a manner that, to the extent
         possible, most closely approximates an absolute disclaimer and
         waiver of all liability.
    
    
    Section 6 -- Term and Termination.
    
      a. This Public License applies for the term of the Copyright and
         Similar Rights licensed here. However, if You fail to comply with
         this Public License, then Your rights under this Public License
         terminate automatically.
    
      b. Where Your right to use the Licensed Material has terminated under
         Section 6(a), it reinstates:
    
           1. automatically as of the date the violation is cured, provided
              it is cured within 30 days of Your discovery of the
              violation; or
    
           2. upon express reinstatement by the Licensor.
    
         For the avoidance of doubt, this Section 6(b) does not affect any
         right the Licensor may have to seek remedies for Your violations
         of this Public License.
    
      c. For the avoidance of doubt, the Licensor may also offer the
         Licensed Material under separate terms or conditions or stop
         distributing the Licensed Material at any time; however, doing so
         will not terminate this Public License.
    
      d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
         License.
    
    
    Section 7 -- Other Terms and Conditions.
    
      a. The Licensor shall not be bound by any additional or different
         terms or conditions communicated by You unless expressly agreed.
    
      b. Any arrangements, understandings, or agreements regarding the
         Licensed Material not stated herein are separate from and
         independent of the terms and conditions of this Public License.
    
    
    Section 8 -- Interpretation.
    
      a. For the avoidance of doubt, this Public License does not, and
         shall not be interpreted to, reduce, limit, restrict, or impose
         conditions on any use of the Licensed Material that could lawfully
         be made without permission under this Public License.
    
      b. To the extent possible, if any provision of this Public License is
         deemed unenforceable, it shall be automatically reformed to the
         minimum extent necessary to make it enforceable. If the provision
         cannot be reformed, it shall be severed from this Public License
         without affecting the enforceability of the remaining terms and
         conditions.
    
      c. No term or condition of this Public License will be waived and no
         failure to comply consented to unless expressly agreed to by the
         Licensor.
    
      d. Nothing in this Public License constitutes or may be interpreted
         as a limitation upon, or waiver of, any privileges and immunities
         that apply to the Licensor or You, including from the legal
         processes of any jurisdiction or authority.
    
    
    =======================================================================
    
    Creative Commons is not a party to its public
    licenses. Notwithstanding, Creative Commons may elect to apply one of
    its public licenses to material it publishes and in those instances
    will be considered the “Licensor.” The text of the Creative Commons
    public licenses is dedicated to the public domain under the CC0 Public
    Domain Dedication. Except for the limited purpose of indicating that
    material is shared under a Creative Commons public license or as
    otherwise permitted by the Creative Commons policies published at
    creativecommons.org/policies, Creative Commons does not authorize the
    use of the trademark "Creative Commons" or any other trademark or logo
    of Creative Commons without its prior written consent including,
    without limitation, in connection with any unauthorized modifications
    to any of its public licenses or any other arrangements,
    understandings, or agreements concerning use of licensed material. For
    the avoidance of doubt, this paragraph does not form part of the
    public licenses.
    
    Creative Commons may be contacted at creativecommons.org.
    56
    Hey everyone, well, the video says it best, so here it is:
    https://www.youtube.com/watch?v=fKSiVL7nIqM

    Essentially, due to changes in my schedule and work, I'll be hanging up the gloves on the video tutorial series.

    Feel free to watch through any of these videos though, as there is still a lot of material. This thread will also stay open for people to ask questions and discuss the videos, however, my involvement in answering those questions is going to come to an end.

    I really hope that you have enjoyed the series, and that it was helpful to you in your Android career!
    Notes:

    Recording Quality

    Just a quick note about the recording quality. There are two main video threads, the HD videos, and the non-HD videos.

    For the HD videos:
    New videos out in HD! I'm working on ways to improve the audio/video quality, but these videos are now released in 720p or 1080p quality depending which computer I use at the time. Be sure to check out these higher quality videos, and I am slowly remaking the older non-HD videos in HD as well (time and resources permitting).

    For the non-HD videos:
    I apologize that it is rather low. Several of the recordings were done over Xvnc, so there is sometimes lag in the video. Also, I have really slow speed and limited data internet (internet is expensive here), so I turned down the recording quality a bit so I could record the several hours of video. That said, the original recordings were done in ogg vorbis, then converted to mp4, and those were uploaded to Youtube. So there is a little bit of loss along the way, but even the ogg vobis recordings were not the highest quality. Do keep in mind that the Youtube quality is lower than the downloaded quality.

    Have suggestions or video tutorial requests?

    I can't promise that I will be able to add those videos (for instance, I don't own every phone on the planet, so I can't do a video for "how to build for xx phone", but if you have a generic suggestion that would benefit everyone, please post a comment, or consider uploading a tutorial video yourself.

    Considering contributing to the video series?

    The GitLab links are available, and the project is licensed under Creative Commons Attribution 4.0, so you are welcome to fork the repository and add more videos, as well as use pull requests! Be sure in your video to add your name (real or xda) so I can give you credit, and others know that you created the video (it will show on GitLab as well). I do ask that you restrain any use of profanity, as that will help create a more professional video that will not be offensive to listeners.

    Also, if you would like to make a translation, that would be great! Perhaps we could create another branch for each translation, or another repository or folder to hold them.

    If you have more questions about contributing videos, please send me a PM on XDA, or contact me through my website or on GitLab. Thanks!

    Have questions about building roms or kernels?

    While I would absolutely love to help everybody, I have 3 kids under 5 years old, a job, and all of those time taking life events that come with a family and work. You are welcome to post questions here, but I can't promise that I'll have time or be able to answer all of them, But I'll do my best. Perhaps other users will be able to assist you as well. If you have a specific question, and don't hear back from me, you may want to start a thread in the Q&A section of the forums. Remember to be as detailed as possible, and include logs! :D

    I really want to help you get started building. That said, I am not able to answer every question that possibly exists. I just am not that smart. :D
    However, this is a great place to ask questions! Another great place to ask questions is in the Q&A section for your device, if it is device specific.

    But I do have one request: Please don't PM me your questions. Please post your questions here instead, so I can answer one question for the group, rather than one on one questions. I want to help, but I don't have time to answer the volume of questions I am getting in my PM box. Please post you questions here in the thread. :D
    21
    Just a quick update: I'm working on some HD videos for Android Pie! Stay tuned!
    20
    Hey everyone!

    Just wanted to let you know that I was able to finish and upload another hour worth of videos! That's right, currently there is more than 9 hours of video tutorial available. As promised, this was added to the series:

    * Installing/using VirtualBox
    * Fixing a VB Ubuntu problem with screen resolution
    * Syncing minimal LineageOS or Omni for building TWRP
    * Converting an Omni TWRP device to LineageOS/CM and building it.
    * Custom TWRP mods with fonts/icons/splash screens/etc....

    Hope that you are enjoying the series, but mostly, I hope that it is informative and gets you building!
    I did try to up the video quality, but I had to tone it back down a bit, as the files became a bit large for uploading and handling. The quality is a little better than the first videos, but not exactly 1080p! :p

    Thanks again for all of the thanks button slaps and YouTube subscriptions. That lets me know that you guys really appreciate the videos.