web-dev-qa-db-ja.com

Android StudioとGradleの依存関係の統合

私は このチュートリアル をフォローしていますが、Android Studioを使用しています。次の手順を実行しました。

Android Studioで新しいプロジェクトを作成する

OpenCV-2.4.5-sdk/sdk/Javaをモジュールとして追加する

メインモジュールを右クリック->モジュール設定の変更->上記のopencvモジュールを依存関係として追加

私のMainActivityには、次のコードを使用しました(サンプルの1つから削除)。

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;
    }
}

Android Studioのテキストエディターは、インポートしたパッケージ(org.opencv.Androidなど)を識別できましたが、コンパイルすると次のエラーが発生しました。

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

なぜこれが起こるのか誰か知っていますか?

10

私はAndroid Studioで同様の問題を抱えていました。私はコードを記述し、Android Studioは私が参照している.jarを表示し、依存関係を宣言していましたが、Gradleがプロジェクトをビルドするときが来ました。

「build.gradle」ファイルを開いて、依存関係を手動で追加する必要がありました。たとえば、これが私の完全なファイルです:

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
    }
}

ご想像のとおり、追加した行はGsonとJsoupを参照している行です。

12
rynojvr

この答え に触発され、これらは私がしたステップです:

  • OpenCV 2.4.5jarファイル(私の場合、 'opencv-library-2.4.5.jar')をlibsプロジェクトのフォルダー
  • それを右クリックして、ライブラリとして追加を選択します
  • これをbuild.gradleファイルの依存関係の部分に入力します:compile files('libs/opencv-library-2.4.5.jar')
  • クリーンビルドを実行します。 Android studio内で実行できますが、プロジェクトフォルダー内に含まれるgradlew.batも実行しました

これで、プロジェクトがビルドされ、問題なく実行されるはずです。

注:OpenCVの新しいバージョン(例2.4.7)では、ライブラリは...\build\Java

4
Mahm00d

私は同様の問題に遭遇しました。

私の場合は、Android StudioがGradleの依存関係を追加できませんでした。プロジェクトのgradleファイルに自分で追加する必要がありました。

プロジェクトのコンパイル( ":openCVLibrary2410")

問題は解決しました。これがお役に立てば幸いです。

1
Xi Zhang

より最近、私は上記の問題を次の方法で解決しました:

  1. プロジェクトを右クリックし、
  2. モジュール設定を開く(F4)
  3. 依存関係タブペインを開く
  4. +をクリックし、モジュールの依存関係を追加(コンパイルオプション付き)

その後、すべてがうまくいきました。 opencvライブラリは私のプロジェクトの他のモジュールです

1
Michiel

私のintellij IDEで、私は次のように修正しました:
-(プロジェクト内の)アプリをポイントし、F4をクリックします(モジュール設定はデフォルトでフォーカスされています)
-Android-Gradleを選択します
-タブの依存関係を選択します
-追加(右上の選択+ボタン)依存関係:maven、ファイル、または...によって依存を追加を選択できます。私の場合は、mavenから新しいopencsvを追加します。
-[OK]をクリックして終了すると、プロジェクトが自動的に再構築されます。

できました。

0
trungtn

回避策を見つけましたが、今はすべてが機能しています。

Jarファイル(openCV.jar)をビルドする必要があり、それをモジュールではなくライブラリーとして追加しました。最後に、この行を追加したgradle.buildファイルに追加しました。

compile files('libs/openCV.jar')

最後に、ライブラリコードを使用し、ビルドはOKです。

これが良いかどうかはわかりません。しかし、それが私がやった方法です。それが役に立てば幸い。

0
Gustavo

依存関係に追加 Android Studioはフルーツなしバグです。

代わりにこれを試してください:

  • OpenCVサイト からOpenCV-2.4.5-Android-sdk.Zipをダウンロードします

    • OpenCV-2.4.5-Android-sdkとしてどこにでも抽出できます。

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

    • IntelliJを開き、インポートを選択します

    • インポートするフォルダを選択

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

      あなたのものは少し異なります、心配しないでください、OpenCV-2.4.5-Android-sdkを抽出した場所を選択してください

    • インポートウィザードが完了したら、メニューを使用してアプリをビルドします

ビルド->プロジェクトを再ビルド

  • プロジェクトを閉じる

  • 新規または既存のプロジェクトを開く
  • その後

ファイル->モジュールのインポート

  • 今回は選択

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

私のものはsdk.imlでしたが、あなたのものは何でもかまいませんが、1つしかありません

imlファイル Select iml file to import module

OpenCV関数の使用を開始するには、次のように入力します

組織をインポートします。

ピリオドを入力すると、IntelliJはオプションのリストをドロップします。

opencv

Now OpenCV is correctly integrated in your IDE

後は君しだい。

0
Anthony Keane