jni笔记
来源:互联网 发布:免费边缘融合软件 编辑:程序博客网 时间:2024/05/18 02:35
1.cmd
2.cd 到src/main
3.javah -d jni -classpath C:\Android\sdk\platforms\android-23\android.jar;..\..\build\intermediates\classes\debug cleanrobot.robot.com.myapplication.nativer.Nativer
4.build.gradle 配置ndk环境编译c/c++
apply plugin: 'com.android.application'
task ndkBuild(type: Exec) {
commandLine 'C:\\Users\\chuo_qin\\AppData\\Local\\Android\\android-ndk-r11b\\ndk-build.cmd','-C', file('src/main').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
android {
sourceSets {
main {
jni.srcDirs = [] //屏蔽gradle的jni生成过程
jniLibs.srcDir 'src/main/libs'
}
}
}
5.注意事项
错误1:
Error:error: base operand of '->' has non-pointer type 'JNIEnv {aka _JNIEnv}'
c写法
jclass clz = (*env)->FindClass(env,"cleanrobot/robot/com/myapplication/nativer/ActivityTestNative");
c++写法
jclass clz = env->FindClass("cleanrobot/robot/com/myapplication/nativer/ActivityTestNative");
错误2:
g_ctx.activityTestNativeClz = env->NewGlobalRef(clz);
invalid conversion from 'object {aka _jobject*}' to 'jclass {aka _jclass*}'
g_ctx.activityTestNativeClz =(jclass) env->NewGlobalRef(clz);
错误3:
线程结束时记得调用
g_ctx.javaVM->DetachCurrentThread();
6.Error:error: 'string' was not declared in this scope
Application.mk添加以下加以支持APP_STL := gnustl_static
.cpp文件 添加 #include <string> using std::string; 或者 #include <string> using namespace std;
7.can pass objects of 'std::string {aka class std::basic_string
string s = "123"; LOGE("S = %s",s.data()); c 指支持char *, char[]两种类型
- jni笔记
- jni 笔记
- JNI笔记
- JNI笔记
- JNI笔记
- JNI笔记
- jni笔记
- JNI笔记
- jni 笔记
- JNI笔记
- JNI笔记 JNI开发流程
- jni学习笔记
- JNI学习笔记
- JNI入门学习笔记
- android JNI 学习笔记
- android JNI 学习笔记
- android jni 学习笔记
- android JNI 学习笔记
- midgard register number
- MAVEN构建多模块项目-IDEA
- View.post()方法的使用
- Activiti工作流数据库表详细介绍(23张表)
- Riak Search功能使用
- jni笔记
- 太阳同步轨道理解
- 条形码jsbarcode
- android WebView详解,常见漏洞详解和安全源码(上)
- jQuery posting valid json in request body
- 数据结构实验之二叉树三:统计叶子数
- 1.应用程序标签DataList, Progress, Meter, Menu, Details
- HTTPS 能否避免流量劫持?
- 7.0 App客户端劫持及简单防护(获取栈顶包名、webview)