Les .apk

 

Les fichiers apk sont des applications pour Android. Il s'agit d'un package Android: Android PacKage. Ce package contenant le code exécutable, les ressources et les autorisations à donner pour que l'application puisse fonctionner.

Si vous développez vous même votre application, vous retrouverez ce fichier après le build du projet sous le répertoire bin de votre projet.

En effet, Android ne traite pas des fichiers .JAR traditionnels du monde JAVA, mais des fichiers occupant moins de place pour être supporté par des "petits" appareils sous Android.

 

Il existe deux types d'applications:

  • Les applications utilisateurs, toutes applications que vous installerez vous même, éventuellement celles déjà installées par le constructeur.
  • Les applications systèmes, toutes applications liées à Android, mais aussi toutes celles préinstallées afin de ne pas pouvoir être effacées par l'utilisateur ! Bref les applications commerciales (publicitaires ou avec abonnement comme canal plus et bien d'autres ...). En principe, les applications systèmes sont livrées avec l'appareil. Hormis une maj du firmware, il n'est donc pas possible de rendre système de nouvelles applications. Sauf si vous avez rooté votre appareil, dans ce cas, vous pourrez installer vous même de nouvelles applications systèmes (et supprimer celles qui ne sont pas utiles en passant !).

 

Installer un .apk niveau utilisateur

