在ubuntu电脑上使用C语言编写Android应用程序
2016-12-02 20:15
369 查看
第一步,编写安卓应用程序并编译生成bin格式的可执行文件
1.编写代码
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/external //进入external路径
#mkdir hello //创建hello文件夹
#gedit hello.c //创建hello.c文件
#gedit Android.mk //创建Android.mk文件
2.编译生成
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2 //进入安卓源码跟目录
#source build/envsetup.sh //环境设置
#lunch //选择开发平台
#16 //选择 marsboard 开发平台
#mmm /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/external/hello //编译安卓程序
在如下目录下会生成hello的可执行文件 /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/out/target/product/wing-marsboard/system/bin
第二步,将执行文件导入开发板平台
#adb devices //查看ubuntu上挂载的安卓设备 开发板的设备号为20080411
#adb root
#adb remount //remount权限,否则无法导入到开发板的system/bin路径下
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/out/target/product/wing-marsboard/system/bin
# adb -s 20080411 push hello /system/bin //将可执行文件导入到安卓开发板的相应路径下
上面的的一步也可以通过编译生成刷机包Img格式的文件使用phoenixsuite工具对开发板进行刷机,也会在上面的路径下找到hello的可执行文件
#adb shell
#cd /system/bin
第三步执行程序并验证
#./hello
得到的输出结果如下(注意在上一个分享中已经执行的helloword.ko的驱动模块会在/dev目录下生成名为myfirstdrive的文件,并已经在文件中输入了信息,如果没有创建myfirstdrive文件,则会打印出“Failed to open device dddddddd 。。。。”)
至此实现了在ubuntu系统下使用C语言编写的安卓应用程序。
该应用程序直接穿越了普通安卓开发的JNI、Framework、APP等层级,对提高应用程序的运行效率意义重大
1.编写代码
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/external //进入external路径
#mkdir hello //创建hello文件夹
#gedit hello.c //创建hello.c文件
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #define DEVICE_NAME "/dev/myfirstdriver" int main(int argc, char** argv) { int fd = -1; int val = 0; fd = open(DEVICE_NAME, O_RDWR); if(fd == -1) { printf("Failed to open device dddddddd %s.\n", DEVICE_NAME); return -1; } printf("Read origindfasdfaal value:\n"); read(fd, &val, sizeof(val)); printf("%d.\n\n", val); val = 5; printf("Write value %d to %s.\n\n", val, DEVICE_NAME); write(fd, &val, sizeof(val)); printf("Read the value again:\n"); read(fd, &val, sizeof(val)); printf("%d.\n\n", val); close(fd); return 0; }
#gedit Android.mk //创建Android.mk文件
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE := hello LOCAL_SRC_FILES := $(call all-subdir-c-files) include $(BUILD_EXECUTABLE)
2.编译生成
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2 //进入安卓源码跟目录
#source build/envsetup.sh //环境设置
#lunch //选择开发平台
#16 //选择 marsboard 开发平台
#mmm /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/external/hello //编译安卓程序
在如下目录下会生成hello的可执行文件 /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/out/target/product/wing-marsboard/system/bin
第二步,将执行文件导入开发板平台
#adb devices //查看ubuntu上挂载的安卓设备 开发板的设备号为20080411
#adb root
#adb remount //remount权限,否则无法导入到开发板的system/bin路径下
#cd /usr/MarsBoard-A20-android-4.2.2-SDK-V2.0/android4.2/out/target/product/wing-marsboard/system/bin
# adb -s 20080411 push hello /system/bin //将可执行文件导入到安卓开发板的相应路径下
上面的的一步也可以通过编译生成刷机包Img格式的文件使用phoenixsuite工具对开发板进行刷机,也会在上面的路径下找到hello的可执行文件
#adb shell
#cd /system/bin
第三步执行程序并验证
#./hello
得到的输出结果如下(注意在上一个分享中已经执行的helloword.ko的驱动模块会在/dev目录下生成名为myfirstdrive的文件,并已经在文件中输入了信息,如果没有创建myfirstdrive文件,则会打印出“Failed to open device dddddddd 。。。。”)
至此实现了在ubuntu系统下使用C语言编写的安卓应用程序。
该应用程序直接穿越了普通安卓开发的JNI、Framework、APP等层级,对提高应用程序的运行效率意义重大
相关文章推荐
- C++之vector的使用
- AES加密
- 【C/C++】报错问题积累
- C++(6):stringstream
- HDU 1008
- 3 C++ Boost 字符,文本
- STL容器知识总结
- 郝斌的C语言基础 115 合理设计函数
- 混合编译:c++文件调用c文件变量和函数、c文件调用c++文件变量和函数
- C++笔记 strcat_s和strcat的区别
- 关于make提示must be enabled with the -std=c++11 or -std=gnu++11 compiler options
- 如何设计一个更好的C++ ORM
- 探索c++的机制
- 【Codeforces 734 C Anton and Making Potions 】+ 思维
- 一些题目
- 从面试开始_C++常见面试题
- 深度探索c++对象模型之template的具现行为
- 解说:C++难在了哪里?
- 条款2:最好使用C++转型操作符
- C++资源文件初使用[C++菜鸟]