Har*_*uck 11 c android android-ndk android-studio
作为一个概念证明,我正在尝试编译和利用这个库的功能为Android应用程序.我正在使用android工作室.到目前为止我所做的是:
将我的build.gradle链接到源中存在的Android.MK文件
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
Run Code Online (Sandbox Code Playgroud)设置ProductFlavors以避免尝试为库不支持的体系结构进行构建(我可能已经错了)
productFlavors {
dev { ndk.abiFilters 'x86', 'armeabi', 'armeabi-v7a' }
develx86 { ndk.abiFilters 'x86', 'armeabi', 'armeabi-v7a' }
production { ndk.abiFilters 'x86', 'armeabi', 'armeabi-v7a' }
productionx86 { ndk.abiFilters 'x86', 'armeabi', 'armeabi-v7a' }
}
Run Code Online (Sandbox Code Playgroud)在这一点上,我注意到一些像cpu-miner.c这样的文件缺失,其中包括突出显示它们缺失,具体而言
#include <curl/curl.h>
#include <openssl/sha.h>`
Run Code Online (Sandbox Code Playgroud)所以我去了这两个库的官方网站并下载了源代码,创建了两个相应的文件夹并将所有文件放在那里.在OpenSSL那里有一个h.in文件 - 我理解的配置.我能从这里得到一个配置的(也可能是我犯错误的地方)
APP_ABI:= armeabi armeabi-v7a x86以排除我不支持的一些体系结构.在这一点上,我遇到了一些问题 - 其中一个问题是我实际上无法使用NDK-build构建我的JNI内容 - sched.h无法解决(即使我将API版本增加到20).这导致如下错误:
JNI/cpu-miner.c:473:2: error: use of undeclared identifier 'cpu_set_t'
cpu_set_t set;
jni/cpu-miner.c:474:12: error: use of undeclared identifier 'set'
CPU_ZERO(&set);
Run Code Online (Sandbox Code Playgroud)
所以问题是:
sched.h?一旦我修复了库构建就足以生成我的c文件的java接口并开始使用它们还是需要考虑其他步骤?
如果您需要,请随时询问任何其他详细信息,请提前感谢.
免责声明:我是一个.NET开发人员所以请在适用的情况下更具体地了解android/C的内容.
免责声明2:此计划是出于教育目的而作为概念证明.
看起来cpu_set_t直到 android-21 才将其纳入 NDK 标头。
NDK r14(未发布,但应该会在下周发布)已经完全重做了标头,以便您可以访问结构定义和常量(无论您需要的 API 在 android-21 之前是否可用)问题)。要使用它们,请获取r14 beta并按照统一标头的说明进行操作。
| 归档时间: |
|
| 查看次数: |
1795 次 |
| 最近记录: |