Отладка NDK с помощью экспериментального плагина gradle

Я пытаюсь добавить встроенную отладку в проект Android Studio NDK. В прошлом я просто использовал gradle для запуска сценария оболочки, который создавал библиотеку NDK. Сейчас я пытаюсь перейти на использование экспериментального плагина.

Я искал сеть для того, что мало информации, есть, (в основном здесь,Сайт инструментов Android - Экспериментальный Gradle), об использовании gradle-экспериментального с NDK, и я собрал этот файл build.gradle, который использует поддержку предварительного просмотра NDK для выполнения сборки NDK встраиваемой со сборкой Java.

Наконец, собрав все это из кусочков информации, мне удалось получить часть сборки NDK, но теперь он не может включить файл httpmime-4.4-beta1.jar, который явно включен в зависимости, и я пробовал много разных перестановок, таких как:

compile files("libs/httpmime-4.4.jar")

Но независимо от того, ошибки для отсутствующих символов из файла Jar все еще появляются.

источник build.gradle

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

    String APP_PACKAGE_NAME = 'com.obfuscated.app',
           VERSION_NAME = '3.0',
           TOOLS_VERSION = '23.0.2'

    int VERSION_CODE = 15,
        MIN_SDK_VERSION = 13,
        TARGET_SDK_VERSION = 19,
        COMPILE_SDK_VERSION = 23

    model {
        repositories {
            libs(PrebuiltLibraries) {
                // prebuilt binaries mirroring Android.mk
                libstuff {
                    headers.srcDirs.add(file("jni/stuff/include/stuff"))
                    binaries.withType(SharedLibraryBinary) {
                        sharedLibraryFile = file("jni/stuff/lib/libstuff.so")
                    }
                }
                // ...several more of these actually exist in build.gradle and are working
                cares {
                    headers.srcDirs.add(file("jni/c-ares/include"))
                    binaries.withType(SharedLibraryBinary) { 
                        // StaticLibraryBinary and staticLibraryFile doesnt work despite sample code, at least not for com.android.tools.build:gradle-experimental:0.6.0-alpha5, this builds even though its a static-lib
                        sharedLibraryFile = file("jni/c-ares/lib/libcaresARM.a")
                    }
                }
            }
        }
        android {
            compileSdkVersion = COMPILE_SDK_VERSION
            buildToolsVersion = TOOLS_VERSION

            defaultConfig.with {
                applicationId = APP_PACKAGE_NAME
                minSdkVersion.apiLevel = MIN_SDK_VERSION
                targetSdkVersion.apiLevel = TARGET_SDK_VERSION
                versionCode = VERSION_CODE
                versionName = VERSION_NAME

                buildConfigFields {
                    create() {
                        type "int"
                        name "VALUE"
                        value "1"
                    }
                }

                compileOptions.with {
                    sourceCompatibility = JavaVersion.VERSION_1_7
                    targetCompatibility = JavaVersion.VERSION_1_7
                }
            }

            signingConfigs {
                create("appRelease") {
                    storeFile file('sign.jks')
                    storePassword '...'
                    keyAlias '...'
                    keyPassword '...'
                    storeType "jks"
                }
            }
        } // end android

        android.lintOptions {
            abortOnError = false
        }

        android.packagingOptions {
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/services/javax.annotation.processing.Processor'
        }

        android.ndk {
            moduleName = "native"
            toolchain "clang"
            toolchainVersion "3.5"
            platformVersion = MIN_SDK_VERSION

            ldLibs.addAll('atomic', 'android', 'log', 'OpenSLES')
            abiFilters.addAll(["armeabi", "armeabi-v7a"])
            CFlags.addAll(["-mfloat-abi=softfp", "-mfpu=neon", "-O3", "-DCARES_STATICLIB", "-Wno-c++11-long-long"])
            cppFlags.addAll(["-I${file("jni")}".toString(),
                             "-I${file("jni/c-ares/include")}".toString(),
                             "-I${file("jni/coffeecatch")}".toString()])
            stl = "stlport_shared"
        }

        android.sources {
            main {
                jniLibs {
                    dependencies {

                    }
                }
                jni {
                    dependencies {
                        library "libstuff"
                        library "cares"
                        // ... 
                    }
                    source {
                        srcDir "jni"
                    }
                }
                // java {
                    // dependencies {
                    //     compile files("libs/httpmime-4.4-beta1.jar")
                    //     compile files("libs/FlurryAnalytics-5.1.0.jar")
                    // }
                // }
            }
        }

        android.buildTypes {
            debug {
                ndk.with {
                    debuggable = true
                }
            }
            release {
                minifyEnabled = false
                ndk.with {
                    debuggable = true
                }
            }
        }

        android.productFlavors {
            create("arm") {
                ndk.with {
                    abiFilters.add("armeabi-v7a")

                    ldLibs.addAll([file("jni/stuff/lib/libstuff.so").toString(),
                                            file("jni/c-ares/lib/libcaresARM.a").toString()])
                }
            }
            create("fat") {
                // compile and package all supported ABI
            }
        }

    } // end model

    repositories {
        mavenCentral()
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])

        compile 'com.android.support:support-v4:23.+'
        compile 'com.android.support:appcompat-v7:23.+'
        compile 'com.android.support:support-v13:23.+'
        compile 'com.android.support:support-annotations:23.+'

        compile 'com.squareup:otto:1.3.8'
        compile 'com.github.machinarius:preferencefragment:0.1.1'
        compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
        compile 'com.fasterxml.jackson.core:jackson-core:2.5.+'
        compile 'com.fasterxml.jackson.core:jackson-annotations:2.5.+'
        compile 'com.fasterxml.jackson.core:jackson-databind:2.5.+'

        compile 'com.jakewharton:butterknife:7.0.1'
        compile 'com.google.guava:guava:19.0'
    }


    allprojects {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:deprecation" << "-Xlint:unchecked"
        }
    }

