Android Studio 和 openimaj

Android Studio and openimaj

我目前正在尝试使用来自 openimaj Java 库的依赖项构建一个 android 工作室项目。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.mapinguari.myapplication"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'org.openimaj:openimaj:1.3.1'
}

是我的模块构建文件。它在同步到 IDE 时报告没有错误。

然而,当我尝试在其中一个源文件中构造任何 类 时,Android Studio 无法识别来自 openimaj 依赖项的任何 类。

非常感谢任何帮助。

谢谢!

我认为这可能是因为您已经指定了一个非 jar OpenIMAJ 依赖项(具体来说,您已经告诉它 link 针对 OpenIMAJ 主 pom 文件,该文件仅包含对不同子文件的引用模块)。您可能需要实际选择您想要的特定模块 - 例如,如果您的应用程序正在进行图像处理,则添加依赖项 org.openimaj:image-processing:1.3.1.

编辑: 似乎 batik svg 库在某处有一个循环依赖关系,它打破了 Gradle(参见 https://issues.apache.org/jira/browse/BATIK-1098)。这就是导致最终 WhosebugError 的原因。此外,某些东西正在引入 xml-api,这将与 Android 发生冲突。假设您不介意没有 SVG 图像支持,那么以下应该有效:

repositories {
    mavenCentral()
    maven {
        url "http://maven.openimaj.org"
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:18.+'
    compile('org.openimaj:image-processing:1.3.1') {
        exclude group: 'org.apache.xmlgraphics'
        exclude group: 'xml-apis'
    }
}

您可能还想为您的应用中不需要的依赖项添加额外的排除项 - 似乎只包含 org.openimaj:image-processing 会引入很多几乎肯定不需要的东西(我'我们在这里为此创建了一个问题:https://github.com/openimaj/openimaj/issues/97)。