【网学网提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学会员整理了android 开发资料收集的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
上周五;我在论坛说要在周末给刚学的朋友讲讲嵌入式;我就android的环境搭建步骤说下;希望对大家有帮助;0;android是什么我就不介绍了;大家可以去google下;我下面写的都来自网络知识;我通过自己的测试很研究总结了下;当然不可能没有错误;就像我在网络上看得的文章也不是都是正确的;我尽量说说出现错误的原因;1;首先要给大家一个概念;就是交叉编译;这个在嵌入式开发是很重要的概念;我们平时写的代码通过编译;然后就在编译的机器上运行;所以我们没有交叉编译这样的概念;我们编译代码的环境叫编译环境;而运行代码的环境叫运行环境;有的时候;这个2个环境是不一致的;比如说我们手机上要运行一个程序;我们无法把源代码放到手机上去编译;所以我们必须在PC上编译;这个时候我们用到的编译器不再是我们PC上的了;这个编译器就叫做交叉编译器;后面我们可以看得交叉编译器的设置;2;我所用的环境是ubuntu9.04;window上也能够搭建的;不过我的理解所应用程序层面的;大家可以去测试下;1)我们SUN的JDK6.0;大家可以通过新立得软件包安装;2)我们安装eclipse3.4;因为android开发需要3.3以上版本;eclipse-SDK-3.4.1-linux-gtk.tar.gz我是用这个的;由于这个2天我建立环境花了很多时间和精力;所以很多步骤记得不是太清楚了;我解压到/home/ibm/work/下面其中ibm所我的用户名;读者可能叫其他名字;解压之后的文件夹叫eclipse;3)我们安装android的SDK;对这个东西我没有作深入的研究;大概就所为了eclipse开发提供虚拟的手机环境;我用的是android-sdk_r04-linux_86.tgz这个解压缩到刚才的工作目录/home/ibm/work/;文件夹叫android-ndk-1.6_r1;4)我们安装android为eclipse作的插件;eclipse中help->softwareupdate->availablesoftware->addset;填入https://dl-ssl.google/android/eclipse/;然后更新安装;我所跑出去吃饭的;所以不知道用多少时间;5)设置androidSDK;由于4我们更新了插件;所以这个时候我们在window->preference;下面就看得android了;这个时候我们把SDKlocation地方填写我们androidsdk的路径/home/ibm/work/android-sdk-linux_86;这个时候我们完成了设在;6)我们虚拟一个手机;或者说android运行平台;window->androidsdk我们new一个平台;我选择的是1.5版本的;其他的各位可以自己去尝试;7)至此;我们完全可以用JAVA开发android的应用
程序了;一般的网络上都只说到这里;我们来建立一个工程;file->newproject选择android工程即可;这里我就不赘述了;=========================3;这个时候大家一定觉得我还没有讲到交叉编译;因为刚才所JAVA开发;下面我们来讲C/C++开发;JAVA是通过JNI来调用C/C
++的动态库的;1)我们来看看手机里面的文件系统;我们进入到androidSDK的tool目录下;我的路径是/home/ibm/work/android-sdk-linux_86/tools;我们通过命令./adbshell就进入了android的linux下面;2)好了;我们来写C代码;我写了一个helloworld;我必须通过交叉编译工具编译;下面我们来安装交叉编译工具;我用的是arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2;解压到我的工作目录;arm-2008q3这个所解压之后的文件名字;这个时候我们要设置环境变量;修改gedit~/.bashrc在文件最后添加exportPATH=$PWD:$PATH
修改gedit~/.profile在文件最后添加if[-d"$HOME/bin"];thenPATH="$HOME/bin:$PATH"fi这个时候,我们就可以通过交叉编译工具来编译android上的C代码了;我们在helloworld的我文件夹下arm-none-linux-gnueabi-gcc-ohellomain.c-static;我们必须加入-static参数;把库函数编译到hello中;因为android系统里面没有这些库函数;否则无法运行;3)我们用./adbpush/home/ibm/work/test/hello/data这个时候我们的代码就到了android系统的/data下面;用./adbshell进入到android进入/data文件夹;我们修改权限chmod777./hello;运行;./hello;我们就看到我们熟悉的helloworld了;这里说明一点;这个2天我干了很多事情;所以很多步骤未必记得很清楚;如果有问题可以给我留言;我会尽量解答;这样我们就能够在android下面运行C代码了;======================我们来通过JNI调用动态库;首先;我还没有彻底解决这些
问题;我写下来和大家一起探讨;1)我们在eclipse的android工程中加入JNI函数声明;static{System.loadLibrary("myJNICall");}staticnativevoidgetJNICallName();我们知道用static修饰的类中的语言是会被执行的;System.loadLibrary("myJNICall");这个就会在类被使用时候;调我的libmyJNICall.so;这个动态库里面有一个函数getJNICallName();我们编译生成了class文件;2)我们到这个android工程下;/home/ibm/workspace/android/src;下面用javah-jnicom.hello.classname;就能够得到一个com_hello_JNICall.h的头文件;我们再实现这个头文件中的JNIEXPORTvoidJNICALLJava_com_hello_JNICall_getJNICallName(JNIEnv*env,jclassobj){printf("helloandroidthisisadynlibcall!\n");return;};我们再用交叉编译工具arm-none-linux-gnueabi-gcc-shared-olibmyJNICall.socom_hello_JNICall.c;我们就生成了动态库;3)我们通过./adbremount;./adbpush动态库/system/lib中;我们就能够在android的/system/lib看到我们的动态库;这里我研究了半天;没有解决;首先我能够看到这个库;但是运行时候出错;每次重新运行android虚拟机就会丢失;我怀疑;1没有起作用;2因为android没有C库;所以调用失败;今天晚上我继续研
究;到现在为止;我把大体的东西就说了;要是谁不太明白可以Q我;326238989;这些不过所我这个一周研究的结果;还有很多东西需要作;希望能和大家一起进步;也给有意愿作嵌入式开发的朋友抛砖引玉把;