Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建外部C++;带有Android Studio的库+;格拉德尔+;NDK? 我现在正在把C++库移植到Android上。我已经做了初步的工作,并以Application.mk/Android.mk的方式构建了它_Android_C++_Android Ndk_Android Gradle Plugin - Fatal编程技术网

如何构建外部C++;带有Android Studio的库+;格拉德尔+;NDK? 我现在正在把C++库移植到Android上。我已经做了初步的工作,并以Application.mk/Android.mk的方式构建了它

如何构建外部C++;带有Android Studio的库+;格拉德尔+;NDK? 我现在正在把C++库移植到Android上。我已经做了初步的工作,并以Application.mk/Android.mk的方式构建了它,android,c++,android-ndk,android-gradle-plugin,Android,C++,Android Ndk,Android Gradle Plugin,即将推出的Java库演示应用程序正在Android Studio中开发。多亏了StackOverflow社区,我可以一起构建所有东西(演示+库) 但是,我无法访问这些版本中的本机调试。但调试是必要的-库还不够稳定。纯控制台GDB调试目前花费的时间太长,将来可能会花费更多的时间 所以我决定用AndroidStudio和Gradle进行构建,以使用集成调试器 我有专用的库模块,其中包含NDK和Java(包装器)部分。 但是,C/C++源文件不在jni/子目录下。它们位于另一个目录中 因此,我可以配置

即将推出的Java库演示应用程序正在Android Studio中开发。多亏了StackOverflow社区,我可以一起构建所有东西(演示+库)

但是,我无法访问这些版本中的本机调试。但调试是必要的-库还不够稳定。纯控制台GDB调试目前花费的时间太长,将来可能会花费更多的时间

所以我决定用AndroidStudio和Gradle进行构建,以使用集成调试器

我有专用的库模块,其中包含NDK和Java(包装器)部分。 但是,C/C++源文件不在jni/子目录下。它们位于另一个目录中

因此,我可以配置Gradle从该目录获取源代码。 我试过这样的smth:

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

model {
android {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.2"

    defaultConfig.with {
        minSdkVersion.apiLevel = 10
        targetSdkVersion.apiLevel = 23
        versionCode = 1
        versionName = "1.0"
    }

    ndk {
        moduleName = "inttalksdk"
        stl "gnustl_shared"
        cppFlags.add("-std=c++11")
        cppFlags.add("-fexceptions")
        ldLibs.addAll(['log'])
    }
}

android.sources {
    main.jni.source {
        srcDirs.add(["src"])
    }
}


android.buildTypes {
    release {
        minifyEnabled = false
        proguardFiles.add(file('proguard-android.txt'))
    }
}
}
但AS甚至无法同步项目。 错误消息是:

Gradle 'Android' project refresh failed
Error:Attempt to read a write only view of model of type 'java.lang.Object' given to rule 'android.sources { ... } @ inttalksdk/build.gradle line 24, column 5'
我真正的问题是:如何将这些外部C/C++文件添加到Gradle构建中

我使用最新的AS 2.0+0.7.0 beta3实验插件


请帮助。

问题出在0.7.0-beta3实验插件中。我恢复到0.6.0版本。 这个语法还可以:

    android.sources {
    main {
        jni {
            source {
                srcDir "${project.ext.inttalksdk}/src/Components/Util/"
            }
        }
    }

还可以将C++代码添加为库,然后执行<代码>编译项目(“:我的JNI代码”)< /Calp>谢谢!但最后我改用了CMake支持,这为我节省了几个小时。