En realidad, las instrucciones que están en la twiki de LineageOS son bastante claras. De hecho yo pude compilar las ROMS para los siguientes teléfonos sin problema:
- Samsung Galaxy S4 mini (serranoltexx)
- Samsung Galaxy J7 2015 (j7elte)
- Motorla G6 plus (evert )
Así que, aggarren uno de esos links (o busquen el de su teléfono) y síganlo. Acá abajo un resumen de como hice el de evert (G6Plus)
Necesitás todo lo que haga falta para compilar código C/C++ y java por lo pronto. Y, claro, el android sdk. Así que, dependiendo de que OS tengas ahí vas a tener que arremangarte y buscar.
En la twiki de lineageOS hay una lista explícita de que binarios y librerías necesitás tener. Yo uso Arch y Manjaro. De modo que busqué en los repositorios los paquetes que tengan los nombres parecidos a los que figuran ahí y los instalé a todos. Y si faltaba algo, entonces instalé las dependencias (así de cabeza). Yo tengo instalado openJDK 9 y con eso pude ompilar lineageOS17 (Android 10) sin problema.
En la twiki de LineageOS dice que te bajes el comando "repo". En Arch/Manjaro está en AUR. Yo estoy usando ese. Si no bajate el que dice ahí. También te dice que te bajes del sitio de gúgel las platform-tools-latest-linux.zip. En Arch y Manjaro están disponibles en los repositorios así que yo uso las de mi distro.
No voy a copiar acá toda la twiki de LineageOS, si no resumir los pasos. Leéte la twiki de LineageOS que es un golazo. Esto que sirva de machete :-)
Notá que todo el repo (y subódulos) de LineageOS ocupan como 50 GB!. Así que preparáte un directorio en un disco donde tengas al menos el doble de eso (por decir algo). Como el proceso de compilación hace muuucho acceso al disco, si lo podés hacer en un SSD, mejor!
OK. No voy a explicar como funciona git, ni recordarte que si instalaste las cosas de arriba a mano las tenés que tener en tu PATH. Así que va:. Primero bajar el repo:
repo init -u https://github.com/LineageOS/android.git -b lineage-17.1
repo sync
El primer comando inicia el repositorio y el segundo lo puebla. Esto tarda UN TOCAZO! y se baja TOOOOOOoooodo. A mi me pasó que falló un par de veces. Así que cada vez que fallaba, nada, hacía "repo sync" de nuevo hasta que terminó. Tarda horas.
Cuando termina de bajarse todo, es cuando podés empezar a compilar.
repo sync # Esto sólo si hace banda que sincronizaste el código por última vez.
source build/envsetup.sh # levanta el entorno y los aliases y demás para poder hacer lo que sigue
breakfast evert # donde evert acá es el codename de mi teléfono. Vos acá pondrás el tuyo. Si no está soportado por lineageos, siamo fuori
Acá va a preparar todo para poder comilar Android para ese hardware específico de tu dispositivo. En el caso de evert (o los de Samsung que puse mas arriba) tienen lo que se llaman "proprietary blobs" O sea binarios propietarios que necesitás para poder hacer andar tu dispositivo pero que no tenés el codigo fuente para compilarlo. Entones los tenés que conseguir vos. LineageOS no te los puede proveer. Por suerte están estos magos de TheMuppets que tienen ahí colleccionados TODOS los blobs!!! Esto me tomó DIAS resolver. Pero estos los tienen todos ahí!
Hay dos modos de usar los repos de TheMuppets:
- El posta: Agregás el repo de ellos siguiendo estas instrucciones A mi no me funcionó
- El Cabeza (que hice yo): te bajás el repositorio del vendor que estés interesado a mano. Por ejempo. Para los de Motorola te bajás ==proprietary_vendor_motorola==
El cabeza sería así:
cd vendor
git clone https://github.com/TheMuppets/proprietary_vendor_motorola motorola
cd ../
Eso te crea un directorio llamado motorola con el contenido de los blobs de todos los dispositivos de motorola colectados en TheMuppets. Y listo. Si tuviste que hacer esto, la twiki dice de hacer breakfast de nuevo. Así que va:
breakfast evert # donde evert acá es el codename de mi teléfono. Vos acá pondrás el tuyo. Si no está soportado por lineageos, siamo fuori
Ahora setear parámetros de cache y otras giladas: export USE_CCACHE=1 export CCACHE_EXEC=/usr/bin/ccache ccache -M 50G # or 20 GB ccache -o compression=true croot # esto básicamente hace cd a donde tenés lineagos
Y ahora cruzamos los dedos y compilamos:
brunch evert
Esto tarda mil. Y a mi cuando probé con 8GB de RAM no andaba. Con 16 GB va. Y tarda. Banda. Horas. Ahora, una vez que tenés compilado la salida la vas a tener en out/target/product/. Para mí es evert:
ls out/target/product/evert/*zip
out/target/product/evert/lineage-17.1-20201124-UNOFFICIAL-evert.zip
out/target/product/evert/lineage-17.1-20201207-UNOFFICIAL-evert.zip
out/target/product/evert/lineage-17.1-20201219-UNOFFICIAL-evert.zip
Ahí tenés las roms que compilé en los últimos días. Lo bueno es que una vez que compilaste, compilar para otro dispositivo tarda menos. Y compilar unos días después, y habiendo hecho "repo sync" también tarda poco. Siempre y cuando lo que tengas seteado de cache sea suficientemente grande como para que esté en el caché parte del resultado de la compilación anterior.
Si tu dispositivo tiene la ROM de fábrica (Stock ROM) vas a tenér que flashear un recovery (puede ser el que sale del output de la compilación de lineageOS o uno de TWRP ) y con eso flashear esta rom.
Si tu dispositivo ya tiene una ROM custom, seguro ya tenés un recovery que la pueda flashear. Si hace falta pongo una guía de ejemplo acá de como flasheo evert o serranoltexx
Lo tenés que hacer cada vez que levantes el terminal para compilar la rom (o sea en cada nueva sesión) tipo "Hoy voy a prender la máquina y voy a compilar la rom", es:
repo sync # para que actualice el código
source build/envsetup.sh
breakfast evert # cambiá evert por el codename de tu dispositivo)
export USE_CCACHE=1; export CCACHE_EXEC=/usr/bin/ccache ; ccache -M 50G ;ccache -o compression=true
croot
brunch evert # Cambiá evert por tu dispositivo
E basta!