android 中 c/cpp创建应用剖析(一)

我们一般都是用 JAVA 编写标准 APK,要知道在 android 系统中也是允许通过 CPP/C 来写应用的。那么如何实现呢?

下面写一个简单的示例:

test.c

#include <stdlib.h>
#include <stdio.h>
#include <utils/Log.h>
#define LOG_TAG "TEST" 
#define ALOGE printf

void d(){
char *p = NULL;
ALOGE("test func d\n");
*p = 0x323;//make app crash
}

void c() {
int var4 = 6;
ALOGE("test func c\n");
}

void b() {
int var3 = 3;
ALOGE("test func b\n");
c();
d();
}

void a() {
int var1, var2;
ALOGE("test func a\n");
var1 = 1;
}

int main(int argc, char *argv[]){
int var0 = 4;
ALOGE("test func main\n");
a();
b();
return 0;
}

对应的 Android.mk 文件为:

LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=test.c
LOCAL_MODULE:=test
include $(BUILD_EXECUTABLE)

将这两个文件放在 ../system/test 目录下(test为手动创建)编译:

mmm -B system/test

得到编译结果:

Install: out/target/product/bbk6735_65c_l/system/bin/test


将这个结果push 到手机 system/bin 目录

$ adb push y:/project_code_mtk/MT6735_20150511/out/target/product/bbk6735_65c_l/system/bin/test system/bin
149 KB/s (5680 bytes in 0.037s)

成功后,添加可执行权限:

adb shell chmod 777 system/bin/test


然后就可以在命令行环境下执行该应用了:

adb shell system/bin/test

输出:

test func main
test func a
test func b
test func c
test func d


因为在函数d() 中人为设置了一个错让程序crash,所以运行到 d() 就结束了


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值