如何在Gradle中更改libs目录?

SuN*_*YeD 12 android gradle zbar android-studio android-gradle-plugin

我想将Zbar集成到我的应用程序中,但似乎无法弄清楚如何使用新的Android Studio完成此任务.

我已经查看了示例,并且没有任何问题地复制了代码.我遇到的问题是将libs添加到我的项目中我似乎无法弄清楚如何做到这一点.有人可以带我走过吗?

Mic*_*rie 21

我对IntelliJ或Gradle并不是特别熟悉,但我已经弄清楚了.我用过ZBarAndroidSDK-0.2.

  1. 将ZBar SDK libs/文件夹的内容复制到项目的libs/文件夹中.
  2. 修改build.gradle(见下文)以确保您的APK中包含jar和本机库.
  3. 要使IntelliJ识别ZBar,请在项目结构中添加zbar.jar.要执行此操作,请转到File > Project Structure > Libraries > + Sign > Java并使用文件选择器查找zbar.jar.将其添加到您的项目中.

将以下内容添加到build.gradle中(确保保留其他任何依赖项):

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/zbar.jar')
}

task copyNativeLibs(type: Copy) {
    from(new File('libs')) { include '**' }
    into new File(buildDir, 'native-libs')
}

tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniDir new File(buildDir, 'native-libs')
}
Run Code Online (Sandbox Code Playgroud)

我的build.gradle基于这个要点:https://gist.github.com/khernyo/4226923 .

  • 使用Gradle 0.7.2+,您可以将本机库直接放入`src/main/jniLibs`中,它将自动运行. (13认同)
  • @JohnShelley确实:`.jar`转到`libs`,`.so`转到`jniLibs`.请参阅/sf/answers/1574170881/ (4认同)

Ben*_*min 15

实际上,@ Michael的回答是正确的,它也是过时的.现在,使用gradle所需要做的就是在build.gradle文件中添加以下行:

android {
...
  sourceSets {
    main.jniLibs.srcDirs = ['libs']
    test.jniLibs.srcDirs = ['libs']
  }
}
Run Code Online (Sandbox Code Playgroud)

或直接将您的.so库放入:

的src /主/ jniLibs

这样,在构建应用程序或库时,jni库将被复制到目标.jar/.aar文件中.