在我的android应用程序中,我使用JNI来处理一些C ++库源代码。
必须将这些来源从自己的存储库(".../Connection/Connection"
)复制到"src/main/jni/CoreLib/"
问题是我需要为每个构建重新创建"src/main/jni/CoreLib/"
目录以删除未使用的文件。
我在"jni"
文件夹中也有一个cpp文件,该文件引用了"CoreLib"
目录中已删除的文件,由于包含了以下内容而导致错误:
#include "CoreLib/EventDispatcher.h" // "src/main/jni/MyCustomCppFile.cpp
我假设编译器检查包含在我的脚本执行之前。
问题是:如何在任何类型的编译/链接验证之前重新创建并复制所有cpp源到我的"CoreLib"
目录?或者是否有其他解决方法来摆脱这个错误?
这是我的一些build.gradle
文件:
task deleteCoreLibDir(type: Delete) {
println('Deleting CoreLib dir')
delete 'src/main/jni/CoreLib'
}
task createCoreLibDir {
File f = new File('src/main/jni/CoreLib/');
f.mkdirs();
if (f.exists()) {
println('Re-created CoreLib dir')
} else {
println('!!!! CoreLib dir was not created')
}
}
task copyConnectionFiles(type: Copy) {
println('Copying files from Core library to current project')
File thisProj = file('src');
File connectionDir = thisProj.parentFile.parentFile.parentFile.parentFile;
File f = new File(connectionDir, 'Connection/Connection'); // library folder
from f.absolutePath
into 'src/main/jni/CoreLib/'
include('**/*')
}
afterEvaluate {
android.applicationVariants.all { variant ->
variant.javaCompiler.dependsOn(deleteCoreLibDir)
variant.javaCompiler.dependsOn(createCoreLibDir)
variant.javaCompiler.dependsOn(copyConnectionFiles)
}
}
提前致谢!