2013-06-06 23 views
12

私のアプリケーションにZbarを統合したいが、新しいAndroid Studioを使ってこれを達成する方法を理解できないようだ。Gradleでlibsディレクトリを変更するには?

私はこの例を見て、問題なくコードをコピーしました。私が抱えている問題は、私のプロジェクトにlibsを追加することです。私はそれを行う方法を理解するようです。誰かがそれを通って私を歩くことができますか?

答えて

14

実際、@マイケルの答えは正しいですが、それも時代遅れです。さて、Gradleのを使用すると、あなたがする必要があるすべてはbuild.gradleファイルに以下の行を追加することです:

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

または直接にあなたの.soライブラリを置く:

のsrc /メイン/ jniLibs

このように、アプリケーションまたはライブラリをビルドすると、jniライブラリが宛先.jar/.aarファイルにコピーされます。

+0

私はまた、私のアプリにZBarを統合しようとしており、これは私のために働いた! –

+0

あなたは私の一日を保存しました、ありがとうございます。 –

21

私は特にIntelliJやGradleに慣れていませんが、私はそれを理解しました。私はZBarAndroidSDK-0.2を使用しました。

  1. は、プロジェクトのlibs/フォルダにZBar SDK libs/フォルダの内容をコピーします。
  2. build.gradle(下記参照)を変更して、jarファイルとネイティブライブラリが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のメーカー2.0でZBarAndroidSDK-0.2例を構築しました。

EclipseからAndroid Studioにプロジェクトを自動的に再構成しました。それだ。

関連する問題