在Android Studio中的Java和Android程序之间共享OpenCV类

时间:2015-08-06 16:16:54

标签: java android opencv android-studio gradle

我有一个OpenCV Java类processImage,我想在Android程序和Java程序之间共享。如果可能的话,将所有代码保存在同一个项目中并拥有Android应用程序,Java App和共享代码的模块会很棒。 Java和Android API是相同的,只是系统使用的JAR不同。

由于Android和Java OpenCV程序需要使用不同的JVM和OpenCV JAR,我知道我不能在两者之间共享编译库。但我还需要一种共享Java接口的方法。

是否有任何Gradle或Android Studio技巧可以帮助我实现这一目标?

2 个答案:

答案 0 :(得分:1)

如果您使用的OpenCV API子集对于Android和Java版本的OpenCV类似,我认为是正确的,您可以将Java OpenCV添加为共享库的运行时依赖项。在Android和Java项目中,您应该添加库项目,并且相应的OpenCV库是编译依赖项。因此,项目的build.gradle个文件将在dependency块中包含以下行:

图书馆计划

runtime files("libs/opencv-java-3.0.0.jar") 

Android项目

compile project(":library") 
compile files("libs/opencv-android-3.0.0.jar") 

Java项目

compile project(":library") 
compile files("libs/opencv-java-3.0.0.jar") 

答案 1 :(得分:0)

迈克尔的回答可能比这更好,但我还没有对它进行测试。我有同样的问题,这是一个替代解决方案。我将库源代码放入特定文件夹,然后将该文件夹作为源集包含在Android和Java项目中。

文件树

- Main project
  |
  - Android project
  - Java project
  - Plain folder containing image processing source code

Android build.gradle

android {    
  sourceSets {
    main.java.srcDirs += ['../imgprocessor/src/main/java']
  }
}

Java build.gradle

sourceSets {
  main.java.srcDirs += ['../imgprocessor/src/main/java']
}