2013-06-06 10 views
12

मैं अपने आवेदन में ज़बर को एकीकृत करना चाहता हूं लेकिन ऐसा लगता है कि नए एंड्रॉइड स्टूडियो का उपयोग करके इसे कैसे पूरा किया जाए।Gradle में libs निर्देशिका को कैसे बदलें?

मैंने उदाहरण देखा है और बिना किसी समस्या के कोड पर कॉपी किया है। मेरी समस्या यह है कि मेरी परियोजना में libs जोड़ रहा है, मुझे लगता है कि यह कैसे करना है। क्या कोई मुझे इसके माध्यम से चल सकता है?

उत्तर

14

असल में, @ माइकल का जवाब सही है, यह भी अप्रचलित है। अब, Gradle का उपयोग कर तुम सब करने की जरूरत है build.gradle फ़ाइल में नीचे लाइनों को जोड़ने के लिए है:

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

या सीधे में अपने .so पुस्तकालयों रख:

src/मुख्य/jniLibs

इस तरह, जब आप अपना आवेदन या पुस्तकालय बनाते हैं, तो जेनी पुस्तकालयों को गंतव्य .jar/.aar फ़ाइल में कॉपी किया जा रहा है।

+0

मैं अपने ऐप में ज़ेडबार को एकीकृत करने की भी कोशिश कर रहा हूं और यह मेरे लिए काम करता है! –

+0

आपने मेरा दिन बचाया, धन्यवाद। –

21

मैं इंटेलिजे या ग्रैडल से विशेष रूप से परिचित नहीं हूं लेकिन मैंने इसे समझ लिया है। मैंने ZBarAndroidSDK-0.2 का उपयोग किया।

  1. कॉपी अपने प्रोजेक्ट की libs/ फ़ोल्डर में ZBar एसडीके libs/ फ़ोल्डर की सामग्री।
  2. यह सुनिश्चित करने के लिए कि आपके एपीके में जार और देशी libs शामिल हैं, अपने build.gradle (नीचे देखें) को संशोधित करें।
  3. जेडबार के बारे में इंटेलिजे को जागरूक करने के लिए, अपनी परियोजना संरचना में 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

ग्रैडल 0.7.2+ के साथ आप अपने मूल पुस्तकालयों को सीधे 'src/main/jniLibs' में डाल सकते हैं और यह स्वचालित रूप से काम करेगा। – shkschneider

+0

@shkschneider क्या आप इस पर विस्तार कर सकते हैं? क्या आप सिर्फ .so फाइलें और उनके फ़ोल्डरों को jniLibs/फ़ोल्डर (jniLibs/armeabi/file.so) आदि में डाल देंगे, फिर zbar.jar को libs/फ़ोल्डर में वापस रख दें और इसे build.gradle फ़ाइल में जोड़ें? धन्यवाद –

+3

@ जॉन्सशेली बिल्कुल: '.jar' 'libs' पर जाता है,' .so 'jniLibs 'पर जाता है। Https://stackoverflow.com/a/22488155/603270 – shkschneider

3

यदि आप ग्रेड 1.1.0 का उपयोग करते हैं तो आपको @ माइकल के उत्तर में कुछ संशोधन करना होगा। यहां ग्रेडल फ़ाइल का संशोधित कोड है जो मेरे लिए काम करता है।

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 परियोजना खोलने के द्वारा एंड्रॉयड स्टूडियो 2.0 में ZBarAndroidSDK-0.2 उदाहरण का निर्माण किया है।

इसने प्रोजेक्ट को एक्लिप्स से एंड्रॉइड स्टूडियो में स्वचालित रूप से पुनर्गठित किया। बस इतना ही।

संबंधित मुद्दे