Android NDk开发
文章平均质量分 54
学习中呢
一个本科小生的匍匐前进之路
展开
-
配置环境并打印HelloWorld
1.下载需要的jar包并解压 2.配置环境变量 3验证环境变量是否配置成功,在命令窗口输入ndk-build如果出现以下结果证明成功 本人使用的是android studio,所以一下为android studio配置 4.在项目路径下的local.properties文件配置ndk路径 5.为了兼容老版本在项目的gradle.properties配置如下原创 2017-06-13 13:35:24 · 422 阅读 · 0 评论 -
解码为yuv
参考各路大神音视频开发,现总结如下,以免以后忘记。首先说一下本篇转为的格式为yuv420p,yuv420p实际上是一种数据结构,四个y公用一个uv,所以一个y只用了四分之一u和四分之一v 先来一张解码流程图 av_register_all()初始化了格式封装信息库,初始化了muxer(复用器)和demuxer(分离器)和协议,实际上调用了 av_register_input_format()原创 2017-09-14 22:13:20 · 765 阅读 · 0 评论 -
Android build system & Android.mk 规范
1. Android编译系统分析 --- 系统变量解析 LOCAL_PATH - 编译时的目录 LOCAL_MODULE - 编译的目标对象 LOCAL_SRC_FILES - 编译的源文件 LOCAL_C_INCLUDE转载 2017-09-13 13:00:10 · 377 阅读 · 0 评论 -
使用NDK编译ffmpeg
测试编译平台为linux,首先去ffmpeg官网下载linux版本ffmpeg并解压缩,本人编译版本为2.6.9。需要下载linux版本ndk并解压缩,版本为r10e。 修改修改下载目录中的configure文件SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LI原创 2017-09-13 10:50:03 · 419 阅读 · 0 评论 -
热更新
虽然有插件开发,但热更新少不了。 当我们需要更新插件的时候使用的是插件开发,当我们需要更新宿主程序就需要使用热更新 热更新使用框架bsdiff和bzip2 我们需要在服务端使用新版apk和旧版apk生成差分包,由于服务端在windows下,所以生成动态文件(dll) 通过寻找bsdiff的入口函数在bsdiff.cpp中在,因为截止到现在我主要了解了一点c,所以把bsdiff.cp原创 2017-07-25 19:22:28 · 2614 阅读 · 0 评论 -
Eclipse安装Sequoyah插件 配置本机开发报错Native Development: Invalid path for NDK(路径无效) 解决方案
打开window菜单下的preference选项。选择Android,Native Development(本地开发) 选择你的NDK安装目录。 但是,这个插件目前仅支持ndk的r4和r5版本,更高版本会提示这个路径无效。 其实,插件只是需要这个参数向PATH中添加这个路径,但是不设置这个路径会导致插件工作不正常。 我的解决方法是,手动创建以下文件: (NDK目录)\toolchains\arm原创 2017-07-25 18:26:30 · 328 阅读 · 0 评论 -
使用vs生成dll文件并导入java工程
首先在vs源文件下下引入头文件,一个都不能少 生成dll文件,刚开始生成每次都失败,最后知道要在调试----属性-----常规------配置类型调成dll 而我在把dll文件放在项目路径下(不是src路径下)时又报错了,Can't load IA 32-bit .dll on a AMD 64-bit platform这是因为我在vs生成的dll文件是32位的,而我的java原创 2017-07-24 10:48:40 · 1740 阅读 · 0 评论 -
jni访问java的属性和方法
java中native方法 public class JniTest { public String key = "jason"; public static int count = 9; public native static String getStringFromC(); public native String getString2FromC(int i); /原创 2017-07-22 16:13:13 · 576 阅读 · 0 评论 -
jni字符串乱码,异常,引用....
//访问构造方法 //使用java.util.Date产生一个当前的时间戳 JNIEXPORT jobject JNICALL Java_com_dongnaoedu_jni_JniTest_accessConstructor (JNIEnv *env, jobject jobj){ jclass cls = (*env)->FindClass(env, "java/util/Date");原创 2017-07-23 20:41:44 · 763 阅读 · 0 评论 -
jni函数参数
在c语言中JNIEnv是结构体指针,代表java运行环境,调用java代码。JNIEnv * env,env是二级指针 在java中输出一个自符串(*env)->NewStringUTF(env,"C String"); 在C++中,JNIEnv是一个结构体的别名,JNIEnv *env;env是一个结构体指针, 在java中输出一个字符串,env->NewStringUTF("C+原创 2017-07-22 16:12:01 · 1471 阅读 · 0 评论 -
AndroidStudio下使用cmake开发ndk
前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的。 1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要正确,甚至要记得住所有的jni函数等,真是太折磨人了…平时写Java代码的时候都是写几个字母会出来一大堆提示然后选择的,这样还有一个好处就是很多时候我们不知道有那些函数,但是我们可以通过obj.,然后就可以看到它有转载 2018-01-19 17:53:19 · 1156 阅读 · 0 评论