2013-06-06 4 views
12

Ich möchte Zbar in meine Anwendung integrieren, kann aber nicht herausfinden, wie dies mit dem neuen Android Studio zu erreichen ist.Wie ändere ich das Verzeichnis libs in Gradle?

Ich habe das Beispiel durchgesehen und den Code ohne Probleme kopiert. Das Problem, das ich habe, ist das Hinzufügen der Bibliotheken zu meinem Projekt Ich kann nicht herausfinden, wie es geht. Könnte jemand mich durchgehen?

Antwort

14

Eigentlich @ Michael's Antwort ist richtig, es ist auch veraltet. Nun gradle mit alles, was Sie tun müssen, um die Linien in der unten stehenden build.gradle Datei hinzuzufügen:

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

oder direkt Ihre .so Bibliotheken setzen in:

src/main/jniLibs

Auf diese Weise werden die jni-Bibliotheken beim Erstellen Ihrer Anwendung oder Bibliothek in die Zieldatei .jar/.aar kopiert.

+0

Ich versuche auch, ZBar in meine App zu integrieren, und das funktionierte für mich! –

+0

Sie haben meinen Tag gerettet, danke. –

21

Ich bin nicht besonders vertraut mit IntelliJ oder Gradle, aber ich habe es herausgefunden. Ich habe ZBarAndroidSDK-0.2 verwendet.

  1. Kopieren Sie den Inhalt des ZBar SDK libs/ Ordner in Ihrem libs/ Ordner des Projekts.
  2. Ändern Sie Ihre build.gradle (siehe unten), um sicherzustellen, dass das jar und die nativen Bibliotheken in Ihrem APK enthalten sind.
  3. Um IntelliJ auf ZBar aufmerksam zu machen, fügen Sie zbar.jar in Ihrer Projektstruktur hinzu. Wechseln Sie dazu zu File > Project Structure > Libraries > + Sign > Java und suchen Sie zbar.jar mit der Dateiauswahl. Fügen Sie es Ihrem Projekt hinzu.

Fügen Sie den folgenden auf Ihre build.gradle (achten Sie darauf, was andere Abhängigkeiten, die Sie haben zu halten):

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') 
} 

Mein build.gradle auf diesem Kern basiert: https://gist.github.com/khernyo/4226923.

+12

Mit Gradle 0.7.2+ können Sie Ihre nativen Bibliotheken direkt in 'src/main/jniLibs' setzen und es wird automatisch funktionieren. – shkschneider

+0

@shkschneider Könntest du das näher erläutern? Würden Sie einfach die .so-Dateien und ihre Ordner in den jniLibs/-Ordner (jniLibs/armeabi/file.so) usw. legen, dann die zbar.jar zurück in den libs/-Ordner stellen und sie zur build.gradle-Datei hinzufügen? Danke –

+3

@JohnShelley Genau: '.jar' geht zu' libs', '.so' geht zu' jniLibs'. Siehe https://stackoverflow.com/a/22488155/603270 – shkschneider

3

Wenn Sie Gradle 1.1.0 verwenden, müssen Sie einige Änderungen an @ Michaels Antwort vornehmen. Hier ist der überarbeitete Code der Gradle-Datei, der für mich funktioniert.

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')) 
} 
-2

Ich habe ZBarAndroidSDK-0.2 Beispiel in Android Studio 2.0 von nur öffnen Kameratest Projekt aus Beispiel Ordnern gebaut.

Das Projekt wurde automatisch von Eclipse auf Android Studio umstrukturiert. Das ist es.

Verwandte Themen