Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
ANDROID本机库构建的minSdkVersion、CompileSdkVersion和ANDROID_本机_API_级别之间的关系_Android_Cmake_Android Ndk_Android Gradle Plugin - Fatal编程技术网

ANDROID本机库构建的minSdkVersion、CompileSdkVersion和ANDROID_本机_API_级别之间的关系

ANDROID本机库构建的minSdkVersion、CompileSdkVersion和ANDROID_本机_API_级别之间的关系,android,cmake,android-ndk,android-gradle-plugin,Android,Cmake,Android Ndk,Android Gradle Plugin,我正在尝试使用CMakeList.txt文件构建Android本机库。当库使用minsdkversion23构建时,我观察到了一个崩溃,而在使用androidstudio将其构建为minsdkversion21时,我没有遇到这个问题。问题是,在通过命令行构建参数时,我无法确定在何处更改此值或传递参数。构建本机库的正常过程是使用cmake命令和ninja命令生成ninja构建文件,但是cmake命令没有任何变量来指定minSdkVersion 对于使用cmake构建本机库,我能找到的唯一一个可以指

我正在尝试使用CMakeList.txt文件构建Android本机库。当库使用minsdkversion23构建时,我观察到了一个崩溃,而在使用androidstudio将其构建为minsdkversion21时,我没有遇到这个问题。问题是,在通过命令行构建参数时,我无法确定在何处更改此值或传递参数。构建本机库的正常过程是使用cmake命令和ninja命令生成ninja构建文件,但是cmake命令没有任何变量来指定minSdkVersion

对于使用cmake构建本机库,我能找到的唯一一个可以指定版本的变量是ANDROID_native_API_LEVEL。文档()显示,ANDROID_NATIVE_API_LEVEL是cmake用于编译的版本,但让我困惑的是,每当我在build.gradle文件中更改minSdkVersion并通过gradle文件构建它时,日志文件显示cmake命令使用的是ANDROID_NATIVE_API_级别,该级别设置为gradle文件中的minSdkVersion。它不应该设置为CompileSDK版本中的值吗


我只需要一种方法将minSdkVersion变量传递给cmake命令。我在这里做错了什么?

不,它不应该是
compileSdkVersion
targetSdkVersion
compileSdkVersion
是Java习惯用法。本机代码的行为与Java代码不同(无论是否实际调用,任何使用过的函数都必须在运行时出现)。因此,
minSdkVersion
必须是您的
ANDROID\u原生\u API\u级别


我想你在android-21设备上运行时看到了MinsdkVersion23的崩溃?

谢谢Dan。是的,我在android-21设备上运行时看到了崩溃,预计届时会崩溃
minSdkVersion
是您的应用程序可以使用的最低版本。