Membuat Android ROM

Oct 12, 2020

Berada di komunitas modifikasi android, build rom alias membuat android rom menjadi salah satu bagian oprek yang jarang dimasuki. Sebagian alasanya karena susah lah, tak ada hardware yang mumpuni lah, butuh server lah ( ini juga menjadi alasan ketika pengembang ketika di tanyakan, bikin rom ini dong,hehe ). Dah ngelanturnya, yuh kita buat rom pertama anda. Dalam kasus saya, sasaran perangkat yang akan dibuatkan romnya itu Xiaomi Redmi 6A, jadi kemungkinan masalah yang akan dihadapi pun bakalan berbeda disetiap device.

0. Siapkan Komputer atau Server

Membuat Android ROM itu memperlukan perangkat yang mumpuni, dilihat dari sourcenya saja besarnya itu berkisar 100GB. Spek server yang paling ngenes sejauh ini yang teman ane pakai itu :

  • Processor 4 core
  • 250GB (ukuran yang cukup longgar untuk Android Pie)
  • RAM 8GB
  • /swap 16GB Dengan server segitu anda sudah bisa membuat Android ROM dalam waktu 8 jam (Android Pie) dan tentu bakalan sangat ngilu jika semisal terjadi error sesepele mungkin.

Server yang saya sarankan :

  • Processor 8 core
  • 250GB (ukuran yang cukup untuk Android Q)
  • RAM 32GB Server segitu anda sudah dapat membuat Android ROM dalam waktu sekitar 3-4 jam. Masih mendingan lah daripada spek mengenaskan teman saya.

1. Lakukan Instalasi Alat yang Akan Digunakan

Setelah mendapat server, apalagi yang harus diperbuat selain harus menyiapkan peralatanya? Yuh kita siapkan alatnya, nah disini saya menggunakan versi Ubuntu 20.04. maka tinggal melakukan pemasangan paket dibawah ini

sudo apt install openssh-server screen python git openjdk-8-jdk android-tools-adb bc \
bison build-essential curl flex g++-multilib gcc-multilib gnupg gperf imagemagick \
lib32ncurses-dev lib32readline-dev lib32z1-dev  liblz4-tool libncurses5-dev libsdl1.2-dev 
libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc \
yasm zip zlib1g-dev libtinfo5 libncurses5

Terimakasih ke situs ini untuk paket yang harus dipasang, semisal di tempatmu tidak ada salah satu aplikasi yang dipasang maka anda bisa menghapusnya dari perintah diatas atau anda dapat mencari penggantinya.

Kemudian memasang repo untuk mengunduh source code android

mkdir ~/.bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+x ~/.bin/repo
echo "export PATH=~/bin:$PATH" >> ~/.bashrc

2. Unduh Source Code Android ROM

Anda perlu untuk membaca manifest dari suatu Android ROM, misal anda akan membuat ROM POSP alias Potato Open Source Project. Maka anda perlu menuju ke sini dan membaca sedikit dokumentasi tentang cara menyalin ROM tersebut. Dalam dokumentasi ROM tersebut.

repo init -u https://github.com/PotatoProject/manifest -b croquette-release;
repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags

Agar sedikit lebih cepat maka repo sync sedikit saya ubah agar lebih cepat untuk mengunduhnya.

3. Cari Device Tree, Vendor, dan Kernel dari Perangkat Anda

Mengapa kita perlu mencari ketiga barang itu?

  1. Device tree sangat diperlukan ketika akan membuat android ROM karena berisikan infomasi mengenai perangkat yang akan dibuatkan romnya, kalau di Windows sebut saja yang namanya driver.
  2. Vendor tree sebetulnya dengan device tree, bedanya vendor itu isinya item yang non opensource alias proprietary, nah di perangkat yang saya bulid ternyata vendornya pakai yang bawaan dari perangkanya, istilahnya tinggal di mount saja (Big thanks to project treble).
  3. Kernel yang digunakan di sini itu kernel Linux yang telah dimodifikasi oleh pembuat perangkat dengan ditambahkan komponen non opensource alias proprietary

Dalam perangkat yang saya akan buat ini, ternyata telah ada yang membuatnya, dan telah dikumpulkan dalam satu pintasan yaitu local_manifests. Kita tinggal menggunakanya.

git clone https://github.com/wulan17/local_manifests .repo/local_manifests

Kemudian tinggal melakukan repo sync kembali.

Untuk device yang tidak mempunyai ketiga hal tersebut, dapat sekiranya untuk membuatnya dari awal. Namun saya tidak membahasnya kali ini, lebih lengkapnya baca disini (Karena saya belum pernah buat device tree, maka saya melampirkan website yang sudah ada, jadi kalian yang menyebut saya mastah atau apalah, ternyata ada sisi newbienya juga, harap maklum )

4. Atur Device Tree

Setelah semua terunduh, maka langkah berikutnya anda perlu menganti nama file dan mengganti nama file agar sesuai dengan ROM yang akan anda buat.

  1. Masuk ke folder Device Tree dan tentu setiap device bakal berbeda.
