AOSP Apps

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

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 cm-14.1
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