一、建立工程目录结构:
目录结构示意图:
第一层目录:NDK工程名根目录文件夹
第二层目录:jni <--android-ndk-r4b/ndk-build 规定的源码存放文件夹
NDK工程名根目录文件夹
 |---Application.mk
 |---jni
     |---Android.mk
     |---*.h
     |---*.c
注意:
1.Application.mk 可选在 jni 目录下;
2.jni           必须在工程根目录下;
3.Android.mk    必须在 jni 目录下;
4.以上的目录和文件的名字注意大小写;
5. C语言的源代码要放在 jni 目录下;

二、Application.mk文件内容:
APP_PROJECT_PATH :=$(call my-dir)/jni
APP_MODULES     := 可执行程序名
#注:只有APP_MODULES := 后面的可执行程序名需要根据实际情况而改变;
例子:
APP_PROJECT_PATH := $(call my-dir)/jni
APP_MODULES     := test

三、Android.mk文件内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=模块名
LOCAL_SRC_FILES :=模块.c
#编译动态库
#include $(BUILD_SHARED_LIBRARY)
#编译可执行程序
include $(BUILD_EXECUTABLE)
例子:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=test
LOCAL_SRC_FILES :=test.c
#编译动态库
#include $(BUILD_SHARED_LIBRARY)
#编译可执行程序
include $(BUILD_EXECUTABLE)

四、test.c文件内容:
int main(int   argc,  char** argv )
{
    return 0;
}

五、编译:
1)进入工程根目录下;
$ cd~/androidcode/test
2) 执行 $$NDK/ndk-build 命令;(参见我的另一篇 Ubuntu 下 Android NDK开发环境搭建)
编译成功会提示如下信息:
warning:incompatible implicit declaration of built-in function'printf'
Executable    : test
Install       : test =>/home/wzhnsc/androidcode/test/libs/armeabi

六、放入Android 模拟器执行程序看效果:
1) 执行~/android-sdk-linux_x86/tools 下的 android 脚本文件
$ cd~/android-sdk-linux_x86/tools
$./android
2)在弹出的“Android SDK and AVD Manager”对话框中 ->
点击左窗格中的“VirtualDevices” ->
点击右窗格中的[New...]按钮,创建一个名为"Android2.1"的新模拟器;
3)运行名为"Android2.1"的模拟器
$./emulator -avd Android2.1
4)进入 /home/wzhnsc/androidcode/test/libs/armeabi 目录下
$ cd/home/wzhnsc/androidcode/test/libs/armeabi
5) 在Android 模拟器中的 /dev 目录下新建一个 test 文件夹
$ adbshell mkdir /dev/test
6)将当前目录下的 test 可执行程序文件放入新建的 /dev/test 目录下
$ adbpush test /dev/test/test
7) 对/dev/test 目录下的 test 可执行程序文件进行可读可写可执行授权
$ adbshell chmod 0777 /dev/test/test
8) 进入Android 模拟器 shell 命令行下
$ adbshell
9) 在Android 模拟器 shell 命令行下执行 test 可执行程序
# cd/dev/test
#ls
test
#./test
helloandroid!
I'mwzhnsc!
Isupport android !!
#exit
注:android脚本文件、adb 和emulator 可执行程序均在 ~/android-sdk-linux_x86/tools 下;

补充:有时候即使修改了test的权限任然无法执行,提示:

/system/bin/sh: ./test: can't execute: Permission denied

则需要重新挂载sdcard mount -t yaffs2 -o remount,rw,noatime,nodiratime /dev/mtdblock0 /sdcard

更多相关文章

  1. mac 无法连接android手机进行调试 解决方案
  2. Android(安卓)抓包的一些命令 及 adb使用的一些注意事项
  3. android中跳转系统自带界面
  4. Android(安卓)build/envsetup.sh分析
  5. 最新基于adt-bundle-windows-x86的android开发环境搭建
  6. varnish 配置使用 Chrome,iphone,android 请求响应各自的页面
  7. android studio 官方用户指南翻译学习(四)创建 Android(安卓)libra
  8. Android(安卓)SD卡操作 (Environment 状态)
  9. ionic上拉翻页及下拉刷新

随机推荐

  1. Android(安卓)Looper
  2. 两个Android选择文件对话框
  3. Android(安卓)5.0 技术新趋势
  4. Android界面刷新的方法
  5. Android(安卓)Intent 对象详解
  6. 转:编写高效的Android代码
  7. 修正AppCompatSpinner弹出框位置问题
  8. Android(安卓)Permission
  9. Android内容提供者使用及创建
  10. 使用线程更新UI