-
高焕堂的《应用框架原理与程序设计》配套源代码(基于Eclipse)
资源介绍
高焕堂<应用框架原理与程序设计>源代码(Eclipse)
36计本人全部测试通过。比较难的地方而书中没有相关解释的有加注释。
关于第36计windows下编译.so文件:
写C组件注意事项:将NativeHalfAdder抽出只有类定义和函数定义部分,用javac NativeHalfAdder.java,
然后将编译出的.class文件放于test\cn\目录下
用javah test.cn.NativeHalfAdder产生.h头文件。
写完各个C文件和H文件后(关于这些文件书中有源码)。开始编译.so文件
Windows下编译.so文件步骤(这里我使用NDK(android-ndk-1.6_r1)加Cygwin 在windows下编译,如果没有请安装,
注:android-ndk-1.6_r1只支持android 1.6或更早版本,所以这里必须将你的android工程的Target设为1.6):
关于安装Cygwin,到http://www.cygwin.cn/site/install/ 上下载setup.exe 进入后选择install from internet
然后根据说明下一步,到Select Packages页面时,在All @ Default 选项上单击Default,使其状态变为All @ Install,为防止麻烦我选择全部安装,
按提示安装完(下载的时候有点慢,耐心等待,1.5G左右)。
关于NDK的安装,http://android.group.javaeye.com/group/blog/494016 上下载android-ndk-1.6_r1.rar 注意是windows版本的。
解压该文件,打开Cygwin进入其目录(Cygwin指令:cd D:/android-ndk-1.6_r1)下运行Cygwin指令 build/host-setup.sh 提示安装成功。
在Ex36CModel目录下创建Application.mk文件,并创建jni目录,该目录下包含Android.mk,HalfAdder.c等文件,目录结构如下
(关于MK文件的语法请看NDK安装目录docs下的ANDROID-MK.TXT,或者网上查找相关资料)
Ex36CModel
├ Application.mk
├ jni
├ Android.mk
├ HalfAdder.c
├ HalfAdder.h
├ lw_oopc.h
├ test_cn_NativeHalfAdder.c
├ test_cn_NativeHalfAdder.h
Application.mk内容:
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := NativeHalfAdder
Android.mk内容:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NativeHalfAdder
LOCAL_SRC_FILES := HalfAdder.c test_cn_NativeHalfAdder.c
include $(BUILD_SHARED_LIBRARY)
由于ndk规定Application.mk必须放在 /apps/project_name,我们在下创建一个符号连接:
Cygwin指令:ln -s <工程目录> /apps/jnitest
如:Cygwin指令:ln -s D:/wu/android/Ex36CModel D:/android-ndk-1.6_r1/apps/Ex36CModel
这样,我们就可以开始编译共享库了:
在下运行:
Cygwin指令:make APP=NativeHalfAdder
可以看到编译成功,并在<工程目录>/libs/armeabi/下生成了libNativeHalfAdder.so。
将so文件拷贝到AVD的/system/lib目录下(这里需要AVD的root权限,但是adb shell 就是root权限,所以用adb 指令来拷贝):
用cmd窗口 启动AVD(必须的,否则会有out of memory错误),输入:CMD指令: emulator -avd m9 -partition-size 512
运行,运行成功后,另开一个cmd输入 : CMD指令: adb remount 运行,
该指令更改系统文件属性使可读写 (必须的,否则会有file read-only错误),
然后在该cmd运行指令: adb push D:/wu/android/Ex36CModel/libs/armeabi/libNativeHalfAdder.so /system/lib
将指定文件拷到AVD相应目录下,
工程中记得加入NativeHalfAdder.java 文件,该文件加载了库文件并声明外部方法
运行本程序
大功告成