参考:
https://blog.csdn.net/superfang119/article/details/8524132
https://blog.csdn.net/gaojinshan/article/details/9498375
1、首先新建一个工程(其实就是建一个文件夹),叫hello_exe
使用指令:
mkdir hello_exe
2、在工程目录下再创建一个jni目录
(这里说明一下,我一开没建工程文件所以图片里面的地址是有误的)
使用指令:
mkdir jni
之后发现建错了,用mv指令移动到工程目录下
3、在jni目录中新建一个hello_exe.c的文件。在hello_exe.c中填入如下内容:
使用指令创建
touch hello_exe.c
使用指令编辑
vim hello_exe.c
添加内容如下:
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
4、在jni目录中新建一个Android.mk文件,内容如下:
使用指令创建
touch Android.mk
使用指令编辑
vim Android.mk
添加内容如下:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=helloexe
LOCAL_SRC_FILES:=hello-exe.c
LOCAL_CFLAGS += -pie -fPIE #PIE这个安全机制报错解决,安卓4.1之后要加
LOCAL_LDFLAGS += -pie -fPIE #PIE这个安全机制报错解决,安卓4.1之后要加
include $(BUILD_EXECUTABLE) #关键的最后一句,编译成可执行文件就靠它了。
5、在hello_exe目录下,执行ndk-build。运行如下:
目录下会多出 libs和obj目录
6、找到生成的可执行文件
M9能用的在armeabi-v7a目录下的helloexe编译通过了
7、将armeabi-v7a目录下的helloexe放到一下目录下:
ptboce\device\qcom\M9PLUS_10\qcom_bin\system\bin
之后编译安卓源码就会自动打包到烧录文件内
PS:这里讲的是编译源码的方式将可执行文件放到安卓源码里面一起编写生产,如果不想这样毕竟调试的每次编译烧源码还是比较烦的,所以也可直接将可执行文件导入到设备里面,请看我的下一篇文章记录六
8、安卓源码编译成功好
可以在以下两个文件夹内找到
ptboce/out/target/product/M9PLUS_10/system/bin/helloexe
ptboce/out/target/product/M9PLUS_10/obj/PACKAGING/target_files_intermediates/M9PLUS_10-target_files-L1193.6.01.01/SYSTEM/bin/helloexe
9、之后使用adb和fastboot烧录镜像到M9上
我这里烧录和之后的操作都是在WIN10上进行的,不是在ubuntu上了
如何使用安装adb和fastboot请,参考记录一
10、烧录完成后使用电脑adb连接安卓设备,执行adb shell
11、连接后找到helloexe所在的位置
cd system/bin
12、最后运行可执行文件
./helloexe
运行结果如下图,会打印出hello world