Pour les installer:

  • La première solution évidente est d'utiliser Google Play. Soit par navigateur internet, soit en utilisant l'application Google Play (anciennement Android Market).
  • Mais toutes les applications ne sont pas forcément présentes sur cette plateforme ! C'est le cas des applications ne respectant pas la politique de Google (Par exemple AdAway: bloqueur de publicités ou encore des apps stores concurrents).

    Dans ce cas, comment les installer ?

    Généralement, pour ces applications interdites, vous trouverez le site officiel de l'application (et bien uniquement le site officiel pour limiter le risque de virus !) via le moteur de recherche de Google (sic !). Il vous restera à télécharger l'application APK.

    • Soit depuis votre PC. Vous recopierez ensuite l'application apk sur votre appareil sur votre carte SD, dans un répertoire quelconque voire sur la mémoire interne.
    • Soit via un navigateur de votre appareil Android. L'application sera généralement copiée sous le répertoire "Download" de la mémoire interne. Sinon contrôlez à la racine de la "SdCard" ou "Download" sous sdcard (utilisez un gestionnaire de fichier standard ou es explorer ou root explorer par exemple). La notification de fin de téléchargement devrait aussi vous permettre de retrouver l'emplacement.

    Une fois téléchargé, il faudra l'installer. Utilisez es explorer ou autres outils similaires pour vous positionner sur le fichier .apk téléchargé précédemment et cliquez dessus. L'installation va démarrer (Vous aurez éventuellement à choisir le programme qui va s'occuper de l'installation) et Android demandera éventuellement d'accepter les sources inconnues si vous ne les avez pas déjà autorisées.

 

  • Mais aussi des applications que vous avez développé, ...
    • Utilisez Eclipse pour demander à exécuter le code de votre projet sur votre appareil. Commencez par brancher votre appareil sur votre PC, puis depuis par le Package Explorer, clique droit sur votre projet, option Run As/Application Android:Image non trouvée ! Et choisissez votre appareil qui doit apparaître dans la liste "Choose a running Android device". Enfin Ok et c'est parti... (il faudra éventuellement déverrouiller votre mobile et autoriser les sources inconnues). Il y a d'autres solutions pour lancer votre application via eclipse. Je ne vais pas toutes les énumérer !
    • Ou hors eclipse, placez le fichier .apk (par exemple celui généré sous bin de votre projet) puis utilisez un explorateur de fichier sous Android pour lancer l'installation de l'.apk (même solution que pour les apk hors Google Play).

     

  • Utilisez adb...: Réservé aux initiés !

    Avec une session DOS par exemple, positionnez vous sous le répertoire bin de votre projet:

    Exemple: Si ce n'est pas déjà fait, lancez un build de votre projet. Puis dans votre session DOS, tapez

    c:

    cd \worspace\monprojet\bin (il faudra connaître l'emplacement du workspace utilisé par Eclipse, ici ce sera sous c:\worspace).

    [...chemin d'accès à ...]\adb install -l MonAppli.apk (Eventuellement option -r en plus pour réinstaller une application, voire -s pour une installation sur la sd card).

    [...chemin d'accès à ...] correspondant au chemin d'accès de votre adb.

    MonAppli étant l'application que vous développez ou celle que vous avez récupéré.

 

Toutes ces solutions permettent d'avoir une application de type "utilisateur". L'application se retrouvera installé sous /data/app. Elle pourra donc être suprimée facilement via les outils standards d'Android.

 

Les applications systèmes

Il vous sera possible de transformer votre application utilisateur en application système. Mais les manipulations ne seront pas simples (connaissance du monde Unix obligatoire !):

  • Rootez votre appareil.
  • Déplacez le fichier apk situé sous /data/app vers /system/app.

Plusieurs solutions sont possibles:

 

Les opérations sont:

  • Dans tous les cas, il faut avoir des privilèges root. Il faudra donc donner ces droits à votre explorateur de fichiers ou taper su sous terminal emulateur.
  • Puis, il faudra certainement monter le répertoire /system en lecture/écriture (vrai pour tous appareils récents).
  • Si l'application est déjà installée:
    • recherchez l'application que vous voulez rendre système sous /data/app:

      Les applications se présentent sous la forme /data/app/package.nomApplication.apk

      Le problème va donc être de retrouver votre application sous /data/app. Aidez vous de l'icone de lancement, ainsi que du nom du package que vous devriez connaître si vous l'avez développé.

      Dans le cas d'une application provenant de Google Play, vous trouverez le nom du package dans la barre d'url juste après id=

      Par exemple, en recherchant l'application "es explorer" sous Google Play et en cliquant dessus pour avoir le détail, la barre d'url sera:

      https://play.google.com/store/apps/details?id=com.estrongs.android.pop

      L'application est donc pop.apk, le package est com.estrongs.android.

 

Avec un explorateur de fichier, il suffit de lister le contenu de /data/app

Avec terminal emulator, tapez ls /data/app (évidemment, vous aurez du mal à vous aider de l'icone dans ce cas !)

 

    • Une fois trouvée, déplacez (et non copiez) le fichier sous /system/app. Manipulation facile à faire avec un gestionnaire de fichier !

      Avec terminal emulator, il faut tapez mv /data/app/package.monApplication.apk /system/app/package.monApplication.apk

    • Vérifiez/changez les droits d'accès de l'application:

    Avec l'explorateur, demandez les propriétés de l'application et changez les droits pour obtenir:

    • une lecture pour le propriétaire/groupe/Autres,
    • une écriture uniquement pour le propriétaire,
    • et aucun droit en exécution (Ce n'est pas un programme exécutable Unix, seul dalvik est capable d'interpréter le contenu de ce fichier).

    Avec terminal emulateur, tapez chmod 644 /system/app/package.monApplication.apk

    • Changer le propriétaire/groupe pour le root (0:0) par explorateur ou sous terminal emulateur: chown root:root /system/app/package.monApplication.apk
    • Rebootez votre appareil pour qu'Android prenne en compte la nouvelle application (le plus simple étant d'éteindre et de rallumer votre appareil).

     

  • Si l'application n'est pas installée mais l'apk est présent quelque part sur votre appareil:
    • Déplacez ou cipez (si vous voulez garder une double) le fichier .apk directement sous /system/app
    • Manipulation toujours aussi facile à faire avec un gestionnaire de fichier qui a les droits root !

      Avec terminal emulator, il faut tapez mv /chemin_ou_se_trouve_l_application/monApplication.apk /system/app/monApplication.apk

    • Vérifiez/changez les droits d'accès de l'application:

    Avec l'explorateur, demandez les propriétés de l'application et changez les droits pour obtenir 644:

    • une lecture pour le propriétaire/groupe/Autres,
    • une écriture uniquement pour le propriétaire,
    • et aucun droit en exécution (Ce n'est pas un programme exécutable Unix, seul dalvik est capable d'interpréter le contenu de ce fichier).

    Avec terminal emulateur, tapez chmod 644 /system/app/package.monApplication.apk

    • Changer le propriétaire/groupe pour le root (0:0) par explorateur ou sous terminal emulateur: chown root:root /system/app/package.monApplication.apk
    • Rebootez votre appareil pour qu'Android prenne en compte la nouvelle application (le plus simple étant d'éteindre et de rallumer votre appareil).

 

Désinstaller des applications systèmes

Par la suite, si vous avez besoin de désinstaller votre application système, il sera nécessaire d'utiliser des outils particuliers comme Titanium backup, car Android ne vous autorisera jamais à effectuer cette opération ! Votre application faisant partie du système !