【问题标题】:Android Studio and Gradle dependency integrationAndroid Studio 和 Gradle 依赖集成
【发布时间】:2013-05-13 16:11:26
【问题描述】:

我正在关注this tutorial,但使用的是 Android Studio。我已经完成了以下步骤:

在 Android Studio 中创建一个新项目

将 OpenCV-2.4.5-sdk/sdk/java 添加为模块

右键我的主模块->更改模块设置->将上面的opencv模块添加为依赖项

对于我的 MainActivity,我使用了以下代码(从其中一个示例中删除):

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

有人知道为什么会这样吗?

【问题讨论】:

标签: android opencv android-studio gradle dependencies


【解决方案1】:

我在 OS X 上的 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 的行。

【讨论】:

  • 我目前正在研究如何进行多项目配置。
  • 1.) 确保添加的模块与原始模块处于同一目录级别。
  • 2.) 验证您的项目中的“build.gradle”文件(我在上面谈到的那个)是否包含“compile project(':')”行前面的冒号。
  • 在包含模块的基本目录中,确保 'settings.gradle' 文件状态为“include '', ''”
  • 您好,感谢您的帮助。我仍然不太明白这些步骤。目前,每当我在 Android Studio 中创建一个新项目(例如,OpenCVTest)时,它都会创建一个名为 OpenCVTest 的根项目,然后在其中创建一个同名的 java 项目(OpenCVTest)。根项目还包含 settings.gradle 文件,尽管 java 项目是包含 build.gradle 的项目。我应该将我的依赖模块添加到根项目内部还是外部(但在同一目录中)?如果我在里面添加它,我无法添加依赖项(通过更改模块设置)。抱歉,我从未使用过 Gradle。
【解决方案2】:

我找到了解决方法,现在一切正常。

我必须构建一个 Jar 文件(openCV.jar),然后将其添加为库而不是模块,最后在 gradle.build 文件中添加了这一行

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

所以最后我可以使用库代码并且我的构建是好的。

我不知道这样好不好。但我就是这样做的。希望对您有所帮助。

【讨论】:

  • 嗨@Gustavo,我想试试这种方法。您究竟是如何构建 openCV.jar 的?
【解决方案3】:

尝试在 Android Studio 中添加到依赖项徒劳的有一个错误

试试这个:

  • OpenCV site下载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,但你的可以是任何东西,但只有一个

iml 文件

您现在可以开始使用 OpenCV 函数了,首先输入

导入组织。

一旦你输入句点,IntelliJ 应该删除一个选项列表,其中一个是

opencv

剩下的看你自己了。

【讨论】:

  • 我刚刚尝试按照这些步骤操作,但无法让 Android Studio 自动完成。仍在试图找出原因。
【解决方案4】:

this answer的启发,我做了这些步骤:

  • 将 OpenCV 2.4.5 jar 文件(在我的情况下为“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 中找到该库。

【讨论】:

    【解决方案5】:

    我遇到了类似的问题。

    在我的情况下,Android Studio 未能为我添加 Gradle 依赖项。我必须自己将它添加到我的项目的 gradle 文件中:

    编译项目(":openCVLibrary2410")

    它解决了这个问题。我希望这会有所帮助。

    【讨论】:

      【解决方案6】:

      最近我通过以下方式解决了上述问题:

      1. 右键单击项目,
      2. 打开模块设置 (F4)
      3. 打开依赖项选项卡窗格
      4. 点击+,添加模块依赖(带编译选项)

      然后一切正常。 opencv 库是我项目中的另一个模块

      【讨论】:

        【解决方案7】:

        在我的 intellij IDE 中,我修复如下:
        - 指向您的应用程序(在您的项目内)并单击 F4(模块设置默认为焦点)
        - 选择 Android-Gradle
        - 选择选项卡依赖项
        - 添加(右上方的选择 + 按钮)依赖项:您可以通过 maven、文件或...选择添加取决于您。就我而言,我从 maven 添加了新的 opencsv。
        - 单击确定完成,您的项目将自动重建。

        完成。

        【讨论】:

          猜你喜欢
          • 2021-02-10
          • 2014-04-03
          • 1970-01-01
          • 2015-01-25
          • 1970-01-01
          • 2014-01-01
          • 1970-01-01
          • 2015-12-19
          • 2015-03-11
          相关资源
          最近更新 更多