网站首页 > 技术文章 正文
作者丨mark
整理丨阿星
如何编译原生程序
Application.mk(ARM硬件指令集/工程编译脚本/stl支持等)
Android.mk(编译选项/头文件/源文件及依赖库等)
local_path(call my-dir)
include $(clear_vars)
local_arm_mode:= arm指令模式
local_module:=模块名称
local_src_files:=源文件
build_executable(可执行文件)
build_shared_library(动态链接库)
build_static_library(静态链接库)
首先new一个安卓工程
打开mainactivity代码界面:
首先了解JNI
他的作用就是Java和c,c++之间的一个中介
整个过程都是通过反射来完成Java和c之间的互通
Jni的详解
然后在Java里面写一个特殊方法 被native修饰的
写好了代码,就生成头文件:
复制工程src的路径 cd过去:
然后输入命令:
Javah -jni加类名
回车后刷新工程目录 就多一个.h文件
新建一个文件夹 把刚刚的h文件重命名后移动过去
然后新建一个文件 命名为 .c 如上图
然后在h文件里面有个声明和方法名格式
直接复制到新建的c文件里面
记得复制的时候注意h文件的命名 和你的h文件名一样
复制过去后方法是 ; 结尾的 现在我们要写代码 所以改成 { }
既然声明了返回值类型为string 就要返回 但是不能直接返回字符串 先定义一个返回的方法然后直接返回这个方法名就行
具体定义的格式都有 :
这里是string类型的 有UTF的方法:
复制过去:
然后直接把两个.mk文件复制进去 记得模块名和原文件那里改成自己的文件
然后生成so库
Cd到jni的路径下面
生成的so在这个目录下面:
然后在mainactivity里面加载
OK 完成!
欢迎转载分享
猜你喜欢
- 2024-10-27 NDK开发——FFmpeg视频解码 ffmpeg ndk
- 2024-10-27 Camera基本代码架构 camera calibrator
- 2024-10-27 android 功耗分析方法和优化(1) 功耗app
- 2024-10-27 Cocos Creator v2.3.2 发布了!全新 Launcher 效率飞起!
- 2024-10-27 如何androd动态注册编写计算器 淘宝动态评分计算器在线
- 2024-10-27 高通平台OV8856 Camera的bring up总结
- 2024-10-27 高通平台移植GC2145 Camera驱动 高通驱动安装
- 2024-10-27 《坎公骑冠剑》光炮Android Mk.99技能与背景故事
- 2024-10-27 ubuntu移植libwebp到Android平台 ubuntu移植到arm
- 2024-10-27 步步为营,十分钟学会 Native JNI(附带彩蛋)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)