Android --目标本机库不是目录
我成功地在android项目中实现了本机支持,但在更改项目路径(只需将项目放入子目录)后,在构建应用程序时出现错误Android --目标本机库不是目录,android,c++,cmake,android-ndk,java-native-interface,Android,C++,Cmake,Android Ndk,Java Native Interface,我成功地在android项目中实现了本机支持,但在更改项目路径(只需将项目放入子目录)后,在构建应用程序时出现错误 "app/.externalNativeBuild/cmake/debug/x86 --target native-lib is not a directory" 也无法清理和重建项目。这个项目以前一直在进行中。此外,项目路径中没有空间 提前感谢您的支持 我使用的是Ubuntu 18.04、CMake 3.10.2、Android studio 3.3 这是CMakeLists
"app/.externalNativeBuild/cmake/debug/x86 --target native-lib is not a directory"
也无法清理和重建项目。这个项目以前一直在进行中。此外,项目路径中没有空间
提前感谢您的支持
我使用的是Ubuntu 18.04、CMake 3.10.2、Android studio 3.3
这是CMakeLists.txt(路径:appModule/CMakeLists.txt)
以及应用程序build.gradele
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
google()
}
android {
compileSdkVersion 28
defaultConfig {
applicationId 'application_id'
minSdkVersion 17
targetSdkVersion 28
versionCode 6
versionName "1.2"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
}
}
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
如果更改了app-->appModule,则可能会尝试
- 从AS关闭项目
- 用AS重新打开它
- 在
中通知gradle cmake目录的位置,例如:local.properties
cmake.dir=/your/vanilla/cmake/dir/like/linux-3.14.0
- 在
文件中将cmake版本传递给gradle,如app/build.gradle
您也可以忽略cmake.dir配置(Studio提供了这种便利,因为它位于sdk内部,由sdk管理器下载),因此您只需要在“app/build.gradle”中配置cmake版本
android {
externalNativeBuild {
version "3.10.2"
path '....'
}
}
关于gradle插件功能,两个cmake版本之间没有区别,区别在于两个版本之间cmake本身的功能
使用默认值:让工作室决定cmake版本
目前gradle插件的默认cmake选择是内部3.6.0-rc2版本。因此,如果您没有配置“cmake.dir”和“version”,则默认设置将生效。当然,您仍然可以将其配置为使用“香草CMake”方式:CMake路径和版本;这有点可怕,但有一个小小的好处:当Studio/Gradle将cmake default更改为3.10.2或其他版本时,您的应用程序不会受到影响。我们鼓励应用程序使用最新版本。作为一名应用程序开发人员,我可能也希望我的应用程序具有固定的行为,而不管构建工具的版本如何;从这个意义上说,明确的方式是有帮助的
附加说明
- CMake version:您可以运行“CMake--version”来获取配置build.grale的正确版本号,它不是嵌入sdk的CMake目录中的完整版本号
- 您的顶级CMakeLists.txt位置:对gradle插件漠不关心。实际上,你可以把它和C++代码一起放在一起,所以当你和其他平台共享时,它们(C++的构建脚本和源代码)在一个目录内。
- 从AS关闭项目
- 用AS重新打开它
- 在
中通知gradle cmake目录的位置,例如:local.properties
cmake.dir=/your/vanilla/cmake/dir/like/linux-3.14.0
- 在
文件中将cmake版本传递给gradle,如app/build.gradle
您也可以忽略cmake.dir配置(Studio提供了这种便利,因为它位于sdk内部,由sdk管理器下载),因此您只需要在“app/build.gradle”中配置cmake版本
android {
externalNativeBuild {
version "3.10.2"
path '....'
}
}
关于gradle插件功能,两个cmake版本之间没有区别,区别在于两个版本之间cmake本身的功能
使用默认值:让工作室决定cmake版本
目前gradle插件的默认cmake选择是内部3.6.0-rc2版本。因此,如果您没有配置“cmake.dir”和“version”,则默认设置将生效。当然,您仍然可以将其配置为使用“香草CMake”方式:CMake路径和版本;这有点可怕,但有一个小小的好处:当Studio/Gradle将cmake default更改为3.10.2或其他版本时,您的应用程序不会受到影响。我们鼓励应用程序使用最新版本。作为一名应用程序开发人员,我可能也希望我的应用程序具有固定的行为,而不管构建工具的版本如何;从这个意义上说,明确的方式是有帮助的
附加说明
android { externalNativeBuild { version "3.10.2" path '....' } }