![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android JNI
JimmyHoo0000
There is no royal road to learning.
展开
-
Android Studio开发之ndk报错--error: no template named ‘pair‘
错误详情:这个错误是在JNI层开发的时候,使用了string类型数据。举例如下:#include <string>using namespace std;#include <jni.h>extern "C"JNIEXPORT jstring JNICALLJava_com_example_demo001_Java_1Interface_GetHell(JNIEnv *env, jobject thiz) { // TODO: implement Get原创 2020-07-20 16:09:46 · 1476 阅读 · 0 评论 -
Android Studio开发之JNI开发之 SPI开发报错
报错信息:Error:(42, 21) error: unexpected type name '__u8': expected expression备注:我使用ndk-r16b版本进行编译相关的SPI代码。主要是下面这句代码出错:ioctl(fd, SPI_IOC_WR_MODE, &mode)截图://解决方式:更换ndk版本,使用ndk-r20.重新...原创 2019-12-12 12:19:46 · 872 阅读 · 2 评论 -
Android Studio开发之JNI开发 ---- 使用cmake方式来完成之前的Android.mk和Application.mk的功能,方式3(最终版)
序言基础版:https://blog.csdn.net/qq_41811438/article/details/103323128升级版:https://blog.csdn.net/qq_41811438/article/details/103323497这篇文章主要是在升级版的基础上,进行完善。目前我觉得这样的配置已经够用了。以此作为最终版,以备忘。正文1、CMakeLis...原创 2019-11-30 14:08:05 · 313 阅读 · 0 评论 -
Android Studio开发之JNI开发 ---- 使用cmake方式来完成之前的Android.mk和Application.mk的功能,方式2(升级版)
基础版:https://blog.csdn.net/qq_41811438/article/details/103323128这里主要是在基础版的基础上,添加了指定so库生成位置,以及生成某种特定cpu架构的so库。1、CMakeLists.txt源码:cmake_minimum_required(VERSION 3.4.1)set(LOCAL_MODULE DemoTes...原创 2019-11-30 13:17:59 · 204 阅读 · 0 评论 -
Android Studio开发之JNI开发 ---- 使用cmake方式来完成之前的Android.mk和Application.mk的功能,方式1(基础版)
如题,现在就是要使用比较流行的cmake方式来完成so库开发,之前使用的是Andorid.mk和Application.mk的方式来生成so库的。方式比较老套,之前使用Andorid.mk和Application.mk的方式习惯了,现在将cmake的方式进行了部分修正,方便习惯自己的老思路。1、在app/src/main/目录下,新建一个jni文件夹。里面存放一个JNI.cpp和一个CMake...原创 2019-11-30 12:37:09 · 522 阅读 · 0 评论 -
Android Studio开发之JNI层开发 --- jni层返回二维数组对象
说明:本博客记录一下,jni层返回二维PointF对象数组。1、Java层接口定义:public native PointF[][] GetMultiArrayPf();2、JNI层实现:extern "C"JNIEXPORT jobjectArray JNICALLJava_com_terawins_www_demo007_Java_1Interface_GetMulti...原创 2019-11-29 12:48:45 · 941 阅读 · 0 评论 -
Android Studio 开发之JNI开发 -- jni层返回一维对象数组
说明:本博客记录一下,如何将JNI层的PointF类对象数组返回给Java层,是一维数组的。1、Java层接口定义:public native PointF[] GetArrayPf();2、JNI层实现:extern "C"JNIEXPORT jobjectArray JNICALLJava_com_terawins_www_demo007_Java_1Interface...原创 2019-11-29 12:31:14 · 762 阅读 · 0 评论 -
Android Studio开发之JNI开发 ---- string类方法使用
功能:已知一个文件的绝对路径,在这个目录下新建一个和原来文件名称相关的固定格式的新文件。举例:在/sdcard/00Demo/这个目录下有一个JimmyTest.txt, 我现在要在/sdcard/00Demo/这个目录下新建一个JimmyTest_byte_4200_test.iml2文件。该博客就是帮助你由/sdcard/00Demo/JimmyTest.txt 得到/sdcard/00...原创 2019-11-22 18:45:11 · 624 阅读 · 0 评论 -
Android Studio开发之JNI层操作Bitmap图像
备忘Linux下对Bitmap文件简单操作!Bitmap头文件://// Created by Administrator on 2019/11/20.//#ifndef LIGHTNINGWARPTOOL_JIMMY_BITMAP_H#define LIGHTNINGWARPTOOL_JIMMY_BITMAP_H#include <stdio.h>type...原创 2019-11-20 22:47:06 · 478 阅读 · 0 评论 -
Android Studio开发之JNI层操作文件(华硕开发板Android7.1.2系统上测试)
对/storage目录下文件进行操作。备注:1、 PC端可以通过adb push将文件弄到这个目录下。指令如下:adb push “绝对路径+文件名称” /storage其他路径像/mnt/sdcard , /storage/self/ 都是不能正常操作的,因为权限不够!!!2、操作的文件必须是存在的,不然fopen就是会失败(原因不祥,不知道是不是华硕开发板android系统版本...原创 2019-11-20 22:20:37 · 232 阅读 · 0 评论 -
Android Studio开发之JNI开发 ---- 使用new 和delete来完成任务注意事项
有两种情形1、单个对象:先new,然后delete。示例如下:int *pData = NULL;pData = new int;........delete pData;pData = NULL;2、多个对象(数组):先new,然后delete[]。示例如下:byte *pszData = NULL;int nLen = 38;pszData = new byte...原创 2019-11-20 14:55:07 · 413 阅读 · 0 评论 -
Android Studio开发之JNI操作 ---- 将一个int型数据转成指定位数的二进制字符串
目前我知道有两种方式。第一种:使用STL中的bitset类来完成。1、因为是在Android的JNI层实现,所以需要在Application.mk里面配置STL库的加载。Application.mk里面添加配置如下:APP_STL := c++_static2、在JNI层的操作.cpp文件中这样操作:#include <bitset>#include &...原创 2019-11-18 20:26:04 · 430 阅读 · 2 评论 -
Android Studio开发之Android.mk文件升级写法备忘
1、在Android.mk文件中可以打印一些信息,非常便于理解。有三种方式:$(info "HelloWorld") #打印信息 $(warning "HelloWorld") #打印信息 $(error "HelloWorld") #打印信息 2、下面给出我的Android.mk文件源码示例:LOCAL_PATH := $(call my-dir)include $...原创 2019-11-18 10:39:45 · 270 阅读 · 0 评论 -
Android Studio开发之使用STL这个C++常用的东东
1、在jni目录下,添加Application.mk文件,直接附上源码:# APP_ABI := armeabi-v7a 这里设置是无效的,必须在app目录下的build.gradle设定 ndk{}# APP_STL := stlport_staticAPP_STL := c++_static #推荐使用,功能更强大!!!备注:其中APP_STL := c++_static 就...原创 2019-11-17 18:25:07 · 1324 阅读 · 0 评论 -
Android Studio开发之 从Java层传参数到JNI层
如题:1、新建一个Java层的class来做测试 传递对象,将一个int类型数据和一个byte数组数据传到JNI去玩耍!package com.example.android_params;public class Jimmy_Params { int nID; byte []szSrc;}2、JNI接口类:package com.example.and...原创 2019-11-11 19:14:53 · 428 阅读 · 0 评论 -
Android Studio开发之 调试JNI源代码
1、Run --> Edit Configuratons...2-3、如截图所示:、4、配置如下所示:5、设置好断点,按键Shift + F9,进行调试咯。。备注:---- The End....原创 2019-11-11 18:40:14 · 384 阅读 · 0 评论 -
Android Studio开发之Android.mk写法新大陆 ---- 使用wildcard来获取JNI所需的.c和.cpp文件
不废话了,直接给出Android.mk文件的源代码:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_C_INCLUDES += $(LOCAL_PATH)/MathDemoJimmy_src_files := $(wildcard $(LOCAL_PATH)/*.cpp)Jimmy_src_files += $(wild...原创 2019-11-11 11:15:22 · 874 阅读 · 0 评论 -
Android Studio配置External Tools,添加JNI相关的javah和ndk-build指令
为了方便在Android Studio中使用JNI,我们可以把javah和ndk-build指令添加到External Tools中去。有两种方式来定位到External Tools添加指令的地方。第一种:在Android Studio首页,未打开任何项目时候,如下图所示:通过Configure --> Setting --> Tools -->Externa...原创 2019-07-28 17:50:21 · 1260 阅读 · 0 评论 -
Android Studio 使用ndk-build 出现错误提示“*** multiple target patterns. Stop.”
解决之道:竟然是linux系统下目录分割符是‘/’,不是windows下的分割符'\'原来出错的Android.mk源码如下:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := JimmyTestLOCAL_SRC_FILES := E\:\\AndroidProjects\\UVCCamera\\ji...原创 2019-08-11 19:51:06 · 2257 阅读 · 0 评论 -
Android Studio 新建一个简单的Jni-demo,实现了so库的生成与调用(使用 javah 和 ndk-build指令方式来生成so库)。
三步走第一步:创建一个Jni-demo项目。以图形方式一步步指引(just for 新手):等待gradle build的完成,第一步就此结束。备注:如果有的朋友遇到gradle太慢的情况,可以参考我的这篇博文,希望可以解决你的问题。https://blog.csdn.net/qq_41811438/article/details/97616483第二步:生成s...原创 2019-08-05 21:24:21 · 436 阅读 · 0 评论 -
AndroidStudio使用javah和ndk-build指令生成so库并调用,注意事项
这种方式生成so库,并调用so库中的接口,需要注意配置一下app目录下的build.gradle文件。目前我知道有两种方式,如下第一种:externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } }截图如下备注:该方式下jni目录下的Ap...原创 2019-10-12 17:24:06 · 546 阅读 · 0 评论 -
Android Studio 开发之ndk-build报错 ---- Error:(81) Android NDK: Application targets deprecated ABI(s)
报错具体信息如下:Error:(81) Android NDK: Application targets deprecated ABI(s): armeabiError:(82) Android NDK: Support for these ABIs will be removed in a future NDK release. Error:(81) Android NDK:...原创 2019-10-28 20:09:37 · 612 阅读 · 0 评论 -
Android Studio开发之JNI ---- 加载调用第三方so库
第一步:在src/main/ 目录下新建一个jni文件夹:如此操作后,就有了src/main/jni这个目录了。第二步:在jni文件里面添加一个Android.mk文件以及第三方so库及其头文件:第三步:编写Android.mk,源码如下:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE ...原创 2019-11-03 11:37:59 · 1535 阅读 · 0 评论