Из-за разочарования я вернулся к неэкспериментальной ветке, и даже со старым файлом build.gradle теперь не удается найти тот же самый файл jar. Так это проблема с Android Studio 2.0 Preview 6?

Кто-нибудь еще испытывал это, или есть решение для этого? Было бы так удобно наконец-то отладить работу NDK прямо в Android Studio, и если бы не было этого последнего препятствия, я думаю, что был бы там.

Если не считать переписывания кода, который зависит от этого jar-файла, я не знаю, что еще можно попробовать. Я также открыт для предложений относительно формата моего файла build.gradle, приведенного выше, поскольку документация по этим новым функциям еще очень скудна, а некоторые примеры, похоже, уже устарели в отношении правильного синтаксиса.

Что я пропускаю?

Вы можете видеть, что шаги C и Cpp (mobile: compileNativeArmeabiDebugArmSharedLibraryNativeMainCpp) выполняются просто отлично, но затем Javac завершается неудачно. Этот подход к jar-файлу хорошо работал последние 2 года или около того для библиотеки http-mime от apache, поэтому я не понимаю, почему вдруг возникает такая проблема.

    :mobile:mergeArmDebugAndroidTestAssets
    :mobile:generateArmDebugAndroidTestResValues UP-TO-DATE
    :mobile:generateArmDebugAndroidTestResources
    :mobile:mergeArmDebugAndroidTestResources
    :mobile:processArmDebugAndroidTestResources
    :mobile:generateArmDebugAndroidTestSources
    :mobile:copyArmeabi-v7aDebugArmSharedLibraryStlSo
    :mobile:compileNativeArmeabi-v7aDebugArmSharedLibraryNativeMainC
    :mobile:compileNativeArmeabi-v7aDebugArmSharedLibraryNativeMainCpp
    :mobile:linkNativeArmeabi-v7aDebugArmSharedLibrary
    :mobile:nativeArmeabi-v7aDebugArmSharedLibrary
    :mobile:stripSymbolsArmeabi-v7aDebugArmSharedLibrary
    :mobile:ndkBuildArmeabi-v7aDebugArmSharedLibrary
    :mobile:ndkBuildArmeabi-v7aDebugArmStaticLibrary UP-TO-DATE
    :mobile:copyArmeabiDebugArmSharedLibraryStlSo
    :mobile:compileNativeArmeabiDebugArmSharedLibraryNativeMainC
    :mobile:compileNativeArmeabiDebugArmSharedLibraryNativeMainCpp
    :mobile:linkNativeArmeabiDebugArmSharedLibrary
    :mobile:nativeArmeabiDebugArmSharedLibrary
    :mobile:stripSymbolsArmeabiDebugArmSharedLibrary
    :mobile:ndkBuildArmeabiDebugArmSharedLibrary
    :mobile:ndkBuildArmeabiDebugArmStaticLibrary UP-TO-DATE
    :mobile:processAndroidArmDebugMainJniLibs UP-TO-DATE
    :mobile:androidArmDebug
    :mobile:compileArmDebugJavaWithJavac
    :mobile:compileArmDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).

Да, я знаю, что библиотеки apache устарели, но это устаревший код, который должен работать, несмотря на этот факт, и будет обновляться в будущем.

Ответы на вопрос(1)

Ваш ответ на вопрос