2013-05-23 39 views
20

外部ライブラリScanditを追加しようとしています。私はこのエラーを取得しておいてください。Androidスタジオに.soファイルを追加する

java.lang.UnsatisfiedLinkError: Couldn't load scanditsdk-android-3.3.1 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.clover.barcode2-1.apk,libraryPath=/data/app-lib/com.clover.barcode2-1]: findLibrary returned null 
    at java.lang.Runtime.loadLibrary(Runtime.java:365) 
    ..... 

私は適切にライブラリが付属しての.soファイルを含めておりませんので、それがあると仮定し、私はそれを行う方法を見つけ出すことはできません。

私はAndroid Studioを使用しています。モジュール設定 - >ライブラリに移動してライブラリを追加し、そのディレクトリにjarファイルとsoファイルを追加しました。

+0

はどのように '.so'を追加し、どのようなディレクトリにそれを置くのですか? – ariefbayu

+0

追加する方法がわからないため、ディレクトリが追加されました。それらは両方とも/ libsにあります –

答えて

56

gradles 0.7.2+を使用して、Androidスタジオにプリインストールされた* .soファイルを追加できます。まずこの場所/ app/src/main/locationにjniLibsを作成し、* .soファイル(armeabi、armeabi-v7a、mips、x86)を含むすべてのフォルダをjniLibsにコピーします。

enter image description here

+3

あなたは私の人生の仲間を救った、私は2時間半にしようとしている、完璧に働いて、すべての奇妙なエラーはなくなった、あなたの知恵を共有してくれてありがとう。 @ジョシュウィルソンあなたは解決策としてマークすることができますか? – Florida

+0

@TGMCiansでは、.soファイルをコンパイルするために必要なコードを表示することができます。 –

+2

Thaaaaaaaaaaaaaaanksあなたは多くの手伝いをしました。 – vrbsm

0

新しいグラデルビルドシステムの問題だと思います。このソリューションをお試しくださいanswer. Googleグループディスカッションへのリンクもあり、解決策と問題の詳細が記載されています。

6

あなたが「build.gradle」ファイル内のいくつかのコードを追加する必要があり (ファイルに)ネイティブライブラリを使用します。

このコードは、「armeabi」ディレクトリを削除し、「clean project」中に「so」ファイルを「armeabi」にコピーするためのコードです。

task copyJniLibs(type: Copy) { 
    from 'libs/armeabi' 
    into 'src/main/jniLibs/armeabi' 
} 
tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn(copyJniLibs) 
} 
clean.dependsOn 'cleanCopyJniLibs' 

私は以下から参照しました。 https://gist.github.com/pocmo/6461138

+1

あなたはarmeabi-v7とx86を追加することを忘れないでください! – datayeah

3

は、私は私が外部ライブラリはラインがfileTreeコンパイル追加含ま私のプロジェクトでのlibsフォルダました(「LIBS」が含まれます。dirを「*の.jar」)のGradleのビルドファイル内の依存関係{}の中に。

私はlibフォルダを作成し、その中に必要な.soファイルをすべて挿入したarmeabiフォルダを作成しました。 zipファイル内の構造はlib/armeabi/*。soです。).zipファイルの名前をarmeabi.jar に変更し、外部ライブラリとしてlibsフォルダに追加しました。

+0

私は本当にこれを複数回投票することができればと思います!ありがとうございました!!! – Bex

0
splits { 
    abi { 
     enable true 
     reset() 
     include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a', 'armeabi' 
     universalApk false 
    } 
} 

私はFacebookのフレスコ画のライブラリーから、このコードを取得

+0

apkのサイズが小さくなるように、依存するシステムごとにapkを小さな部分に分割するこのコードはありませんか? – Jalpesh

関連する問題