Android Studio 和 Gradle 依赖集成
Posted
技术标签:
【中文标题】Android Studio 和 Gradle 依赖集成【英文标题】:Android Studio and Gradle dependency integration 【发布时间】: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
有人知道为什么会这样吗?
【问题讨论】:
[此链接允许在没有 jar 的情况下使用][1] [1]:***.com/a/17368359/2423176 【参考方案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(':我找到了解决方法,现在一切正常。
我必须构建一个 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】:最近我通过以下方式解决了上述问题:
-
右键单击项目,
打开模块设置 (F4)
打开依赖项选项卡窗格
点击+,添加模块依赖(带编译选项)
然后一切正常。 opencv 库是我项目中的另一个模块
【讨论】:
【参考方案7】:在我的 intellij IDE 中,我修复如下: - 指向您的应用程序(在您的项目内)并单击 F4(模块设置默认为焦点) - 选择 Android-Gradle - 选择选项卡依赖项 - 添加(右上方的选择 + 按钮)依赖项:您可以通过 maven、文件或...选择添加取决于您。就我而言,我从 maven 添加了新的 opencsv。 - 单击确定完成,您的项目将自动重建。
完成。
【讨论】:
以上是关于Android Studio 和 Gradle 依赖集成的主要内容,如果未能解决你的问题,请参考以下文章
android studio gradle dependencies 包存放在哪儿
Android Studio gradle插件版本和gradle版本对应关系