NDKの依存関係が非常に乱雑なアンドロイドプロジェクトを継承し、gradleを正しくリンクして、すべての.soと.aファイルをapk 。NDKモジュールは最終APKに含まれていません
プロジェクトは、いくつかのアクティビティを設定し、C + +からビルドされた大規模なNDKライブラリを呼び出すJavaコードで構成されています。
私はそれを最新のgradle実験プラグインでビルドすることができましたが、何らかの理由で私のモジュールがapkに含まれていませんでしたが、私の3rdパーティの.soファイルは、モジュールをビルドディレクトリに置いた.soファイルに置き換えます。
私のbuild.gradleは以下のようになります。なぜGradleのビルド/ libsに/ xMと/共有/ armeabiにそれを置き、私のモジュール(libXM.so)を構築ん:だから、私の質問を総括する
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = "22.0.1"
defaultConfig.with {
applicationId = "<removed>"
minSdkVersion.apiLevel = 7
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"
}
ndk {
moduleName = "XM"
CFlags.add("-I${file("src/main/jni")}".toString())
cppFlags.addAll(["-I${file("../../3rd_part/android/osg")}".toString()])
cppFlags.addAll(["-I${file("../../3rd_part/android/opus")}".toString()])
ldFlags.add("-L${file("src/main/jniLibs/armeabi-v7a")}".toString())
ldLibs.addAll(["osgdb_jpeg", "osgdb_freetype", "jpeg","argsub_es", "jnigraphics", "android", "log"])
stl = "gnustl_shared"
abiFilters.add("armeabi-v7a")
}
sources {
main {
jni {
source {
srcDir "../../core"
srcDir "src/main/jni"
}
}
}
}
lintOptions.abortOnError = false
}
android.buildTypes {
release {
minifyEnabled = false
proguardFiles.add(file('proguard-rules.txt'))
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.0.0'
compile 'com.wunderlist:sliding-layer:1.1.1'
}
-v7a/debug、ただし、最終apkファイルには含めないでください。
ここで私の答えを確認してください:http://stackoverflow.com/a/33164947/3626214多分それはあなたに役立ちます – Aspicas
libXM.soが含まれていないことをどのように知っているか説明できますか?ログにエラーがありますか?プロジェクトは実行され、その依存関係を見つけることができませんか? –
APKファイルはちょうどzipなので、winrarを使ってファイルを展開してチェックしたところ、xmライブラリを読み込もうとするとアプリケーションが失敗します。 – monoceres