Как изменить каталог libs в Gradle?

Я хочу интегрировать Zbar в свое приложение, но не могу понять, как это сделать, используя новую студию Android.

Я просмотрел пример и скопировал код без каких-либо проблем. Проблема, с которой я сталкиваюсь, заключается в добавлении libs к моему проекту, который я не могу понять, как это сделать. Может ли кто-нибудь пройти меня через это?

Ответ 1

Собственно, @Michael отвечает правильно, он также устарел. Теперь, используя gradle все, что вам нужно сделать, это добавить строки ниже в файле build.gradle:

android {
...
  sourceSets {
    main.jniLibs.srcDirs = ['libs']
    test.jniLibs.srcDirs = ['libs']
  }
}

или напрямую помещайте ваши библиотеки .so в:

SRC/главная/jniLibs

Таким образом, при создании вашего приложения или библиотеки jni-библиотеки копируются в файл .jar/.aar назначения.

Ответ 2

Я не особенно знаком с IntelliJ или Gradle, но я понял это. Я использовал ZBarAndroidSDK-0.2.

  • Скопируйте содержимое папки ZBar SDK libs/ в папку проекта libs/.
  • Измените свой build.gradle(см. ниже), чтобы убедиться, что jar и native libs включены в ваш APK.
  • Чтобы сделать 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')
}

My build.gradle основан на этом значении: https://gist.github.com/khernyo/4226923.

Ответ 3

Если вы используете gradle 1.1.0, то вы должны внести некоторые изменения в ответ @Michael. Ниже представлен обновленный код файла gradle, который работает для меня.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile files('libs/zbar.jar')
}
task copyNativeLibs(type: Copy) {
    from(new File('libs')) { include '**' }
    into new File(buildDir, 'native-libs')
}
tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn copyNativeLibs }

clean.dependsOn 'cleanCopyNativeLibs'

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniFolders = new HashSet<File>()
    pkgTask.jniFolders.add(new File(buildDir, 'native-libs'))
}

Ответ 4

Я создал пример ZBarAndroidSDK-0.2 в Android Studio 2.0, просто открыв проект CameraTest из папки примеров.

Он полностью изменил проект от eclipse до Android Studio. Вот и все.