android 中 c/cpp创建应用剖析(一)
2015-06-29 23:20
585 查看
我们一般都是用 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() 就结束了
下面写一个简单的示例:
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() 就结束了
相关文章推荐
- Android ListView 多种布局--初步
- Android开发中的多线程
- Android一些关键函数和类的分析-startActivity
- 解决首次安装android sdk platform-tools文件夹下adb命令无法运行
- Android联系人Contacts详解
- Android中JNI调用时出现accessed stale local reference的问题
- Android-Universal-Image-Loader优缺点
- Android数据存车和访问
- Android自启动注意事项
- 修改Android系统内/system目录权限使其可读写
- 一个Android进程到底有多少个context对象呢
- Android系统文件夹功能介绍
- Android图像处理之Bitmap类
- Android进程与生命周期介绍
- 创建Material Design风格的Android应用--应用主题
- Android设置Listview每个item的间距
- ECClient 红孩子android客户端listview图片加载(优化)核心代码分析
- Android 源代码编后的目录分析
- Android的Audio系统
- android开发利用tablelayout布局实现登录界面