本篇文章给大家谈谈安卓软件开发环境搭建,以及android软件开发环境对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何搭建android运行环境
- 2、怎么开发安卓APP,怎么搭建环境?
- 3、安卓开发教程
- 4、如何编写安卓软件
- 5、怎样从零开始学习安卓软件开发?
- 6、如何搭建 android 开发环境
如何搭建android运行环境
1.Android运行环境的搭建
进行安卓系统的软件设计,那么JDK的开发环境搭建必须是首要的。我们选择Windows10 64位操作系统。同时在JDK版本的选择中选用Windows x64版本的Java SE Development Kit 8u5,该版本稳定,应用广泛而且开源免费,获取方便。在安装的过程中要注意不要重复安装,应安装完毕后立即删除安装包,否则如果不小心再次点到安装包,该安装包会立刻删除所安装的程序并询问是否重新安装。在JDK的安装过程中,要注意开发工具,源代码,公共JRE三项都要选中,而且要安装到C盘默认目录下,同时将其附带的JRE同样安装到相同目录下,同时硬盘至少应该留有2G的空间。
选择好JDK的版本并进行安装后,我们的JAVA环境就安装好了,众所周知,安卓系统是由JAVA语言架构的,所以在搭建安卓运行环境之前必须要先安装JAVA环境。安装完JAVA环境之后,我们进行安卓开发环境的搭建。我们就要进行Android SDK版本的选择。我们这里选择android-sdk_r24.4.1-windows版本。这个版本是与安卓8.0同时发布的,同时它的发布时间也在我们的安卓测试机红米NOTE5A型号之后,可以完美兼容我们的安卓测试机所运行的安卓7.1.2版本。
图1 Android运行环境的搭建
Fig.1 Setup of the Android operating environment
2. Windows10系统环境变量的配置
环境变量是在操作系统中的一个对象,该对象具有特定的名字,用来指定操作系统在运行时的一些参数。在电脑属性的高级系统属性中进行环境变量的编辑。首先新增两个系统变量,变量名称分别为%JAVA_HOME%和%ANDROID_HOME%,变量值分别为各自安装目录。然后修改系统变量中的PATH变量,我们这里采用的是Windows10系统,修改PATH变量相对于Windows7来说更为方便快捷,在PATH环境变量中新建四条属性,如图2所示。
图2系统环境变量配置
Fig.2 System environment variable configuration
3. SDK的下载与安装
配置完系统的环境变量后进行SDK的下载与安装。上文提到了我们选择的版本为android-sdk_r24.4.1-windows版本,将其下载好的压缩包进行解压缩,然后打开Android SDK安装目录下的SDK MANAGER程序,在TOOLS目录下安装Android SDK Tools 24.4.1、Android SDK Platform-tools 27.0.1、Android SDK Build-tools 27.0.3,系统提示的版本是否升级我们选择否选项,因为该版本与我们相应的JDK8.0以及安卓测试机运行版本都能够相匹配,如果选择更新到最新版本可能会导致一系列因为兼容性或者不匹配性所导致的错误。
API方面选则从API15到API27,即Android4.0.1到Android 8.1.0,API(Application Programming Interface)是应用程序编程接口,其工作原理是是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。在Windows10运行环境下我们自然需要相应的API进行安卓软件的开发。在Extras目录下安装Google Play services和Google USB Driver,Google Play services和IOS系统下的GameCenter的作用是相同的。
当我们打开游戏软件应用时就会出现在主屏上。可以使用谷歌的账号登录,然后创建一个昵称,可以添加一个电子邮件地址,以便与好友联系。当用户登录一个已有的谷歌账号或者注册一个新账号时,载有服务条款的界面即会呈现给用户。此时使用者可新建一个独一无二的游戏账号,而昵称和其他一些信息则用于接收其他玩家向你发出的好友邀请,当然其他游戏玩家也可以通过电子邮件来查找你。除此之外,只需点击该服务中相应的链接即可下载游戏。我们可以使用它玩相应的类似《部落战争》的游戏。
至于Google USB Driver,则使我们的安卓系统开发具有利用USB接口传输数据的能力,可以让我们所开发的软件可以通过USB接口进行相应的输入和输出。USB即插即用、支持热插拔、传输速度快、可通过扩展连接多达127个 USB 设备,不用担心 USB 加密锁与打印机等外设的冲突,极大的提高的我们所开发软件的适应性与传播性。
在相应的Build tools,API,Extras服务都安装完毕后,我们的安卓SDK就可以正常运行了,不过在此之前需检查安装目录下的tools文件夹是否存在zipalign文件,如果不存在的话将会无法运行接下来的步骤。我们需要手动将安装目录下的build-tools文件夹中的相应版本的zipalign文件复制到tools对应文件夹下。从Android 1.6 SDK版本开始,SDK中就包含了一个用于优化APK的新工具zipalign。
它提高了优化后的Applications与Android系统的交互效率,从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使 用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。使用zipalign工具,会提升我们的APP性能,降低内存使用率,降低手机发热程度,这对于我们的由小米手机厂商开发的红米NOTE5A手机来说是“至关重要”的。使用cmd命令符进行zipalign优化如图3所示。
图3 zipalign优化
Fig.3 the optimization of zipalign
4. Android SDK接口的设置及APK的生成
手机屏幕尺寸在主视窗口Game模块下将Free Aspect修改为16:10 LandScape屏幕比例,以适应大部分安卓手机。
SDK与JDK的接口设置:在unity编译器中选择SDK,JDK安装目录进行环境配置,安卓API选择Android5.0版本,并更新项目名称,将SDK版本升级到Sdk18以上。在Build Setting中将设置修改为安卓5.0。
5. 总结
本次主要介绍了系统软件环境的搭建与生成,从Android运行环境的搭建,Windows系统环境变量设置,Android SDK的配置, SDK接口和APK生成几个方面分别介绍了具体步骤,让我们了解了本文安卓系统软件开发的环境配置。
以上就是安卓环境和下载和安装啦,按步骤来操作对小白来说也是相对简单的,只要注意一些文中说明的细节,现在就开始行动起来一起学unity吧。
怎么开发安卓APP,怎么搭建环境?
首先,先别用花生壳,我之前用过,会攻击电脑,ip被改的很奇怪。如果想让外网访问服务器的话,可以试试美步。
然后,服务器搭建服务器方法挺多的,我现在是用MyEclipse+sqlserver2008,服务器端写jdbc代码,生成json格式的数据,返回给客户端,客户端json解析得到数据显示在UI上。json格式说白了就是一组组的字符串。
关机问题:你的电脑如果搭建了服务器功能了,那你的那台电脑就已经是服务器了,服务器是一般是不会关机的,关机之后,客户端当然不能再访问服务器了。
安卓开发教程
1、安卓开发书籍:学习安卓,可以选择报培训班,也可以选择看视频,也可以去请求高手。但是如果手中拥有一本好的安卓开发书籍,往往可以起到事半功倍的作用。
2、安卓开发必知的一些开源库:现在,安卓开发已经逐渐成熟。在安卓开发过程中,选择开源库,需要根据APP。不过无论出现多少安卓开发工具,开源库的重要性都是不言而喻。为大家精选的安卓开发开源库,主要包括Volley、ActiveAndroid、ActiveAndroid–Android轻量级ORM框架等。
3、安卓兼容库:Android兼容库很多,主要包括ActionBarSherlock、ActionBarCompact、NineOldAndroids、AndroidSupportV4、NavigationDrawer等。
4、翻墙/教程:安卓开发需要的资源很多,为大家精选了基本教程,主要有教程GoogleAndroid官方教程、Android教程、Android视频学习推荐、解析Android架构设计原则等。
5、安卓基础:安卓基础知识,主要有Android四大基本组件介绍与生命周期、ListView的基本使用与优化、Android系统用于Activity的标准Intent、Android屏幕适配、Android中SQLite应用详解、AndroidFragment完全解析等。
6、开发环境:大家都知道,安卓开发之前,第一步就是搭建环境。开发环境所需要的资料、软件、教程。
7、安卓中级:上面的资源都熟悉之后,你将进入安卓开发中级阶段。安卓开发中级,需要了解的哟安卓应用程序的生命周期、安卓布局优化、androidservice完全解析等。
8、安卓设计/进阶/开源项目:为了开发者快速了解当前一些流行的Android开源库,精选了GitHub排名前100名的安卓项目、Android个性化控件(View)开源项目等。
如何编写安卓软件
问题一:如何用eclipse编写安卓程序 方法/步骤
1
1)首先,下载android SDK.介绍一种非常简单的方法,一并下载eclipse.在百度中输入android SDK,进入搜索界面。选中第一条。
2)如果你已经有eclipse,你可以直接在eclipse中进行android SDK插件的安装。方法就是点击上面菜单里的help,选择install new software进行添加SDK。具体方法见经验如何在eclipse中添加android SDk。
2
进入下载界面后,选择适合自己电脑的SDK进行下载。这里下载的是android开发工具,非常的简单实用,不需要我么重新下载eclipse,在这个下载包中会自带一个eclipse FOR android的develop工具,我们直接在里面就可以进行android的开发。
3
下载完成后解压,解压后我们进入文件名为eclipse的文件夹中。点击eclipse应用程序,运行。运行如图,和我们常用的eclipse是不一样的因为这个是android的开发工具,只适用于开发android。里面有好的插件已经提供给我们,不需要再进行安装。
4
进入eclipse界面后,开始新建android项目。输入新建项目名,如果没有特殊要求,点击next一直至最后完成。开始的配置只是一个大体的框架的构建,这些我们可以以后进行修改,最总要的还是代码的编写。
5
所有配置都完成后就可以开始进行android的开发了。如图:
进行android开发的时候建议不要用拖拽控件的方式,建议直接编写代码。
END
java环境变量配置
1
这里顺便介绍一下java环境变量的配置。
1)首先打开环境变量的界面,添加一个JAVA_HOME的值。右击计算机属性,在左侧有高级设置,进入后就会看见环境变量选项了。
2)在系统变量中建立java_home,将你的java SDK所在的路径放在里面。
2
建立classpath。同样在系统变量中新建一个classpath,在下面输入.;即可,不用输入其他的值。
3
运行cmd,测试。按win+R打开命令面板,输入cmd,进入后输入java -version然后回车,接着输入javac,回车,看结果是否与下图相同。
这里需要注意的是java -version的java后面是有空格的。
问题二:如何开发安卓第一个程序Hello World 1
打开eclipse集成sdk开发环境,点击菜单file――》new――》Android application新建安卓项目
2
输入工程名,项目名,还有包名,点击下一步。
3
信心勾选不要更改,点击下一步。
4
这个步骤是选择应用的启动图标,如果想改就改,不想改就点击下一步
5
选中blackActivity,点击下一步
6
输入activity的名称,main的名称,点击下一步。
7
项目创建好了,右键要启动的项目,run as 选中Android application启动项目
8
然后模拟器启动好之后,点击查看,helloworld就创建好了
问题三:如何自学 Android 编程 因为项目需要,8月中旬开始决定做安卓的程序,所以马上就开始学习安卓方面的开发知识,把最近的学习实践经历和大家分享分享。不要一开始就下载一大堆资料,视频,然后就不知道做什么了,要给自己定个目标,我要做什么?我怎么达到目标?
我不懂java,但是懂C#和C++,所以我没主张去单独学习java语言,如果你是个最最初的新手,没啥语言基础,那你必须先看看java语言,不要很详细看,因为学习Android中,你也是在学习java。
1. 明确目标
没有目标的学习,会感觉到后面没什么成果,在1年前,我也打算学习android开发的,但是目的就是学习,到网上去下载很多学习的视频,然后把开发环境搭建起来,能把Helloworld运行起来,能打些log,Activity之间也能互相切换了,但是后面也就不了了之了,因为不知道学了要干什么。依葫芦画瓢的做了几个例子,因为里面的问题都是已经解决的,所以也没能深入的系统学习。
这次因为产品的需要,要做Android版本,要做的东西一开始就已经设计好了,见摇摇2选1安卓版本,刚开始也不知道里面有些什么技术难度,但是要做的目标已经明确了,而且也没有现成的,碰到问题就查资料,慢慢地解决,这样有的放矢,学习的效果非常好。既有现成的技术可以使用,又有些技术,需要查比较多的资料,这样记忆就比较深刻,所掌握的知识也比较系统。
接下来的一系列文章,我会把在开发摇摇2选1中遇到的问题,给大家详细讲讲,程序虽然小,但是五脏俱全,做Demo和做产品的要求完全不是一个级别,如果Android大牛感觉知识讲的比较浅,那可以绕道,毕竟我是从一个完全的新手开始的。
2. 了解安卓开发中比较困难的地方
学习一个新平台,就要知道此平台开发要面临的困难有哪些,不要做到最后,这些问题没有考虑,那就比较糟糕了。在网上搜索了下,安卓开发困难总结如何:
1)安卓系统版本比较多,各版本之间的兼容性是个问题,此为系统碎片。
2)安卓设备千变万化,设备难以统一,每个产品都成为独立,分散的Android碎片。
3)分辨率五花八门。一个产品,可能需要多个界面排版,人工消耗比较大。
看到这张图,有没有头疼的感觉?
总结成一句话:Android的碎片化真是要来开发者的命。
3. 搭建开发环境
巧妇难为无米之炊,开发环境肯定是第一件要做的事情,这类的文章已经很多了,我也不多说了,多说也就比较无聊了。感谢吴秦,也是博客园里的一员,他写的很详细了,见这里。
4. 查看网友总结的一些经验。
不是什么都查看,开发中遇到什么问题,就去查看什么问题,这样你查到的知识,马上就能深入的实践,这样知识就巩固了。
1)首先当然要看Android的开发文档,里面其实大部分的知识都有了,还有就是SDK自带的Samples。
2)博客园里搜索“Android开发”,会出来一大把,很多网友都是很系统的讲解了。
3)eoe
android社区,里面有很多网友上传了现成的demo代码,里面很多都是模仿现在流行的产品的界面开发,很是不错。
5. 掌握调试方法
个人一直认为,调试技巧是开发中最重要的技能,如果调试技能比较差,不知道如何查找问题,那不会是个好的程序员,其技能也不会高到哪里去。
Android做下来,感觉调试这块做的很不错了,这要感谢Eclipse
IDE做的比较不错,但是Android的界面排版部分,真的不敢恭维,Eclips……
问题四:如何用c++写安卓手机软件? 这个你不容易,安卓是java写的,你学过C和C++想写安卓软件既需要学java语言,又需要学安卓手机的接口,相当于新学,不天天学两三年写不出什么东西的。建议写个win7能用的加壳程序,现在的壳基本上是以前系统上的,win7实用的不多。
问题五:怎样编写安卓手机程序???用什么软件编写 。 说具体点 。 楼主看一下这个教程,或许能帮到您。 pan.baidu/…703809
问题六:怎样将自己写的程序放到android手机里运行 你是用ECLIPSE开发的程序吧?
如果是的话可以先USB接上手机和电脑,手机打开调试模式然后直接在项目上右键 -伐 运行方式 — android application 可以直接运行
APK文件的话在项目的BIN目录下面
问题七:安卓软件怎么写 写安卓程序的话有好多平台,常用的就是eclipse和myeclipse,我场做安卓开发都是用这两个平台。安装起来也方便,当然,如果您的水平高的话可以直接记事本写代码再编译。。。
问题八:安卓开发软件欢迎界面怎么做 显示一个加载的界面,增加一个延时任务。比如用handler,几秒后再执行跳转到主界面。
问题九:如何学习安卓软件开发 200分 你把android sdk中的开发文档下载到本地,然后eclipse中就有javadoc显示了,你就能在代码里看到每个库函数的用法了。书的话我建议买 精通Android2 ,或者 Android2高级编程 这两本书,讲解的细致,但是一定要结合sdk来看。国内的不要买。。。。(切身体会,千万别买)看完之后就可以自己动手做做项目了。对于java基础,我现在的感觉是 如果要深入学习android平台,java基础一定要好(里边包括各种java类库的用法,本地代码jni什么的)。但如果平时随便做做应用的话,会面向对象编程就完全可以了。
怎样从零开始学习安卓软件开发?
1、Java se基础
1).Java基本数据类型与表达式,分支循环。
2).String和StringBuffer的使用、正则表达式。
3).面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收;构造函数、this关键字、方法和方法的参数传递过程、static关键字、内部类。
4).对象实例化过程、方法的覆盖、final关键字、抽象类、接口、继承的优点和缺点剖析;对象的多态性:子类和父类之间的转换、抽象类和接口在多态中的应用、多态带来的好处。
5).Java异常处理,异常的机制原理。
6).常用的设计模式:Singleton、Template、Strategy模式。
7).JavaAPI介绍:种基本数据类型包装类,System和Runtime类,Date和DateFomat类等。
8).Java集合介绍:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合类API。
9).JavaI/O输入输出流:File和FileRandomAccess类,字节流InputStream和OutputStream,字符流Reader和Writer,以及相应实现类,IO性能分析,字节和字符的转化流,包装流的概念,以及常用包装类,计算机编码。
10).Java高级特性:反射和泛型。
11).多线程原理:如何在程序中创建多线程(Thread、Runnable),线程安全问题,线程的同步,线程之间的通讯、死锁。
2、android UI编程
1)、Android开发环境搭建:Android介绍,Android开发环境搭建,第一个Android应用程序,Android应用程序目录结构。
2)、Android初级控件的使用:
TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)、Android高级控件的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、对话框与菜单的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定义Menu的实现方法
5.控件的布局方法:
线性布局的使用方法
相对布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent传递数据的方法
启动Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定义控件实现方法:
自定义ListView的实现方法
可折叠ListView的使用方法
自定义Adapter的实现方法
自定义View的实现方法
动态控件布局的上实现方法
上拉刷新下拉加载更多
3、android网络编程与数据存储
1).基于Android平台的HTTP通讯:
Http协议回顾
使用Get方法向服务器提交数据的方法
使用POST方法向服务器提交数据的实现方法
使用Http协议实现多线程下载
使用Http协议实现断点续传
2).Android数据存储技术:
SQLite3数据库简介
SQL语句回顾
SQLite3编程接口介绍
SQLite3事务管理
SQLite3游标使用方法
SQLite3性能分析
访问SDCard的方法
访问SharedPreferences的方法
初级工程师
技术要求:
基本知识点
比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术
书籍推荐
《第一行代码 Android》、《疯狂Android》
中级工程师
技术要求:
稍微深入的知识点
AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义View、消息队列等
书籍推荐
《Android开发艺术探索》、《Android群英传》
AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;
事件分发:弹性滑动、滑动冲突等;
玩转View:View的绘制原理、各种自定义View;
动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;
懂性能优化、熟悉mat等工具
懂点常见的设计模式
搞懂view的滑动原理
搞懂如何实现弹性滑动
搞懂view的滑动冲突
搞懂view的measure、layout和draw
然后再学习几个已有的自定义view的例子
最后就可以搞定自定义view了,所谓万变不离其宗
高级工程师
技术要求:
稍微深入的知识点
系统核心机制
基本知识点的细节
设计模式和架构
书籍推荐
《Android开发艺术探索》、《Android 源码设计模式解析与实战》、《Android内核剖析》
继续加深理解”稍微深入的知识点“中所定义的内容
了解系统核心机制:
了解SystemServer的启动过程
了解主线程的消息循环模型
了解AMS和PMS的工作原理
能够回答问题”一个应用存在多少个Window?“
了解四大组件的大概工作流程
…
基本知识点的细节
Activity的启动模式以及异常情况下不同Activity的表现
Service的onBind和onReBind的关联
onServiceDisconnected(ComponentName className)和binderDied()的区别
AsyncTask在不同版本上的表现细节
线程池的细节和参数配置
…
熟悉设计模式,有架构意识学习方法
—————————————————————–
作者:小码同学
链接:
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如何搭建 android 开发环境
一.认识android的架构
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了, 国内开发者访问(androiddevtools) 上面已经有了所有你要的资源,同时可以下载到我们的主角framework
但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。
搭建源码编译环境
三.开始主题
在一开始写c程序的时候都有一个运行的入口,比如
#include iostream
#include cmath
#include algorithm
using namespace std;
//这里的main就是应用的入口
int main(int argc, const char * argv[]){
return 0;
}
在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:
#include winsock2.h
#pragma comment(lib, “WS2_32.lib”)
#include stdio.h
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);//2.2版本的套接字
//加载套接字库,如果失败返回
err = WSAStartup(wVersionRequested, wsaData);
if (err != 0)
{
return;
}
//判断高低字节是不是2,如果不是2.2的版本则退出
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2)
{
return;
}
//创建流式套接字,基于TCP(SOCK_STREAM)
SOCKET socSrv = socket(AF_INET, SOCK_STREAM, 0);
//Socket地址结构体的创建
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
addrSrv.sin_family = AF_INET;//指定地址簇
addrSrv.sin_port = htons(6000);
//指定端口号,除sin_family参数外,其它参数都是网络字节序,因此需要转换
//将套接字绑定到一个端口号和本地地址上
bind(socSrv, (SOCKADDR*)addrSrv, sizeof(SOCKADDR));//必须用sizeof,strlen不行
listen(socSrv, 5);
SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体
int len = sizeof(SOCKADDR);//初始化参数,这个参数必须进行初始化,sizeof
//循环等待接受客户端发送请求
while (1)
{
//等待客户请求到来;当请求到来后,接受连接请求,
//返回一个新的对应于此次连接的套接字(accept)。
//此时程序在此发生阻塞
SOCKET sockConn = accept(socSrv, (SOCKADDR*)addrClient, len);
char sendBuf[100];
sprintf(sendBuf, “Welcome %s to JoyChou”,
inet_ntoa(addrClient.sin_addr));//格式化输出
//用返回的套接字和客户端进行通信
send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节
//接收数据
char recvBuf[100];
recv(sockConn, recvBuf, 100, 0);
printf(“%s\n”, recvBuf);
closesocket(sockConn);
}
}
他采用了一个while死循环去监听客户端的请求。
先上源代码
public final class ActivityThread {
public static void main(String[] args) {
SamplingProfilerIntegration.start();
CloseGuard.setEnabled(false);
Environment.initForCurrentUser();
EventLogger.setReporter(new EventLoggingReporter());
Security.addProvider(new AndroidKeyStoreProvider());
final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);
Process.setArgV0(“pre-initialized”);
Looper.prepareMainLooper();
//从中可以看到为app开辟了一个线程进入了looper之中
ActivityThread thread = new ActivityThread();
thread.attach(false);
if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}
AsyncTask.init();
if (false) {
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, “ActivityThread”));
}
Looper.loop();
throw new RuntimeException(“Main thread loop unexpectedly exited”);
}
}
看到源码失望了,没有一个while循环啊,其实用了他方法实现
//用一个looper的机制循环监听响应
Looper.prepareMainLooper();
Looper.loop();
进一步深入代码
public static void loop() {
final Looper me = myLooper();
if (me == null) {
throw new RuntimeException(“No Looper; Looper.prepare() wasn’t called on this thread.”);
}
final MessageQueue queue = me.mQueue;
Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();
// 在这里看到了一个循环监听消息
for () {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}
Printer logging = me.mLogging;
if (logging != null) {
logging.println(” Dispatching to ” + msg.target + ” ” +
msg.callback + “: ” + msg.what);
}
msg.target.dispatchMessage(msg);
if (logging != null) {
logging.println(” Finished to ” + msg.target + ” ” + msg.callback);
}
// Make sure that during the course of dispatching the
// identity of the thread wasn’t corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent) {
Log.wtf(TAG, “Thread identity changed from 0x”
+ Long.toHexString(ident) + ” to 0x”
+ Long.toHexString(newIdent) + ” while dispatching to “
+ msg.target.getClass().getName() + ” “
+ msg.callback + ” what=” + msg.what);
}
msg.recycleUnchecked();
}
}
安卓软件开发环境搭建的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android软件开发环境、安卓软件开发环境搭建的信息别忘了在本站进行查找喔。