web-dev-qa-db-fra.com

Comment ajouter et utiliser un AAR dans Android Studio Project

J'essaie d'utiliser un fichier personnalisé dans mon projet Android. J'ai trouvé des dizaines d'exemples dans StackOverflow et sur le Web. Beaucoup ont échoué à la construction, aucune n'a fonctionné. Le plus clair était at http://kevinpelgrims.com/blog/2014/05/18/reference-a-local-aar-in-your-Android-project/
Cela a été le plus proche de travailler. 

Voici ce que j'ai fait 

  1. Création réussie d’un AAR très simple (Ref.aar) à partir de Ref.Java

    // Ref.Java  
    package com.ramrod.Ref;  
    public class Ref {
        // Square an integer
        public static int
        square(int val) {
            return (val * val);
        }
    }  
    
  2. Création d'un projet de test (RefTest) 

  3. Dossier créé 'libs' sous RefTest/app 
  4. Ajouté Ref.aar à libs 
  5. Fichier-> Nouveau-> Nouveau module-> Importer le package .JAR/.AAR. 
  6. Sélectionné Ref.jar en tant que nom de fichier-> Terminer (semble avoir réussi). 
  7. Build.gradle modifié

    // build.gradle (Module: app)  
    
    apply plugin: 'com.Android.application'
    
    Android {
        compileSdkVersion 27  
        buildToolsVersion "27.0.3"
        defaultConfig {
            applicationId "com.ramrod.RefTest"
            minSdkVersion 11
            targetSdkVersion 15
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
            }
        }
        repositories {
            flatDir {
                dirs 'libs'
            }
        }
        dependencies {
            compile( name:'Ref', ext:'aar' )
       }
    }  
    
  8. Sync build.gradle (tous) 
  9. Ajout de la référence à la méthode Ref.aar (carré) à l'activité principale de onCreate in RefTest. 

    int sq = Ref.square( 2 );
    
  10. Build-> Clean puis Build-> Rebuild.
    Cette erreur produite: impossible de trouver la variable de symbole Ref 

Je suis sûr que je fais quelque chose de naïf ou tout simplement stupide, mais je ne le vois pas.
.__ Toute aide appréciée.

4
DontPanic

Lorsque vous importez un AAR à partir d’outils d’aide intégrés à l’aide de l’option Importer aar/jar, Studio crée un module avec cet aar.

Donc, à cet état, vous pouvez voir quelque chose de similaire à l'état mentionné ci-dessous . Lorsque l'écran est sous Android,

 enter image description here

Changez votre mode de panneau en projet et ouvrez votre test, vous pouvez réellement voir un fichier build.gradle pour votre module et le fichier correspondant.

 enter image description here

C'est pourquoi votre déclaration 

compile( name:'Ref', ext:'aar' )

ne fonctionnait pas.

Pour ajouter ceci aar à votre projet (après avoir utilisé import aar/jar), vous pouvez d'abord ajouter le module au fichier settings.gradle (fichier de paramètres de projet).

include ':app', ':testaar'

puis ajoutez directement à votre fichier build.gradle au niveau de l'application

implementation project(':testaar')

2) Une autre façon est de 

Cliquez avec le bouton droit de la souris sur votre module d'application -> Sélectionnez Ouvrir les paramètres du module -> Sélectionnez le module -> Aller à l'onglet Dépendances.

P.S, vous pouvez également ouvrir cette fenêtre depuis Build-> Edit Libraries and Dependencies

Vous rencontrerez une fenêtre comme ci-dessous

 enter image description here

Cliquez sur la petite icône +, puis sur l'option Module et ajoutez enfin le module requis (testaar)

 enter image description here

Synchronisez votre code et le tour est joué, il commencera à fonctionner maintenant.

0
Bhavita Lalwani

Vous devriez:

1) Créez la bibliothèque aar et placez-la simplement dans le répertoire libs (sans "Fichier-> Nouveau-> Nouveau module-> Importer le package .JAR/.AAR")

 see picture

2) ajouter à build.gradle (module: app) 

dependencies {
    ...
    implementation fileTree(include: ['*.aar'], dir: 'libs')
    ...

}

Après cela, vous pouvez utiliser Ref.square(int); 

Votre apk contiendra après la construction:

 enter image description here

2
Dima Kozhevin