Ressources sur le sous-module de frères et sœurs, projet Gradle

J'essaie de migrer le projet de ma société de Maven vers Gradle, jusqu'à présent, j'ai pu convertir tous les POM vers les fichiers build.gradle correspondants, mais j'ai rencontré un problème dans un module secondaire lors de la construction.

- Core-UI ---- Utils ---- FieldPanels 

Le sous-module FieldPanel utilise des couleurs et d'autres ressources définies dans Utils. J'ai essayé d'ajouter le projet Utils comme une dépendance, mais cela ne fonctionnait pas, qu'est-ce que je manque?

  • ActionMode avec le contenu du décalage de la barre d'outils
  • Comment détecter quand le téléphone est répondu ou rejeté
  • Déterminez si l'application Android est la première fois utilisée
  • FirebaseInitProvider: l'initialisation de FirebaseApp échouée
  • Android.database.CursorIndexOutOfBoundsException: Index 0 demandé, avec une taille de 0
  • Masquage de la clé de cryptage dans une application Android
  •  /home/development/AndroidStudioProjects/com.project/core-ui/common.android.fieldpanels/build/bundles/debug/res/layout/base_summary_step_layout.xml:2: error: Error: No resource found that matches the given name (at 'background' with value '@color/wizard_summary_bg'). 

    Utilise gradle.build

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.2' } } apply plugin: 'android-library' android { sourceSets { main { manifest { srcFile 'AndroidManifest.xml' } res { srcDirs = [ 'res' ] } } } compileSdkVersion 15 buildToolsVersion '17.0' dependencies { compile group: 'com.company.ipos.android', name: 'commons.pos.micropos.api', version: '0.0.35-SNAPSHOT' compile group: 'org.slf4j', name: 'slf4j-api', version: '1.6.5' } } repositories { maven { credentials { username mavenUser password mavenPassword } url repoUrl } maven { credentials { username mavenUser password mavenPassword } url libsReleasesUrl } maven { credentials { username mavenUser password mavenPassword } url libsSnapshotsUrl } } 

    FieldPanels gradle.build

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.2' } } apply plugin: 'android-library' repositories { maven { credentials { username mavenUser password mavenPassword } url repoUrl } maven { credentials { username mavenUser password mavenPassword } url libsReleasesUrl } maven { credentials { username mavenUser password mavenPassword } url libsSnapshotsUrl } } android { dependencies { compile group: 'com.company.ipos.android', name: 'commons.pos.micropos.api', version: '0.0.35-SNAPSHOT' //compile group: 'com.company.ipos.android', name: 'common.android.utils', version: '0.0.35-SNAPSHOT' compile project(":common.android.utils") compile group: 'org.slf4j', name: 'slf4j-api', version: '1.6.5' } sourceSets { main { manifest { srcFile 'AndroidManifest.xml' } res { srcDirs = [ 'res', ] } } } compileSdkVersion 15 buildToolsVersion '17.0' } 

  • Est-il possible de faire un NumberPicker horizontal?
  • Quel est l'espace de noms XML Android de l'application?
  • Suggestions pour créer un contrôle treeview dans Android
  • Android définit la forme XML comme programmable par programmation
  • Android ouvrir emailclient par programme
  • Soundpool ne joue que les 5 premières secondes du fichier. Pourquoi?
  • 3 Solutions collect form web for “Ressources sur le sous-module de frères et sœurs, projet Gradle”

    Pouvez-vous inclure votre paramètre.gradle. Je me demande si vous avez un chemin incorrect dans votre dépendance de compilation.

    Voici comment vous avez déclaré la dépendance de fieldPanels à utils

     compile project(":common.android.utils") 

    Ce que cela signifie, c'est que le module de bibliothèque utils doit être connu de gradle ": common.android.utils". Peut-être que cela devrait être à la place?

     compile project(":Core-UI:Utils") 

    Prenons votre exemple de "2 projets de bibliothèque LA et LB et LB dépend de LA" Voici quelques exemples pratiques.

    Disons que LA possède le fichier strings.xml suivant

     <?xml version="1.0" encoding="utf-8"?> <resources> <string name="la_resource">la resource</string> </resources> 

    Disons que LB possède le fichier strings.xml suivant

     <?xml version="1.0" encoding="utf-8"?> <resources> <string name="lb_resource">lb resource</string> </resources> 

    Disons que nous voulons définir une vue personnalisée nommée TestView dans LB. TestView fera référence à la_resource de LA et lb_resource de LB. Voici la source de TestView

     package com.example.myapplication3.lb; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; public class TestView extends TextView { public TestView(Context context) { super(context); setText(context.getString(R.string.la_resource) + " " + context.getString(R.string.lb_resource)); } public TestView(Context context, AttributeSet attrs) { super(context, attrs); setText(context.getString(R.string.la_resource) + " " + context.getString(R.string.lb_resource)); } public TestView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setText(context.getString(R.string.la_resource) + " " + context.getString(R.string.lb_resource)); } } 

    Disons que nous voulons définir une autre vue personnalisée nommée TestView2 dans LB. TestView2 va gonfler une disposition XML. La mise en page XML fera référence à la_resource de LA et lb_resource de LB. Voici la source de TestView2

     package com.example.myapplication3.lb; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.FrameLayout; import android.widget.TextView; import org.w3c.dom.Text; public class TestView2 extends FrameLayout { public TestView2(Context context) { super(context); LayoutInflater.from(context).inflate(R.layout.test_view_2, this); } public TestView2(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.test_view_2, this); } public TestView2(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); LayoutInflater.from(context).inflate(R.layout.test_view_2, this); } } 

    Et voici la source de test_view_2.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/la_resource" android:padding="4dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/lb_resource" /> </LinearLayout> 

    Si vous rencontrez ce problème dans Adobe Studio / IDEA, n'oubliez pas de vérifier la case à cocher de la library sur vos modules de bibliothèque dans les paramètres du projet.

    Essayez également d'utiliser une version différente de android plugin, 0.8+, par exemple. Et une autre pensée: il y avait et peut-être encore des problèmes différents avec android plugin et 7 java, si vous l'utilisez, essayez d'utiliser 6.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.