NDK开发

需要学习逆向可以联系QQ1847076032
QQ群602903341

  1. 如何编译原生程序
    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之间的互通
在这里插入图片描述
Jinni的详解
在这里插入图片描述
然后在Java里面写一个特殊方法 被native修饰的
在这里插入图片描述
写好了代码,就生成头文件:
复制工程src的路径 cd过去:
在这里插入图片描述
然后输入命令:
Javah -jni加类名
在这里插入图片描述
回车后刷新工程目录 就多一个.h文件
新建一个文件夹 把刚刚的h文件重命名后移动过去
在这里插入图片描述
然后新建一个文件 命名为 .c 如上图
然后在h文件里面有个声明和方法名格式
在这里插入图片描述
直接复制到新建的c文件里面
记得复制的时候注意h文件的命名 和你的h文件名一样
复制过去后方法是 ; 结尾的 现在我们要写代码 所以改成 { }
在这里插入图片描述
既然声明了返回值类型为string 就要返回 但是不能直接返回字符串 先定义一个返回的方法然后直接返回这个方法名就行
具体定义的格式都有 :
这里是string类型的 有UTF的方法:
复制过去:
在这里插入图片描述
然后直接把两个.mk文件复制进去 记得模块名和原文件那里改成自己的文件
在这里插入图片描述
然后生成so库
Cd到jni的路径下面
在这里插入图片描述
生成的so在这个目录下面:
在这里插入图片描述
然后在mainactivity里面加载
在这里插入图片描述
在这里插入图片描述
OK 完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值