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 完成!

猜你喜欢

转载自blog.csdn.net/YJJYXM/article/details/103182151