Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Bir zahmet scripti nasıl çalıştıracağınızı da bilin. Arch tabanlı dağıtımlara daha sonra bir script yazacağım. Fedora için Akhilnarang betiğinin bile desteği yok.
Hocam sıfır Linux bilgisi, sadece ROM flashlamış (ki çok zor birşey de değil zaten sizinde bildiğiniz gibi) biri olarak bende geliştirmeye başlamak istiyorum, bir kaç sorum var tabii size sormak istediğim:
Mint Linux bu iş için uygun mu?
ROM'u derledikten sonra elbet bug'lar veya hatalar olacak, bunları düzeltmek için illede C+/C++, Python veya Kotlin tarzı bir dil bilmemize gerek olacak mı?
Cuttlefish kullanarak sanal makinede ROM'u test edebilirim değil mi?
Hocam sıfır Linux bilgisi, sadece ROM flashlamış (ki çok zor birşey de değil zaten sizinde bildiğiniz gibi) biri olarak bende geliştirmeye başlamak istiyorum, bir kaç sorum var tabii size sormak istediğim:
Mint Linux bu iş için uygun mu?
ROM'u derledikten sonra elbet bug'lar veya hatalar olacak, bunları düzeltmek için illede C+/C++, Python veya Kotlin tarzı bir dil bilmemize gerek olacak mı?
Cuttlefish kullanarak sanal makinede ROM'u test edebilirim değil mi?
Linux Mint uygun evet.
Bug'ları veya hataları derlediğiniz ROM'un githubunda Issue olarak paylaşın. Kendiniz düzeltemezsiniz, yani mesela Lineage 22.0 derlediniz diyelim kamera çalışmıyor github.com/LineageOS/android sayfasında Issue kısmında paylaşacaksınız. İngilizce bir şekilde.
Cuttlefish nedir? ROM test edebilme özelliği varsa elbette edebilirsiniz.
Custom ROM derlemek kolay değildir ancak dünyanın en zor işi de değildir. Aşağıdaki adımları takip ederek, gereksinimleri karşılayarak size bir Custom ROM derleyicisi olabilirsiniz. Rehberde, XIAOMI Redmi Note 10 Pro cihazımı kullandım. Bu rehberi açma amacım foruma katkı sağlamak ve diğer telefonlara da bunu yapabilmenizi sağlamak.
1. Gereksinimler
┌── Linux bir sistem. (Ubuntu, Debian, Arch olabilir.) | MacOS veya WSL olmuyor, sanal makineye veya Linux bir sisteme ihtiyacınız var. | İyi bir internet bağlantısı (1GBPS Şiddetle tavsiye edilir, çekeceğimiz veri 150GB kadar olabilir.) | En az 4 çekirdekli işlemci, 8 tavsiye edilir. | Minimum 16GB RAM. (RAM 16'ysa 32'ye SWAP ayarlamanız zorunludur.) | 300GB kadar boş alana sahip bir SSD. (NVMe önerilir.)
└─ Basit bir Linux bilgisi 2. Gereken scripti çalıştırma Bu işi kolaylaştıran bir script var, Akhilnarang betiği. İşimizi kolaylaştırması için bu scripti bilgisayarımıza git kullanarak çekeceğiz ve çalıştıracağız.
Kod:
git clone https://github.com/akhilnarang/scripts
cd scripts && bash setup/android_build_env.sh # alternatif olarak arch dağıtımı tercih edildiyse arch-manjaro.sh
3. Git ayarını yapma Android'in kaynak dosyalarını çekmeden önce, kim olduğumuzu git'e belirtmemiz gerekiyor. Bunun için de bir GitHub hesabına sahip olmanız gerekiyor.
4. ROM seçimi Mevzu Custom ROM olunca, tonlarca seçeneğiniz var. Bu bağlantıya tıklayarak tüm ROM'ları görebilir, seçebilirsiniz. Ben rehberimde LineageOS kullanacağım. ROM seçme sitesinden seçtiğimiz ROM'un GitHub sayfasına gidiyoruz. Ardından manifest (android olarakta isimlendirilebilir) reposuna gidiyoruz. 5. ROM ortamının hazırlanması ve verilerin çekilmesi
Kod:
mkdir rom
cd rom
repo init -u https://github.com/LineageOS/android.git -b lineage-21.0 --git-lfs --depth=1
Bu komut ile rom isimli bir klasör oluşturuyorum, klasöre giriyorum ve Android verilerini çekmeye başlıyorum. --depth=1 argümanı opsiyoneldir, kötü internetiniz varsa kullanmanız şiddetle tavsiye edilir. Şimdi ise verileri çekeceğiz.
Bu işlem uzun sürecektir. Beklememiz gerekiyor. 6. Cihaz kaynaklarının ayarlanması Şimdi ise herkeste değişecek o konuya geldik, bu adım çok önemli. Cihaz ağacınızı ve vendorunuzu bulup rom klasörüne eklemeniz gerekli. Cihaz ağacınız cihazınız hakkında donanımsal bilgileri içeren dosyaları barındırıyor. Vendor dosyaları ise yine donanımsal bilgileri barındırıyor ama genelde kapalı kaynaklı dosyaları barındırıyor. Her cihazın kendi cihaz ağacı vardır, yoksa sizin yazmanız gerekir. Ama bu da rehberin dışına çıkar ve çok zordur. Benim cihazım Lineage tarafından desteklendiği için breakfast sweet yazdığımda benim için cihaz ağacımı çekecek fakat vendoru çekmeyecek, çünkü vendorda kapalı kaynak dosyalar mevcut. Cihazımız desteklenmeseydi .repo klasörünün altında oluşan localmanifest klasörüne bir .xml dosyası oluşturup aşağıdaki kodu girecektim.
7. Derleme için hedef belirleme Derleme işlemine başlamadan önce derlemenin amacını belirtmemiz gerekiyor. Bunu da lunch komutu kullanarak yapıyoruz. rom-ismi kısmına ROM ismini yazacaksınız. Mesela lineageos, code-name kısmına da cihazınızın kod adını yazacaksınız. Örnek olarak sweet.
Kod:
lunch rom-ismi_code-name-userdebug # durumuna bağlı olarak stable bir build için user veya aşırı ekstra debuglamak için eng ek'i kullanılabilir.
8. Derlemenin başlatılması
Kod:
brunch sweet
Kodu ile derlemeyi başlatıyorum. sweet yerine yine cihazınızın kod adını yazacaksınız. Bu iş çok uzun sürecek. 24-48 saat gibi süreleri bekleyebilirsiniz. Derleme bittiğinde ROM'unuz out/target/product/kod-adı içerisinde olacaktır. 9. Ek bilgiler Eğer ki Google servislerini kullanmak isterseniz, OpenGApps flaşlamanız gerekecek.
İşlemlerin sonunda, sizde bir ROM derleyicisi olabilirsiniz.
SafetyNet'ten geçebilmek için ROM'u imzalayın, bunun için LineageWiki'sini okuyun.
Olur da cihaz resmi olarak desteklenmeseydi, .repo/localmanifest klasörüne sweet.xml veya kodadı.xml isimli dosya oluşturup device tree, vendor tree ve kernel tree'i rehberdeki düzenle yapıştıracaktım. Repo sync ile değişiklilikleri yansıtacaktım.
Bug'ları veya hataları derlediğiniz ROM'un GitHub'unda ıssue olarak paylaşın. Kendiniz düzeltemezsiniz, yani mesela lineage 22.0 derlediniz diyelim kamera çalışmıyor github.com/LineageOS/android sayfasında ıssue kısmında paylaşacaksınız. İngilizce bir şekilde.
Çok garip. Yani Android'in açık kaynağından yararlanıp çok ilgi gören ve şu anda bile kişilerin cebinde bulunan cihazlarda olan bir ROM yapıyorsun ancak bilgiyi paylaşmayı sevmiyorsun. Garip...