使用ndk创建Android系统内的可执行程序


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,这样就可以构建出我们想要的执行文件,对应的文件会在各个平台对应的文件夹内生成


文章作者: 孙老师
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 孙老师 !
 上一篇
在Ubuntu下面解压缩分卷的Android系统源代码 在Ubuntu下面解压缩分卷的Android系统源代码
title: 在Ubuntu下面解压缩分卷的Android系统源代码并编译date: 2020-02-29 21:10:11tags: android zip压缩分卷 系统源代码 在Ubuntu下面解压缩分卷的Android系统源
2020-02-29 孙老师
下一篇 
ARM汇编学习(一) ARM汇编学习(一)
title: ARM汇编学习(一)date: 2020-03-01 17:22:07tags: ARM汇编 寄存器 指令 ARM汇编学习(一)ARM处理器基础之寻址方式1.寄存器寻址寄存器寻址,简单来说就是把ARM寄存器内的值直接赋给
2020-02-28 孙老师
  目录