2013-06-06 78 views
12

我想將Zbar整合到我的應用程序中,但似乎無法弄清楚如何使用新的Android Studio來完成此操作。如何更改Gradle中的libs目錄?

我已經看過整個例子,並且已經複製了代碼而沒有任何問題。我遇到的問題是將庫添加到我的項目中,我似乎無法弄清楚如何去做。有人能通過它走過我嗎?

回答

14

其實,@邁克爾的回答是正確的,它也是過時的。現在,使用gradle這個所有你需要做的就是添加下面幾行中的build.gradle文件:

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

,或者直接把你的.so庫爲:

的src/main/jniLibs

這樣,當您構建應用程序或庫時,jni庫將被複制到目標.jar/.aar文件中。

+0

我也試圖將ZBar整合到我的應用程序中,並且這對我有用! –

+0

你節省了我的一天,謝謝。 –

21

我不是特別熟悉IntelliJ或Gradle,但我已經知道了。我用ZBarAndroidSDK-0.2

  1. 複製zbar和SDK libs/文件夾到你項目的libs/文件夾的內容。
  2. 修改您的build.gradle(見下文)以確保APK和本機庫包含在您的APK中。
  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') 
} 

我的build.gradle基於這個要點是:https://gist.github.com/khernyo/4226923

+12

使用Gradle 0.7.2+,你可以直接將你的本地庫放到'src/main/jniLibs'中,它會自動運行。 – shkschneider

+0

@shkschneider你能詳細解釋一下嗎?你只需要將.so文件及其文件夾放入jniLibs /文件夾(jniLibs/armeabi/file.so)等,然後將zbar.jar放回libs /文件夾並將其添加到build.gradle文件中?謝謝 –

+3

@JohnShelley正確:'.jar'轉到'libs','.so'轉到'jniLibs'。看到https://stackoverflow.com/a/22488155/603270 – shkschneider

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

我已經從例如文件夾剛剛開放CameraTest項目建在Android Studio中2.0 ZBarAndroidSDK-0.2例子。

它自動將項目從eclipse重構爲Android Studio。這就對了。