最近由于项目需要,要用到NDK去编译实现一些功能。刚开始,尝试在windows7下进行NDK开发环境的开发,可是繁琐的不得了,每次编译还要配置参数,或修改mk文件,而且在64位的系统下还会有bug。实在是忍受不了,就有了在linux下进行编译的想法,因此做了这样一次记录:
在ubuntu下配置NDK非常简单:
从google上下载最新版的NDK包,http://developer.android.com/sdk/ndk/index.html,
我下的是android-ndk-r8.tar.bz2, 解压前,先把包从用户的Download/下移动到/home,以避免由于文件的访问权限问题导致配置出问题,linux的文件访问权限很有特色,这次我倒真的见识到了,下面会有讲到。
使用root权限解压后到当前位置,就可以进行配置了
假如正确显示你配置的ndk文件夹的根路径,就可以下一步,
进行编译测试
进入NDK 的例子目录samples/,然后挑一个有mk配置的项目,在该项目目录下执$NDK/ndk-build,假如编译成功,会在该目录下多生成2个子目录libs,obj目录,否则请看错误提示。
再一次编译就ok了。
到此,ndk的配置结束,是否简单?
可是ndk开发环境的配置工作还没结束,还有android开发依赖的Java环境了。
Java环境配置
这个在windows下只是安装exe的过程,在ubuntu下已不见得过于复杂,一般了解Java环境配置的,都理解下面的步骤意义:
1. 从oracle官网下载新版jdk的文件,将下载的文件放到/usr/lib/jvm/java中,并解压,ok,jdk已安装完毕!
2. 环境变量配置
在终端执行命令: sudo vi /etc/environment,红色部分为添加的信息:
JAVAHOME=/usr/lib/jvm/java/jdk1.7.0_04
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java/jdk1.7.0_04 /bin:/usr/lib/jvm/java/jdk1.7.0_04/jre/bin"
CLASSPATH=/usr/lib/jvm/java/jdk1.7.0_04 /lib:/usr/lib/jvm/java/jdk1.7.0_04/jre/lib
接着设置默认的jdk,因为系统默认可能存在别的jdk
在终端执行命令:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.7.0_04/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.7.0_04/bin/javac 300
选择系统默认的jdk,在终端执行命令: sudo update-alternatives --config java
如果只存在一个java环境则会出现提示系统只有一个jdk
最后执行命令: java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0-b04)
Java HotSpot(TM) Client VM (build 15.2-b04, mixed mode, sharing)
// 把tab.xml文件写到手机内存里面
FileOutputStream fos = ctx.openFileOutput("tab.xml",
Context.MODE_PRIVATE);
String tabstr = "";
byte[] bt = tabstr.getBytes();
fos.write(bt);
fos.flush();
fos.close();
// 从手机里面读取该文件
FileInputStream fis = ctx.openFileInput("tab.xml");
int len = fis.available();
byte convalue[] = new byte[len];
fis.read(convalue);
fis.close();
String tabValue = new String(convalue, "utf-8"); // tab.xml的值
APN(Access Point Name),即“接入点名称”,是您在通过手机上网时必须配置的一个参数,它决定了您的手机通过哪种接入方式来访问网络,用来标识GPRS的业务种类,目前分为两大类:CMWAP/UNIWAP/3GWAP(通过GPRS访问WAP业务)、CMNET/UNINET/3GNET(除了WAP以外的服务目前都用CMNET,比如连接因特网等)。
手机网络接入点cmnet和cmwap
CMNET、CMWAP都是手机上网使用的接入点的名称。
联通等运营商也有类似区别的服务。
这里以移动的CMNET和CMWAP为例,他们的区别是:
通过CMNET可以获得完全的Internet访问权,可以访问pop和imap等众多互联网服务;
通过CMWAP只能访问网页,无法访问pop和imap等众多互联网服务。
CMWAP和CMNET费用和设置:
CMWAP和CMNET是移动的两种接入点,分别包含在各种套餐中,CMWAP是比较便宜的,
CMNET较贵,但是因为是标准的互联网协议,他的特点是快。
所以在手机设置中要看好自己这种的接入点是什么,
如果你仅仅包了cmwap但是使用了cmnet,会产生额外并且巨大的费用。
如果你的套餐中不支持CMNET,请参考使用(CMWAP)设置。(根据手机品牌和机型的不同,设置方法会有出入,但以下资料是相同的)
主 页: http://wap.monternet.com
用户名密码:空
代理地址:10.0.0.172
代理端口:80或8080,或者9201,建议使用wap网关协议(9201)
传输方式: GPRS
GPRS接入点:选择CMWAP
鉴权类型:普通