2013-07-08 27 views
5

Bir libropser.so adı verilen ve ilgili bir jar dosyası olanAndroid Studio Gradle derlemesiyle nasıl yerel kütüphaneler kopyalanır veya kullanılır?

/libs/armeabi klasöründe yerel bir lib var.

dependencies { 
    compile files('libs/android-support-v4.jar', 'libs/MYNEWJAR.jar') 
} 

Ama app çalıştırdığınızda, onu yerli lib bulamıyorum düşünüyorum:

Ben kolay olacak şekilde seemsm kavanoz dosyası, (MYNEWJAR) dahil etmek gradle yapı dosyası değişti
E/AndroidRuntime(22569): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load parser from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.hybris.mobile.history-1.apk,libraryPath=/data/app-lib/com.hybris.mobile.history-1]: findLibrary returned null 
E/AndroidRuntime(22569): at java.lang.Runtime.loadLibrary(Runtime.java:365) 
E/AndroidRuntime(22569): at java.lang.System.loadLibrary(System.java:535) 
E/AndroidRuntime(22569): at com.senstation.android.pincast.Pincast.<clinit>(Pincast.java:1299) 
E/AndroidRuntime(22569): ... 17 more 

Yapı dosyasını düzgün bir şekilde almama yardımcı olabilir misiniz? Bu Eclipse'de otomatik olarak oluyor gibi görünüyor, ama ben gerçekten android stüdyosunu kullanmak istiyorum.

Thx! Sven

+0

Android Studio içine proje yeniden içe denediniz mi? Senin stacktrace göre, bu android-support-v4.jar içinde değil com.hybris.mobile.history-1 ile bir sorun var. –

cevap

1

Hmm ... Birisi neyi çıkan 'build.gradle kesin SYNTAX gösteren tarafından, Android Studio erişimine 3. taraf JAR dosyasını nasıl arasında, açık bir örnek teşkil edeceği umuduyla edildi foobar.jar ' girişini' onların ekledikten sonra dosyanın bağımlılık-fıkra, gibi görünecektir.'

Bilirsiniz, bir şey gibi:

=========

dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile 'org.somedevs.foobar:Foobar.jar' 
} 

=========

[Aksi takdirde, bilmiyorum Bir kartopu şansı, şimdiye kadar gönderilen cevapların gerçekten ne anlama geldiğini tahmin etmek için cehenneminde. Benim intital fıkra yani benim TAHMİN bu bir başka tür satırı eklemek gerekir istiyoruz ... Tek 'derleme' hattını içeriyordu]

DÜZENLEME:!?!? Evet, birçok TEŞEKKÜRLER, asi! Ben de şimdi çalışıyorum. Bunun yerine Studio'da 'kütüphanelerini' üzerine 'sürükle/bırak' arasında [ben Studio'da 'kütüphanelerini' sadece sağ tıklayarak daha güvenilir sonuçlar ve kopyaladıktan sonra, "... kütüphaneye olarak ekle" seçim . Cmd hattını kullanarak bu konuma JAR]

bağımlılıkları madde için doğru bir şekilde bir şekilde aşağıda gösterilen:

dependencies { 
     compile 'com.android.support:support-v4:13.0.+' 
     compile files ('libs/Foobar.jar') 
    } 
+0

Cevabımı güncelledim, bu yararlıdır. – o0rebelious0o

+0

'app/src/main /' içine 'jniLibs' adlı bir dizin oluşturun ve tüm bunları ekleyin. – BQuadra

0

güvenlik nedenden nedeniyle, bu gradle android eklenti ile bir uygulama projesinde yerel jar/aar dosyası başvurmak için mümkün değildir. destek kütüphanesi için


Android SDK Manager ile, bir maven depo içinde destek kütüphane gösterecektir Android Support Repository adlı ekstra yüklemeniz gerekir. Sonra aracılığıyla projenizde destek kütüphane ekleyebilirsiniz:,

  • bir aar dosyasını oluşturun ve yerel maven deposuna dağıtmak: Harici kütüphaneler için

    dependencies { 
        compile 'com.android.support:support-v4:13.0.0' 
    } 
    

    , size 2 farklı şekilde daha sonra projenize android destek kitaplığında yaptığınız gibi referans verin.

  • Kitaplık kaynaklarını uygulama projenizin yanına yerleştirin ve modülleri tanımlayacağınız bir settings.gradle kök oluşturun. (Daha fazla bilgi için bkz. docs).

Benim için daha modüler olduğu için aar dosyaları oluşturmayı tercih ederim.

5

this kullanıcıdan Assaf Gamliel kullanıcıya çok faydalı buldum.

Ve daha da temiz hale getirmek için bazı değişiklikler yaptık.

.zip dosyasını .jar olarak yeniden adlandırmanıza gerek yok, sadece build.gradle betiğine bağlı derleme dosyasını derleme dosyasına ekleyin. >
| - -

foo.zip/
lib | - | -/
armeabi | -: Yani, buna benzer bir yapıya sahip bir foo.zip dosyayı yapacak | - | - *.
| - | -/x86
| - | - | - *.gradle yapı yok iken

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' //gradle plugin update for Andoid Studio 0.2.+ 
    } 
} 
apply plugin: 'android' 
dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile files('libs/foo.zip') //zip file should be in Module's /libs folder (not the Project's /lib) 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

sadece dosya halletmek: böylece


klasör ve sonra ('libs/foo.zip') dosyalarını derlemek kullanarak gradle eklemek için kütüphanelerini koydu Yapısını koruyarak eklediniz.

+0

tam build.gradle komut dosyasını eklemek için güncellendi, bağımlılık bir derleme dosyaları bağımlılığı olarak eklenmelidir, android-support-v4.jar eklenir, bir classpath bağımlılığı olarak değil (maven için) – Netherdan

+0

Bu geçici çözümün gerçekten doğrulandığını onaylayabilirim çalışır - ve garip bir şekilde tar.bz2 arşivleri için işe yaramaz - onlar sessizce göz ardı edilmiş gibi görünüyor! Android Gradle eklentisinin yakında işleyeceğini umuyoruz. – slott

4

kavanoza koyun harici kavanoz kütüphanesi

  1. kullanmak için libs klasörüne/dosyayı libs f'ye sürükleyin rom bir dosya gezgini
  2. sağ tıklayın ve Add as library
  3. seçmeniz compile files('libs/your_jar.jar') Bunu yapmak için sizin build.gradle dosyası

    olduğundan emin olun, [projectname] altında Projesi build.gradle değiştirmek -> [projectname ] soldaki project bölmesinde.

    Benim için Build menüsü altında

    dependencies { 
        compile 'com.android.support:support-v4:13.0.+' 
        compile files('libs/universal-image-loader-1.8.5.jar') 
    } 
    

    enter image description here

  4. tıklayın Rebuild Project için

    dependencies { 
        compile 'com.android.support:support-v4:13.0.+' 
    } 
    

    değiştirmek için gerekliydi.

Bugün, Evrensel Görüntü Yükleyici kitaplığı projemle tümleşik hale getirmek için yaptım.

2

'app/src/main /' içine 'jniLibs' adlı bir dizin oluşturun ve içine koymak tüm .bu

app/src/main/jniLibs/ 
|---- armeabi-v7a/your.so 
|---- armeabi/your.so 
|---- x86/your.so 
+1

Gradle eklentisinin 0.7.2+ üzerindeyseniz doğru cevap budur. Burada birkaç detay daha var: http://stackoverflow.com/a/20926595/897397. System.loadLibrary ("LIBNAME") çağırmayı unutmayın; kitaplığınızın adı libLIBNAME.so –

İlgili konular