Une fois n’est pas coutume, un chouya d’informatique (pas de quoi en faire un site différent)
Je viens de builder quelques applications d’android AOSP (plutôt Lineage en l’occurrence mais Lineage n’a pas apporté beaucoup de modifications) car mon téléphone ne les a pas dans son système d’origine
Pour une compatibilité accrue, j’ai changé les noms de packages en com.spisoft.aosp.*
Appli email

Télécharger:
Email.apk
Keyboard AOSP

Télécharger:
LatinIME-signed.apk
Instructions de build:
/!\ Attention cela nécessite de télécharger tout Lineage (variante d’android) et de compiler l’ensemble. Il y a sans doute plus simple mais je retrace exactement les étapes que j’ai suivies. L’idée étant qu’initialement, je m’étais buildé une rom lineage
OS : Ubuntu 16.04 AMD64
Les dépendances
sudo apt install git openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip repo
Là vous allez avoir besoin de place, beaucoup de place, dans le doute comptez 100go pour le sync et le build
cd where-ever-you-want-to-download-lineage
repo init -u git://github.com/LineageOS/android.git -b lineage-16.0
repo sync
Devrait mettre du temps. Moment idéal pour ranger l’appartement, repeindre la cuisine, renverser le gouvernement.
Ensuite
cd Lineage
. build/envsetup.sh
breakfast manta
On démarre le build
brunch manta
manta étant la référence d’un device lambda, attention une rom Lineage complète sera générée à la suite de ça. Rom dont on n’a pas besoin intégralement.
Bonne nuit. C’est plus long que le démarrage de Windows 7.
C’est fini ? Pas d’erreur ?
Menteurs.
Bien des machines ne supportent pas le build la première fois, souvent dû à un manque de ram. Googlez votre erreur. Fréquemment, un certain Jack fait des siennes
Là, c’est bon ?
Email
Ok, donc on va re-builder l’appli mail comme promis, avec un nouveau nom de package
cd packages/apps/Email
Tout d’abord, on modifie les fichiers (remplacez votre-nouveau-package par votre nom de package)
find . -type f | xargs sed -i 's/com\.android\.emailcommon/com.android.emtailcommon/g' &&
find . -type f | xargs sed -i 's/com\.android\.email/votre-nouveau-package/g' &&
find . -type f | xargs sed -i 's/com\.android\.emtailcommon/com.android.emailcommon/g'
Navré, je suis une merde en regex donc j’ai été contraint de faire ça. La première et la dernière ligne sont pour éviter de modifier les com.android.emailcommon. C’est sale. Ça marche. C’est à mon image.
Ensuite, on doit déplacer deux trois dossiers
cd src/com/android
Vous avez deux dossiers : Email et Email2
Ces deux dossiers devront être déplacés selon votre nom de package
Exemple avec mon propre cas
Package originel étant com.android.email
Le nouveau étant com.spisoft.aosp.email
Les dossiers
src/com/android/email et src/com/android/email2
ont dû être déplacés dans
src/com/spisoft/aosp
ce qui donne
src/com/spisoft/aosp/email et src/com/spisoft/aosp/email2
Pour finir, ouvrez Android.mk, trouvez les lignes commençant par LOCAL_SRC_FILES et ajoutez
LOCAL_SRC_FILES += $(call all-java-files-under, src/com/spisoft/aosp)
en remplaçant spisoft/aosp par vos propres dossiers
Puis, dernière étape
mma
L’apk final sera dans
out/target/product/manta/system/app/Email
Keyboard
In English now because la flemme de préparer la future version bilangue
First change package name in manifest:
sed -i 's/package="com\.android/package="com.spisoft.aosp/g' java/AndroidManifest.xml
then fix manifest references
sed -i 's/="\./="com.android.inputmethod.latin./g' java/AndroidManifest.xml
sed -i 's/="LatinIME/="com.android.inputmethod.latin.LatinIME/g' java/AndroidManifest.xml
fix resources
find . -type f | xargs sed -i 's/apk\/res\/com\.android\.inputmethod\.latin/apk\/res\/com.spisoft.aosp.inputmethod.latin/g'
fix provider
find . -type f | xargs sed -i 's/>com\.android\.inputmethod\.dictionarypack\.aosp</>com.spisoft.aosp.inputmethod.dictionarypack.aosp</g'
cd ../java-overridable
find . -type f | xargs sed -i 's/"com\.android\.inputmethod\.dictionarypack\.aosp"/"com.spisoft.aosp.inputmethod.dictionarypack.aosp"/g'
Ready to build !
cd ..
mma
Treaky part, integrate native libs, otherwise dictionnary is cabum
You will need to resign the apk, so be careful to have a keystore apk-signer etc
cd lineage-root-folder
mkdir out/target/product/manta/system/app/LatinIME/libs/armeabi-v7a
cp out/target/product/manta/system/lib/libjni_latinime.so out/target/product/manta/system/app/LatinIME/
cd out/target/product/manta/system/app/LatinIM
add the library
aapt add LatinIME.apk libs/armeabi-v7a/libjni_latinime.so
resign
apksigner sign --ks keystore --out LatinIME-signed.apk --ks-key-alias keyalias LatinIME.apk
And install LatinIME-signed.apk
Enjoy
EDIT 16/03 : ajout du clavier AOSP