2017-07-05 2 views
3

J'ai la structure de projet suivante que je souhaite convertir en applications instantanées. Le projet installé fonctionne correctement, mais lorsque je veux lancer la version de l'application instantanée, le module de base fonctionne parfaitement, mais quand il s'agit du module de fonction, il ne trouve pas les ressources de son module. Lorsque je déplace les ressources du module de fonction vers le module de base, il les reconnaît avec le nom complet du module de base.Le module de fonctionnalité d'application d'instance Android ne parvient pas à trouver une ressource de mise en page dans le même module

La structure du projet est le suivant: - Module app - Module application instantanée
- Module fonction de base - com.app.base.feature - Module de fonction - com.app.feature. Dans le module d'entités, lorsque la ressource se trouve dans le module d'entités, les ressources ne sont pas trouvées, mais elles sont trouvées lorsque je déplace la ressource dans le module d'entités de base et les référence comme suit com.app.base.feature.R .layout.sample_layout.

EDIT: aucun package connu lors de l'obtention de valeur pour le numéro de ressource 0x80060009.

Toute aide serait appréciée :)

Répondre

2

Lorsque vous modulariser votre application, le module de fonction de base ne peut pas accéder à toutes les classes ou les ressources présentes dans le module de fonction. Cependant, l'inverse est possible.

Il peut arriver que lorsque vous créez le fragment, la classe R pointe vers le module de base. Essayez de spécifier le chemin d'accès complet à la classe R du module de fonctions lors de l'accès à la mise en page et vérifiez si elle résout votre problème. Parcourez simplement toutes vos références de classe R et spécifiez des chemins complets pour baser et afficher des classes R chaque fois que nécessaire.

+0

essayé que déjà le même problème persiste. – karate

1

C'est en fait un bug de la version canari. Nous avons déjà discuté ici: stackoverflow question

Nous avons ouvert un bug sur le tracker officiel Android studio dans lequel j'ai fourni plus d'informations: bug tracker

S'il vous plaît ne pas hésiter à l'étoile pour faire Google priorité le correctif (actuellement P2).

Avec d'autres expérimentations je remarquai que: Donc, si nous avons un projet avec 4 modules:

base 
f1 
f2 
f3 

f3 Module instantanée (le dernier dans l'ordre alphabétique) sera fonctionne correctement et reliera tous ses propres ressources correctement. D'autre part, utilisera les ressources du module f3 au lieu de leur propre et donc soit ils se plantent, soit leur mise en page/images/chaînes est vraiment foiré. Enfin, un problème survient uniquement pour les ressources vers des références de ressources à travers XML (c'est-à-dire, référence à un dessin d'une mise en page ou établissement d'une contrainte entre deux éléments d'une mise en page). Par conséquent:

  • <ImageView android:src="@drawable/icon"/> -> volonté montre le problème
  • Mais en java image.setDrawable(R.drawable.icon) -> fonctionnera AUSSI correctement

, concernant votre EDIT 1: il y a une seconde bug que j'ai également signalé dans un second tracker ici: bug tracker. Dans ce cas, si vous ajoutez une balise XML dans votre mise en page ou un fragment qui utilise un balise XML dans leur mise en page. L'application instantanée va planter. S'il vous plaît star du bug si vous trouvez que c'est aussi la cause pour vous.

1

Les derniers outils de construction ont été corrigés avec un correctif pour ce problème.

  • Veuillez mettre à jour votre Android SDK Build-Tools vers la version 27.0.2.
  • Vérifiez que vous utilisez Android Studio 3.0.1 ou une version plus récente.

Le Google issue tracker post en ce qui concerne l'accident d'erreur d'application instantanée Android a également été mis à jour.


Note: lien Bug: issuetracker.google.com/issues/62935326 pourrait également être résolu dans le dernier Android Build-Tools 27.0.2 déploiement, car il est également lié à la disparition de ressources/mal référencé.