title: 使用ndk创建Android系统内的可执行程序
date: 2020-02-29 21:08:20
tags:
- android
- linux可执行文件
- arm
- C语言
使用ndk创建Android系统内的可执行程序
我们在用ndk的时候大多数是创建的so文件,然后在java层调用.但是今天我们要编写的是直接可以在Android系统上面执行的文件,也就是arm版本的elf文件
首先新建一个目录
我们就简单的写一个demo,目录的名字我就叫Calc,因为我们要用c写一个简单的计算器程序.
然后我们在Calc目录下面在建立一个jni目录
新建一个文件,Android.mk文件,内容如下
LOCAL_PATH := $(call my-dir)
include $(CALEAR_VARS)
LOCAL_ARM_MODULE := arm
LOCAL_MODULE :=calc
LOCAL_MODULE_FILENAME := calc
LOCAL_SRC_FILES := main.c
include $(BUILD_EXECUTABLE)
新建Application.mk文件,内容如下
APP_PLATFORM := android-16
APP_ALLOW_MISSING_DEPS=true
因为上面的内容都是mk文件的基本设置,这里没什么好说的.
然后建立我们的main.c文件,内容如下
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int sub(int x, int y) {
return x - y;
}
int mul(int x, int y) {
return x * y;
}
int div(int x, int y) {
return x / y;
}
int main() {
int x, y;
int num;
int rel = 0;
int result = 0;
do {
printf("请输入第一个操作数: ");
scanf("%d", &x);
printf("请选择[ 1.+ 2.- 3.* 4./] :");
scanf("%d", &num);
printf("请输入第二个操作数: ");
scanf("%d", &y);
switch (num) {
case 1: {
rel = add(x,y);
}
break;
case 2:{
rel = sub(x,y);
}
break;
case 3:{
rel = mul(x,y);
}
break;
case 4:{
rel = div(x,y);
}
break;
default:{
printf("错误的操作");
}
}
printf("结果:%d \n",rel);
printf("是否继续: [0.退出 1.继续]");
scanf("%d",&result);
} while (result);
return 0;
}
建立好以后,我们退回到Calc目录下面,执行ndk-build,这样就可以构建出我们想要的执行文件,对应的文件会在各个平台对应的文件夹内生成