2016-03-23 7 views
0

実験的なgradleプラグインを使用しているAndroid Studioの新しいプロジェクトに2つの.so事前ビルドライブラリを追加しました(com.android.tools.build:gradle -experimental:0.6.0-beta5)。実験的なgradleプラグインを使用してAndroidスタジオでJavaから事前作成されたネイティブ.soライブラリを使用する

私のbuild.gradleファイルは次のようになります。

apply plugin: 'com.android.model.application' 

model { 
    repositories { 
     prebuilt(PrebuiltLibraries) { 
      gstplayer { 
       binaries.withType(SharedLibraryBinary) { 
        sharedLibraryFile = file("libs/libgstplayer.so") 
        sharedLibraryFile = file("libs/libgstreamer_android.so") 
       } 
      } 
     } 
    } 
    android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.2" 

     defaultConfig { 
      applicationId "com.myexample.gstreamertest2" 
      minSdkVersion.apiLevel 19 
      targetSdkVersion.apiLevel 23 
      versionCode 1 
      versionName "1.0" 

      buildConfigFields { 
       create() { 
        type "int" 
        name "VALUE" 
        value "1" 
       } 
      } 
     } 
     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles.add(file('proguard-rules.pro')) 
      } 
     } 

     ndk { 
      moduleName "gstplayer" 
     } 

     productFlavors { 
      create("flavor1") { 
       applicationId "com.app" 
      } 
     } 

     // Configures source set directory. 
     sources { 
      main { 
//    jni { 
//     source { 
//      srcDirs = ['src/main/jni'] 
//     } 
//    } 
       jniLibs { 
        dependencies { 
         library "gstplayer" 
        } 
       } 
      } 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
} 

Gradleのビルドが成功しているが、私はどこにもこれらのライブラリを参照する方法の説明を見つけることができません。私はpublic native String getInfoFromJni()をJavaファイルに作成し、jniフォルダ内のネイティブ.cファイルを参照できることを知っています。これを得ることができましたが、.soライブラリと似たようなことをする方法がわかりません。

javaから.soライブラリのメソッドにアクセスするにはどうすればよいですか?

答えて

0

あなたはwraperのC libにを作成する必要があります。

は、競合を避けるためにmoduleNameのの名前を変更し1.-:

ndk { 
    moduleName "gstplayerwrapper" 
    } 

2.-あなたの活動に

static{ 

    System.loadLibrary("EcoLogSIL"); 

} 
をあなたのラッパーLIBのロード

3.-あなたのプロジェクトを構築しました

4.ラッパーを呼び出してalt + i ntro

enter image description here

は5.-あなたはgtsplayerwrapper.c内に新しい機能を持っている必要があり、ここで、あなたは呼び出すことができますlibgstplayer.so

JNIEXPORT void JNICALL 
Java_your_activty_name_call_1wrapper(JNIEnv *env, jobject instance) { 

    // YOUR CODE HERE 

} 

がgtsplayerwrapper.c内部ライブラリをインポートすることを忘れないでください

EDIT追加ヘッダ

repositories { 
     prebuilt(PrebuiltLibraries) { 
      gstplayer { 
       headers.srcDir "src/main/jni/include" 
       binaries.withType(SharedLibraryBinary) { 
        sharedLibraryFile = file("libs/libgstplayer.so") 
        sharedLibraryFile = file("libs/libgstreamer_android.so") 
       } 
      } 
     } 
    } 

プロジェクトでこのフォルダを作成し、

+0

が.hファイルをコピーして良い音でなく、私は苦労してる部分がgstplayerwrapper.cにライブラリをインポートし、 – MarkyDD

+0

libgstplayer.so私が見ることができる最初のエラーを呼んでいますライブラリのヘッダをgradleファイルに追加しないことです。 –

+0

.soライブラリは非常に広範で、私があまりよく知っていないサードパーティのライブラリです。どのような.hファイルが必要なのかを知るには?この図書館には何百人もあります。私はサードパーティ製のライブラリから "include"ディレクトリを追加しました。Android Studioで作るときに#includeのエラーがたくさんあります。どのような理由であれ、コマンドラインでndk-buildを使用しても正常にビルドできますが、これらの.hファイルをjniに追加してAndroidスタジオでビルドすると、フォルダ内の他のファイルを参照している場合、ほとんどのファイル '' – MarkyDD

関連する問題