cd device/xiaomi/cactus/
  1. File (rom_sebelumnya)_cactus.mk menjadi (rom_sekarang)_cactus.mk. Contohnya semisal di Device Tree ada konfigurasi untuk ROM Komdo OS, sementara anda ingin membuat ROM POSP, maka anda ubah komodo_cactus.mk menjadi potato_cactus.mk (lihat disini dan lihat ROM itu maunya bagaimana )
mv komodo_cactus.mk potato_cactus.mk ## Contoh
  1. Ganti sejumlah nama ROM yang masukan di Device Tree dengan yang anda akan buat Misal dari maintainer Device Tree habis buat ROM Komodo OS dan anda ingin buat ROM POSP maka tinggal ubah file yang sudah diganti namanya dengan seperti berikut. Anda bebas untuk memakai teks editor kesukaan anda.
# Inherit from device
$(call inherit-product, device/xiaomi/cactus/device.mk)

# Inherit some common Komodo OS stuff.
$(call inherit-product, vendor/komodo/config/common_full_phone.mk) #komodo ganti dengan potato
CURRENT_BUILD_TYPE := nogapps
KOMODO_OFFICIAL := true

# Device identifier. This must come after all inclusions
PRODUCT_DEVICE := cactus
PRODUCT_NAME := komodo_cactus #komodo ganti dengan potato
PRODUCT_BRAND := xiaomi
PRODUCT_MODEL := Redmi 6A
PRODUCT_MANUFACTURER := Xiaomi

# Override fingerprint from stock
PRODUCT_BUILD_PROP_OVERRIDES += \
    PRIVATE_BUILD_DESC="cactus-user 9 PPR1.180610.011 V10.4.4.0.PCBCNXM release-keys" \
    PRODUCT_NAME="cactus" \
    TARGET_DEVICE="cactus"

BUILD_FINGERPRINT := xiaomi/cactus/cactus:9/PPR1.180610.011/V10.4.4.0.PCBCNXM:user/release-keys

Anda cukup menganti komodo menjadi potato ( dalam kasusu ini ).Nah jadilah begini

# Inherit from device                                                                                                                                 
$(call inherit-product, device/xiaomi/cactus/device.mk)                                                                                               
                                                                                                                                                      
# Inherit some common Komodo OS stuff.                                                                                                                
$(call inherit-product, vendor/potato/config/common_full_phone.mk)                                                         
CURRENT_BUILD_TYPE := nogapps                                                                                                                         
KOMODO_OFFICIAL := true                                                                                                                               
                                                                                                                                                      
# Device identifier. This must come after all inclusions                                                                                              
PRODUCT_DEVICE := cactus                                                                                                                              
PRODUCT_NAME := potato_cactus
PRODUCT_BRAND := xiaomi                                                                                                                               
PRODUCT_MODEL := Redmi 6A                                                                                                                             
PRODUCT_MANUFACTURER := Xiaomi                                                                                                                        
                                                                                                                                                      
# Override fingerprint from stock                                                                                                                     
PRODUCT_BUILD_PROP_OVERRIDES += \                                                                                                                     
    PRIVATE_BUILD_DESC="cactus-user 9 PPR1.180610.011 V10.4.4.0.PCBCNXM release-keys" \                                                               
    PRODUCT_NAME="cactus" \                                                                                                                           
    TARGET_DEVICE="cactus"                                                                                                                            
                                                                                                                                                      
BUILD_FINGERPRINT := xiaomi/cactus/cactus:9/PPR1.180610.011/V10.4.4.0.PCBCNXM:user/release-keys
  1. Ganti AndroidProducts.mk Semisal isi file AndroidProducts.mk anda seperti ini :
PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/komodo_cactus.mk

COMMON_LUNCH_CHOICES := \
    komodo_cactus-user \
    komodo_cactus-userdebug \
    komodo_cactus-eng

Anda tinggal mengganti komodo menjadi potato. Nah jadilah seperti ini.

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/potato_cactus.mk

COMMON_LUNCH_CHOICES := \
    potato_cactus-user \
    potato_cactus-userdebug \
    potato_cactus-eng
  1. Jika terjadi error berkaitan dengan vendor/(nama rom) maka anda tinggal melihat isi folder vendornya

5. Mulai !!

Lihat pada manifest ROM yang akan dibuat. Project ROM yang baik biasanya dokumentasinya juga ada. Tinggal ikuti saja maunya, semisal pada POSP

source build/envsetup.sh 
add_lunch_combo potato_cactus-userdebug; #atau lunch potato_cactus-userdebug
brunch cactus;

6. Sekian

Sekian tahapan pembuatan Android ROM. Jika ada yang kurang berkenan maka anda dapat menyampaikan kritik dan saranya. Jika anda mengalami error jangan sungkan tanya ke komunitas ROM atau perangkatnya. Terima Kasih untuk semua pihak, terutama @wulan17 yang repositorynya tak jadikan bahan tutorial.

panduanlinuxgnupemulaandroidrom
Creative
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

nru

Trying to expand knowledge and make life more maintainable & fun.

Memasang gcloud SDK di Termux

Arch Linux untuk Pemula?