Comment importer un projet Android en tant que bibliothèque et ne pas le comstackr en apk (Android studio 1.0)

J’ai essayé d’importer un projet (projLib) en tant que dépendance d’un autre projet (projAPK).

projAPK gradle a ceci:

dependencies { comstack project(':libs:NewsAPI') comstack project(':projLib') } 

mais quand je synchronise le dégradé cela donne cette erreur:

Erreur: Dépendance Android_2015: projLib: non spécifié sur le projet projAPK est résolu en une archive APK qui n’est pas prise en charge en tant que dépendance de compilation. Fichier: /Users/myname/Documents/Development/Android_2015/libs/projAPK/build/outputs/apk/projLib-release-unsigned.apk

donc je suppose qu’il y a deux solutions à cela:

  1. en quelque sorte faire gradle pense que projLib est une bibliothèque qui ne devrait pas être compilée pour apk
  2. en quelque sorte faire graduer PAS comstackr explicitement le projLib

Le problème est que je ne pouvais pas trouver quoi faire. Serait génial si vous pouvez aider 🙂

Dans le fichier build.gradle de projLib, vous verrez une instruction comme celle-ci:

 apply plugin: 'com.android.application' 

qui indique à Gradle de le construire en tant qu’application, générant un APK. Si vous le changez en ceci:

 apply plugin: 'com.android.library' 

il va construire comme une bibliothèque, générant un AAR, et cela devrait fonctionner.

Si vous avez également besoin de projLib pour générer un fichier APK séparé, vous devrez effectuer quelques refactorisations pour extraire le code commun dont vous avez besoin dans un troisième module de bibliothèque et faire en sorte que les deux applications dépendent de lui.

Les bibliothèques ne sont pas autorisées à définir un applicationId , donc si vous voyez un message d’erreur à cet effet, supprimez-le du script de génération de la bibliothèque.

Dans le fichier de gradation du module

Remplacez le apply plugin: 'com.android.application' avec le apply plugin: 'com.android.library'

Ensuite, supprimez applicationId "xxx.xxx.xxxx"

Nettoyer et construire

il suffit d’append ces lignes au fichier de gradle bibliothèque et de supprimer les autres sections

 apply plugin: 'com.android.library' android { comstackSdkVersion 23 buildToolsVersion '23.0.2' } dependencies { comstack fileTree(dir: 'libs', include: ['*.jar']) comstack 'com.squareup.picasso:picasso:2.4.0' comstack 'com.google.code.gson:gson:2.2.4' comstack 'com.android.support:appcompat-v7:23.1.1' comstack 'com.android.support:gridlayout-v7:23.1.1' ,... }