![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
yiyecheer
这个作者很懒,什么都没留下…
展开
-
使用aar库封装c++动态库并在Android app中使用
我们要使用某服务的SDK,但是对方只有纯c++风格的第三方的arm架构的动态库(.so),因此无法直接在java app中直接使用,需要将原始so库封装成符合JNI命名规范的so库(以下简称JNI so库),然后才能通过JNI在java app中使用。我的需求并非直接在Android app中使用JNI so库,而是再把JNI so库封装一层,封装成Android app能直接使用的jar包或aar原创 2017-09-27 20:28:56 · 4883 阅读 · 0 评论 -
在JNI c++中使用c11
在上篇文章中我们使用gradle自动生成Android.mk并自动调用ndk-build编译生成JNI so库,但是cpp源文件非常简单,当我们需要用到std::thread等c11特性时,还需要对gradle脚本做些改动。cpp源文件中包含<thread>,编译报错:E:\ShareFolder\project\AndroidStudioProjects\JNIDemo\jlib\src\main原创 2017-09-28 16:39:47 · 1365 阅读 · 0 评论 -
Android调用不符合JNI命名规范的so库
现在有一个纯c++风格的arm平台的动态链接库libbytebuffer.so和头文件ByteBuffer.h,接下来我将先将其封装成符合JNI命名规范的so库,这样JNI能直接调用,然后将JNI层的代码制作成jar包,然后再给Android App调用。这过程中有灰常多的bug,比如我电脑(Win10)装不了高版本的AS,安装程序总是装到一半就停止工作,但是AS2.1.2安装没问题,于是只能原创 2017-10-13 16:03:15 · 2555 阅读 · 2 评论 -
jni层调用java层方法遇到的bug
今天试了各种方法,想在jni c++的其他线程调用java层的代码,不管是java的静态方法还是实例的非静态方法都不行。只要app运行是一运行到调用的地方,就奔溃。就只能在native函数的当前线程调用java方法。然后用c代码却可以。这也太奇怪了。不过我项目用的是c++,就只能这样了,把我的c++项目编成动态库,jni层用c代码,然后在jni层将java回调传入c++库中,以实现c++调用jav原创 2017-10-26 21:16:18 · 613 阅读 · 0 评论 -
JNI编程——Java与c++代码互相调用及数据传递
Java层作为应用层,需要启动一个c++服务,同时需要互相调用及数据交互。Java调用c++,并传递int型参数JNIEXPORT void JNICALL Java_com_lp_lcmedia_LCInterface_initJni(JNIEnv *env, jobject instance, jint mode) {}c++调用Java的非static方法需要有Java层的实例才能调用。在上原创 2018-01-15 19:06:43 · 3215 阅读 · 0 评论 -
AAC / G711A / PCM 音频格式解析
Android利用AudioTrack录制和播放PCM格式音频:public class PCMTalk { private AudioRecord audioRecord; private int sampleRate; private int channel; private ByteBuffer recordBuf; private AudioTra...原创 2018-03-17 14:59:05 · 9238 阅读 · 2 评论