我正在使用Android NDK将C/C++代码库构建到共享库中。 NDK成功构建代码并生成.so文件。然后我想将预构建的共享库(.so文件)放到我的Android Studio项目中。我使用的Android Studio版本是1.0.1。当我按照this article的建议将所有预编译的四个.so文件放在src/main/jniLibs
的jniLibs文件夹下,然后我在Android Studio中构建了整个项目时,构建失败,因为它报告了一些“C++ STL header not found
”错误。Android Studio和NDK集成问题
我认为这与在jniLibs文件夹中放入.so文件以将NDK与Android Studio集成在一起非常简单,但事实并非如此。显然,即使我已经使用命令行NDK构建了共享库,Android Studio gradle构建系统也正在重新编译我的C/C++源代码。由于NDK可以成功构建C/C++代码,Android Studio不应该重新编译代码,而应该使用预先存在的.so文件。这是NDK与Android Studio集成的已知问题吗?我如何让Android Studio使用预编译的.so文件,而不是自行重建C/C++代码?
这里是$ PROJECT /应用程序/文件的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
另外,这里是在项目的根目录$ PROJECT /的build.gradle顶级的build.gradle文件:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
如何解决这个问题让Android Studio直接使用预建的共享库而不是重新编译C/C++源代码?我相信这可能是由于Android Studio带有NDK的已知问题,或者Android Studio使用gradle脚本中的一个技巧,以避免重新编译本机代码。
它应该和....一样容易hhahahah LMAO对不起,我感觉到你的痛苦,我正在尝试做同样的事情。 – Josh