web-dev-qa-db-fra.com

Comment importer Android projet en tant que bibliothèque et non compilé en tant qu'apk (Android studio 1.0)

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

projAPK gradle a ceci:

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

mais quand je synchronise le gradle, cela donne cette erreur:

Erreur: Dépendance Android_2015: projLib: non spécifié sur le projet. ProjAPK se résout en une archive APK non prise en charge en tant que dépendance à la 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 penser que projLib est une bibliothèque qui ne devrait pas être compilé pour apk
  2. en quelque sorte, faire ne PAS compiler explicitement le projet proLib

Le problème est que je ne trouvais pas comment faire cela. Ce serait génial si vous pouvez aider :)

120
Vic Zhou

Dans le fichier build.gradle de projLib, vous verrez une déclaration 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 fonctionnera 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 procéder à une refactorisation pour extraire le code commun dont vous avez besoin dans un troisième module de bibliothèque et faire en sorte que les deux fichiers APK en dépendent.

Les bibliothèques ne sont pas autorisées à définir un applicationId. Par conséquent, si vous voyez un message d'erreur à cet effet, supprimez-le du script de construction de la bibliothèque.

331
Scott Barta

Dans le fichier de classement du module -

Remplacerapply plugin: 'com.Android.application' avec apply plugin: 'com.Android.library'

Alors enleverapplicationId "xxx.xxx.xxxx"

Nettoyer et Construire

24
san88

ajoutez simplement ces lignes au fichier library gradle et supprimez les autres sections

apply plugin: 'com.Android.library'

Android {
   compileSdkVersion 23
   buildToolsVersion '23.0.2'
}

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'com.squareup.picasso:picasso:2.4.0'
   compile 'com.google.code.gson:gson:2.2.4'
   compile 'com.Android.support:appcompat-v7:23.1.1'
   compile 'com.Android.support:gridlayout-v7:23.1.1'
  ,...
}
1
Hamidreza Sadegh