web-dev-qa-db-fra.com

Intégration de dépendance Android Studio et Gradle

Je suis ce tutoriel mais avec Android Studio. J'ai effectué les étapes suivantes:

Création d'un nouveau projet dans Android Studio

Ajout d'OpenCV-2.4.5-sdk/sdk/Java en tant que module

Faites un clic droit sur mon module principal-> Modifier les paramètres du module-> ajouté le module ci-dessus en tant que dépendance

Pour mon activité principale, j'ai utilisé le code suivant (extrait de l'un des exemples):

package com.example.test;

import Android.os.Bundle;
import Android.app.Activity;
import Android.util.Log;
import Android.view.Menu;
import org.opencv.Android.BaseLoaderCallback;
import org.opencv.Android.CameraBridgeViewBase;
import org.opencv.Android.CameraBridgeViewBase.CvCameraViewListener;
import org.opencv.Android.LoaderCallbackInterface;
import org.opencv.Android.OpenCVLoader;
import org.opencv.core.Mat;

public class MainActivity extends Activity implements CvCameraViewListener {
    private CameraBridgeViewBase mOpenCvCameraView;

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i("Yay", "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    @Override
    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_5, this, mLoaderCallback);
    }

    @Override
    public void onCameraViewStarted(int width, int height) {

    }

    @Override
    public void onCameraViewStopped() {

    }

    @Override
    public Mat onCameraFrame(Mat inputFrame) {
        return null;
    }
}

L'éditeur de texte d'Android Studio pouvait identifier les packages que j'avais importés (comme org.opencv.Android), mais lors de ma compilation, j'ai eu les erreurs suivantes:

Gradle: error: package org.opencv.Android does not exist
Gradle: error: package org.opencv.Android does not exist
Gradle: error: package org.opencv.Android.CameraBridgeViewBase does not exist

Est-ce que quelqu'un sait pourquoi cela se produit?

9

J'avais un problème similaire avec mon Android Studio sous OS X. J'écris le code et Android Studio verrait les fichiers .jar que je faisais référence et sur lesquels j'avais déclaré des dépendances, mais lorsque Gradle est venu de construire le projet aller. 

J'ai ouvert le fichier 'build.gradle' et j'ai dû ajouter manuellement des dépendances. Par exemple, voici mon dossier complet:

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:0.4'
    }
}
apply plugin: 'Android'

dependencies {
    compile files('libs/Android-support-v4.jar')
    compile files('libs/gson-2.2.4.jar')
    compile files('libs/jsoup-1.7.2.jar')
}

Android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

Comme vous pouvez le deviner, les lignes que j'ai ajoutées sont celles référençant Gson et Jsoup.

12
rynojvr

Inspiré par cette réponse , voici les étapes que j'ai suivies:

  • Placez le fichier OpenCV 2.4.5 jar (dans mon cas, 'opencv-library-2.4.5.jar') dans le dossier libs de votre projet.
  • Faites un clic droit dessus et sélectionnez Ajouter en tant que bibliothèque
  • Tapez ceci dans la partie dépendances de build.gradle fichier: compile files('libs/opencv-library-2.4.5.jar')
  • Faites une construction propre. Cela peut être fait à l'intérieur du studio Android, mais j'ai également exécuté le gradlew.bat inclus dans le dossier du projet.

Maintenant, le projet devrait être construit et fonctionner correctement.

Remarque: Dans les versions ultérieures d'OpenCV (par exemple 2.4.7), la bibliothèque se trouve dans ...\build\Java.

4
Mahm00d

J'ai rencontré un problème similaire.

Dans mon cas, Android Studio n'a pas réussi à ajouter la dépendance Gradle pour moi. Je devais l'ajouter moi-même dans le fichier Gradle de mon projet:

compiler le projet (": openCVLibrary2410")

Cela a résolu le problème. J'espère que ça aide.

1
Xi Zhang

Plus récemment, j'ai résolu le problème décrit ci-dessus en: 

  1. clic droit sur le projet,
  2. paramètres du module ouvert (F4)
  3. ouvrez le volet d'onglet Dépendances
  4. cliquez sur +, ajoutez la dépendance du module (avec l'option de compilation)

alors tout a bien fonctionné. La librairie opencv est un autre module de mon projet

1
Michiel

dans mon IDE intellij, j'ai fixé comme suit: 
- pointez sur votre application (dans votre projet) et cliquez sur F4 (le paramètre Modules est activé par défaut) 
- sélectionnez Android-Gradle 
- sélection de l'onglet Dépendances 
- add (bouton + sélec- Dans mon cas, j'ajoute une nouvelle opportunité de maven. 
- cliquez sur OK pour terminer, votre projet est reconstruit automatiquement.

TERMINÉ.

0
trungtn

J'ai trouvé une solution de contournement et maintenant tout fonctionne.

J'ai dû créer un fichier Jar (openCV.jar), puis je l'ai ajouté en tant que bibliothèque au lieu d'un module, enfin dans le fichier gradle.build, j'ai ajouté cette ligne 

compile files('libs/openCV.jar').

Donc finalement, je peux utiliser le code de la bibliothèque et ma construction est ok. 

Je ne sais pas si c'est bon. Mais c'est comme ça que je l'ai fait. J'espère que ça aide.

0
Gustavo

Essayer de Ajouter à la dépendance dans Android Studio est infructueux il y a un bug.

Essayez ceci à la place:

  • Téléchargez OpenCV-2.4.5-Android-sdk.Zip à partir de OpenCVsite

    • Extraire où que ce soit sous OpenCV-2.4.5-Android-sdk, le mien s’est avéré être 

      /home/anthony/Documents/OpenCV-2.4.5-Android-sdk/

    • Ouvrez IntelliJ et choisissez Importer.

    • Sélectionnez le dossier à importer

      /home/anthony/Documents/OpenCV-2.4.5-Android-sdk/sdk/Java/

      le vôtre sera un peu différent, ne vous inquiétez pas, choisissez où vous voulez extrait OpenCV-2.4.5-Android-sdk

    • Une fois que l'assistant d'importation est terminé, créez l'application avec le menu.

Construire -> Reconstruire le projet

  • Fermer le projet

  • Créer un nouveau projet ou ouvrir un projet existant
  • Ensuite 

Fichier-> Module d'importation

  • Cette fois sélectionnez 

/home/anthony/Documents/OpenCV-2.4.5-Android-sdk/sdk/Java/XXX.iml

le mien était sdk.iml, mais le vôtre pourrait être n'importe quoi mais il n'y en aura qu'un 

iml fichier Select iml file to import module

Vous pouvez maintenant commencer à utiliser les fonctions OpenCV, commencez par taper 

importation org.

une fois que vous tapez la période, IntelliJ devrait déposer une liste d’options dont l’une est 

ouverture

Now OpenCV is correctly integrated in your IDE

Le reste dépend de toi.

0
Anthony Keane