2017-06-28 2 views
0

Lorsque vous essayez de lancer l'application instantanée, il a rapportéInstantAppBundleException: Aucune division de base trouvée! Base fendue APK est celui sans attribut « splitName » set sur l'étiquette <manifest>

Side loading failed with message: Failure when trying to read bundel. 
Failed to parse app: /data/local/tmp/aia/my_app.zip 

Quand regard sur le logcat, il a cette erreur

InstantAppBundleException: No base split found! 
Base split APK is the one with no 'splitName' attribute set on the <manifest> tag 

Qu'est-ce que j'ai manqué?

Répondre

2

Je pense que vous avez peut-être oublié la balise baseFeature dans votre module de base. Si vous avez un module de base et 2 modules de fonctions pour des exemples, votre gradle devrait ressembler à ceci (Vous devez faire attention aux plugins corrects, la baseFeature = true tag et la déclaration de dépendance correcte).

Module de base fichier Gradle:

apply plugin: 'com.android.feature' 

android { 
    //this is mandatory for the base module of the project 
    baseFeature = true 
    ... 
} 

dependencies { 
    ... 
    feature project(':feature1') 
    feature project(':feature2') 
    application project(':hello-installed') 
} 

Module Feature1 et Module Feature2 fichiers Gradle:

apply plugin: 'com.android.feature' 

android { 
    ... 
} 

dependencies { 
    ... 
    implementation project(':base') 
} 

App instantanée Module fichiers Gradle:

apply plugin: 'com.android.instantapp' 

dependencies { 
    implementation project(':base') 
    implementation project(':feature1') 
    implementation project(':feature2') 
} 

complète App Module fichiers Gradle:

apply plugin: 'com.android.application' 

android { 
    //classic gradle declaration for legacy apps 
} 

dependencies { 
    implementation project(':base') 
    implementation project(':feature1') 
    implementation project(':feature2') 

    //non instant libraries will only appear here 
    implementation project(':nonInstantLibrary') 
} 

non instantanée Module Compatible fichiers Gradle:

//it will use the legacy library plugin 
apply plugin: 'com.android.library' 

dependencies { 
    ... 
    implementation project(':base') 
} 
+0

i essayer de comprendre ce qu'est un module de base est. pouvez-vous expliquer quelle est la différence entre un module de fonction et un module de base? La documentation google n'est pas claire à ce sujet. –

+0

@GillisHaasnoot Les applications instantanées reposent sur la modularisation de votre projet. Un projet n'aura qu'un seul module de base qui sera le cœur de votre application et qui sera commun à tous les autres modules. Par exemple, cela pourrait contenir des ressources communes java code/dépendances telles que AppCompat, Analytics, Base de données et ainsi de suite ... D'autre part, les modules de fonctionnalités implémenteront des fonctionnalités autonomes spécifiques de votre application qui pourraient utiliser le module de base comme bibliothèque mais pas utiliser l'une des autres fonctionnalités. Belle explication ici: https://willowtreeapps.com/ideas/an-introduction-to-android-instant-apps – gbaccetta

+0

Ok oui je comprends cela. Mais pourquoi avez-vous besoin de définir le module de base dans votre application/application instantanée? Les fonctionnalités les utilisent déjà suis-je raison? Y a-t-il vraiment une différence entre une bibliothèque et un module de base? –