2013-06-06 15 views
12

Chcę zintegrować Zbar z moją aplikacją, ale nie mogę się zorientować, jak to zrobić, używając nowego Studio Android.Jak zmienić katalog libs w Gradle?

Przeglądałem przykład i skopiowałem kod bez żadnych problemów. Problem, który mam, polega na dodawaniu bibliotek do mojego projektu, ale wydaje mi się, że nie wiem, jak to zrobić. Czy ktoś mógłby mnie przez to przejść?

Odpowiedz

14

Właściwie odpowiedź @ Michała jest poprawna, jest również przestarzała. Teraz, używając Gradle wszystko, co trzeba zrobić, to dodać linie poniżej w pliku build.gradle:

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

lub bezpośrednio umieścić swoje biblioteki .so do:

src/main/jniLibs

W ten sposób, podczas budowania aplikacji lub biblioteki, biblioteki JNI są kopiowane do docelowego pliku .jar/.aar.

+0

Próbuję też zintegrować ZBar z moją aplikacją, a to działało dla mnie! –

+0

Uratowałeś mi dzień, dzięki. –

21

Nie jestem szczególnie zaznajomiony z IntelliJem lub Gradle, ale odkryłem to. Użyłem ZBarAndroidSDK-0.2.

  1. skopiować zawartość folderu ZBar libs/libs/ SDK w folderze twojego projektu.
  2. Zmodyfikuj swój build.gradle (patrz poniżej), aby upewnić się, że pliki jar i natywne są dołączone do pliku APK.
  3. Aby poinformować IntelliJ o ZBar, dodaj zbar.jar do struktury projektu. Aby to zrobić, przejdź do File > Project Structure > Libraries > + Sign > Java i znajdź zbar.jar z selektorem plików. Dodaj to do swojego projektu.

Dodaj następujące do build.gradle (uważając, aby cokolwiek innego zależności masz):

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

Moja build.gradle opiera się na tym GIST: https://gist.github.com/khernyo/4226923.

+12

Dzięki aplikacji Gradle 0.7.2+ możesz umieścić swoje biblioteki macierzyste bezpośrednio w katalogu 'src/main/jniLibs' i będzie działać automatycznie. – shkschneider

+0

@shkschneider mógłbyś rozwinąć to więcej? Czy po prostu umieścisz pliki .so i ich foldery w folderze jniLibs/jniLibs/armeabi/file.so itd., A następnie umieścisz zbar.jar z powrotem w folderze libs/i dodasz go do pliku build.gradle? Dzięki –

+3

@JohnShelley Dokładnie: '.jar' idzie do' libs', '.so' idzie do' jniLibs'. Zobacz https://stackoverflow.com/a/22488155/603270 – shkschneider

3

Jeśli używasz gradle 1.1.0, to musisz wykonać pewne modyfikacje odpowiedzi Michaela. Oto zmieniony kod pliku gradle, który działa dla mnie.

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

I został zbudowany ZBarAndroidSDK-0.2 przykład w Android Studio 2.0 po prostu otwierając projekt CameraTest z przykładu folderu.

Automatycznie zrestrukturyzował projekt z zaćmienia na system Android Studio. To jest to.

Powiązane problemy