Developers » AS2 tagging » Android » Fonctionnalités avancées » Instant App
Instant App
Avant-propos
Avant de commencer, vous devez télécharger notre SDK via l’application Tag Composer en vous connectant à votre compte AT Internet ou utiliser la dépendance du SDK présente dans JCenter (voir la documentation sur l\’intégration de la bibliothèque).
La création d’une application instantanée nécessite au minimum la version Android Studio 3.0.
Voir l’ensemble des prérequis sur la documentation officielle : https://developer.android.com/topic/instant-apps/getting-started/index.html
Structure de base d’un projet
Une application instantanée « basique » se compose de trois modules, le module de l’application instantanée (Instant app module), le module de l’application installée (App module) et le module feature de base (Base feature) (voir https://developer.android.com/topic/instant-apps/getting-started/structure.html).
Intégration dans Android Studio
Bibliothèque
Le principe d’intégration reste le même que sur une application standard. Seule la destination change puisque, pour intégrer la bibliothèque à votre projet, vous devez la copier dans le dossier « MonProjet/feature/libs » du module feature de base (Base feature), ce module contenant entre autre les ressources partagées entre les modules Instant app et App.
Après avoir synchronisé votre projet (Sync Project with Gradle Files), ouvrez le fichier build.gradle du module feature de base (feature dans l’exemple).
Fichier build.gradle :
- Intégration de la bibliothèque au format JAR
apply plugin: 'com.android.feature' android { compileSdkVersion 26 defaultConfig { minSdkVersion 23 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // If this block doesn't exists, add it repositories{ maven { url "https://dl.bintray.com/atinternet/maven/" } flatDir { dirs 'libs' } } dependencies { api fileTree(dir: 'libs', include: ['*.jar']) implementation project(':base') testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' }
- Intégration de la bibliothèque au format AAR
apply plugin: 'com.android.feature' android { compileSdkVersion 26 defaultConfig { minSdkVersion 23 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // If this block doesn't exists, add it repositories{ maven { url "https://dl.bintray.com/atinternet/maven/" } flatDir { dirs 'libs' } } dependencies { api fileTree(dir: 'libs', include: ['*.aar']) implementation project(':base') testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' }
- Intégration de la dépendance JCenter
apply plugin: 'com.android.feature' android { compileSdkVersion 26 defaultConfig { minSdkVersion 23 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // If this block doesn't exists, add it repositories{ maven { url "https://dl.bintray.com/atinternet/maven/" } flatDir { dirs 'libs' } } dependencies { implementation project(':base') testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' api 'com.atinternet:Tracker:2.x.x'// >= 2.0.6 }
Dans le cadre des « bonnes pratiques » préconisées sur les Instant App, il est conseillé de réduire le poids global des modules (incluant le dossier « libs » avec les archives). Il est alors préférable pour l’utilisateur de charger la bibliothèque au format JAR, plus léger.
A noter toutefois, que, dans ce cas, il ne sera pas possible d’activer le Livetagging et le Debugger nécessitant des ressources graphiques présentes seulement dans l’archive au format AAR.
Les fonctionnalités Livetagging et Debugger ne sont pas disponibles sur les modules de type Instant app à cause notamment de limites en terme de permissions Android (impossibilité d’utiliser la permission sur l’overlay : « android.permission.SYSTEM_ALERT_WINDOW »). Voir https://developer.android.com/topic/instant-apps/faqs.html pour plus de détails.
Autorisations
L’ajout des autorisations doit se faire dans le fichier AndroidManifest.xml du module feature de base.
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Marquage
Le marquage doit être ajouté dans les activity de la ou des features concernées en fonction de la structure du projet.
Selon la FAQ de la documentation Android : « All the network traffic from inside instant apps must use HTTPS. Instant apps does not support HTTP. » (voir https://developer.android.com/topic/instant-apps/faqs.html).
Le mode secure du Tracker doit être activé (avec log secure) pour permettre l’envoi de hits sur une Instant app.
Dernière mise à jour : 11/12/2017