0

私は、多くのNDK依存関係を持つ非常に厄介なAndroidプロジェクトを継承し、gradleを正しくリンクしてすべての.soおよび.aファイルを結果のapkに含めることに多くの問題を抱えています。

このプロジェクトは、いくつかのアクティビティをセットアップし、C++ から構築された大きな NDK ライブラリを呼び出すいくつかの Java コードで構成されています。これは、サードパーティ ライブラリ (事前構築またはソースから構築) の用量とリンクします。

最新のgradle実験的プラグインでビルドすることができましたが、何らかの理由で、私のモジュールはapkに含まれていませんが、私のサードパーティの.soファイルは、gradleが私のモジュールを.ビルドディレクトリに配置したsoファイル。

私のbuild.gradleは次のようになります:

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'

}

私の質問を要約すると、なぜ gradle はモジュール (libXM.so) をビルドし、それを build/libs/xM/shared/armeabi-v7a/debug に配置するのに、最終的な apk ファイルには含めないのですか?

4

1 に答える 1