新的Android gradle插件(0.7)似乎包含对NDK的新支持,但在文档中几乎没有提到它(我发现的唯一参考是一个名为test的测试 ndkSanAngeles).
看起来gradle正在寻找我已经包含在我的PATH中的NDK.但是,构建项目失败了
- 出了什么问题:任务执行失败':OGLTests:compileDefaultFlavorDebugNdk'.NDK未配置
如何在gradle中配置NDK?
我当前的build.gradle看起来像这样:
task nativeLibsToJar(type: Zip, description: 'create a jar with native libs') {
destinationDir file("$buildDir/native-libs")
baseName 'native-libs'
extension 'jar'
from fileTree(dir: 'src/main/libs', include: '**/*.so')
from fileTree(dir: 'src/main/libs', include: '**/gdb*')
into 'lib/'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn nativeLibsToJar
}
dependencies {
compile fileTree(dir: "$buildDir/native-libs", include: '*.jar')
}
android {
compileSdkVersion 19
buildToolsVersion '19.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "0.1"
}
buildTypes {
release {
runProguard false
}
debug {
// …Run Code Online (Sandbox Code Playgroud) 我正在使用Android Studio + CMake构建本机库.AS请求安装CMake,即使我已经安装了CMake并且在我的路径中.你能告诉AS在某个地方寻找CMake,而不是安装另一个CMake吗?
我想在类似于这个答案的设置中创建一个我可以管理的具有OpenGL纹理的SurfaceTexture.(引用到这里:)
- 通过OpenGL创建纹理
- 将此纹理传递给新SurfaceTexture的构造函数.
- 将这个新的SurfaceTexture提供给相机.
- 确保您使用的是OES_External(有关详细信息,请参阅文档).
但是,创建OpenGL纹理(如答案的第1步),需要EGL上下文,这需要使EGLSurface成为当前,这需要SurfaceTexture.似乎创建EGL上下文的唯一方法是创建一个SurfaceView(或具有SurfaceTexture的其他视图),并使用它初始化EGLSurface,然后使EGLContext保持最新.
我的目标是创建一个EGLContext并使其在后台线程中是最新的,在相机预览图像上进行一些屏幕外计算(主要使用NDK).我想创建一个库,并使其尽可能独立于UI.两个相关问题:
在Java方面,是否可以在不事先创建SurfaceTexture的情况下创建EGLContext?
在NDK方面,曾经有一个私有API调用来创建本机窗口android_createDisplaySurface(),但它不再起作用,而且,它是一个私有API.有没有办法用NDK创建表面?
我对使用EGL很陌生,我不明白为什么你需要一个EGLSurface来使EGLContext成为最新的.在iOS中,可以首先创建EAGLContexts,然后根据需要创建帧缓冲区.使用EGL似乎总是需要一个原生窗口.