文档库 最新最全的文档下载
当前位置:文档库 › android开发资料System Server 分析

android开发资料System Server 分析

android开发资料System Server 分析
android开发资料System Server 分析

android开发资料System Server 分析

SystemServer是Android Java层的系统服务模块,这个模块主要功能就是管理供Android应用开发的system service.

1.SystemServer 类是如何启动的

让我们从Android的启动过程看起,查看init.rc文件,就会发现下面这一行service zygote /system/bin/app_process -Xzygote /system/bin --zygote –start-system-server

我们知道zygote进程是整个Android的孵化器进程,所有的Activity进程均是通过它来生成的。我们发现在zygote进程启动过程中指定了这么一个参数“–start-system-server”,这个参数就是在zygote进程启动的同时启动SystemServer。

那么SystemServer是以什么样的形式启动的呢?是单独的一个进程还是线程,分析一下zygote进程的启动过程就明白了。在Android中zygote进程启动其实就是启动/system/bin/app_process这个进程,这个进程的源代码在frameworks/base/cmds/app_process/app_main.cpp中。

view plaincopy to clipboardprint?

1if(0==strcmp("--zygote",arg)){

2bool startSystemServer=(i

3strcmp(argv[i],"--start-system-server")==0:false;

4setArgv0(argv0,"zygote");

5set_process_name("zygote");

6runtime.start("com.android.internal.os.ZygoteInit",

7startSystemServer);

8}else{

9set_process_name(argv0);

10runtime.mClassName=arg;

11//Remainderofargsgetpassedtostartupclassmain()

12runtime.mArgC=argc-i;

13runtime.mArgV=argv+i;

14LOGV("Appprocessisstartingwithpid=%d,class=%s.\n",

15getpid(),runtime.getClassName());

16runtime.start();

17}

由于zygote进程启动过程有“--zygote”这个参数,所以走的是下面这步runtime.start("com.android.internal.os.ZygoteInit",startSystemServ er);

查看对象runtime的类型的定义,

class AppRuntime : public AndroidRuntime

因此查看AndroidRuntime的start方法中的一段代码(frameworks/base/core/jni/AndroidRuntime.cpp)

18viewplaincopyto

clipboardprint?startClass=env->FindClass(slashClassName);

19if(startClass==NULL){

20LOGE("JavaVMunabletolocateclass'%s'\n",slashClassName);

21/*keepgoing*/

22}else{

23startMeth=env->GetStaticMethodID(startClass,"main",

24"([Ljava/lang/String;)V");

25if(startMeth==NULL){

26LOGE("JavaVMunabletofindmain()in'%s'\n",className);

27/*keepgoing*/

28}else{

29env->CallStaticVoidMethod(startClass,startMeth,strArray) ;

30#if0

31if(env->ExceptionCheck())

32threadExitUncaughtException(env);

33#endif

34}

35}

其中startClass即为"com.android.internal.os.ZygoteInit",这段代码调用了com.android.internal.os.ZygoteInit的main函数。

那么再往下看ZygoteInit类的main函数,其中的一段MethodAndArgsCaller 代码为

36viewplaincopyto

clipboardprint?if(argv[1].equals("true")){

37startSystemServer();

38}elseif(!argv[1].equals("false")){

39thrownew RuntimeException(argv[0]+USAGE_STRING);

40}

调用了startSystemServer(),这个函数启动了一个子进程来作为SystemServer的载体,

1.它首先指定SystemServer进程的参数;

2.根据指定的参数来创建SystemServer进程;

3.调用handleSystemServerProcess启动第一步指定进程参数过程中指定的类,此时为“com.android.server.SystemServer”,启动的这个进程在ps查看后显示为”system_server”。

41Java代码viewplaincopytoclipboardprint?

42privatestaticbooleanstartSystemServer()

43throwsMethodAndArgsCaller,RuntimeException{

44/*Hardcodedcommandlinetostartthesystemserver*/

45Stringargs[];

46Stringashmem_size=System.getProperty("gralloc.ashmem_siz

e");

47if((null!=ashmem_size)&&(0!=ashmem_size.length())){

48args=newString[]{

49"--setuid=1000",

50"--setgid=1000",

51"--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,100 9,1010,3001,3002,3003",

52"--capabilities=130104352,130104352",

53"--rlimit=8,",

54"--runtime-init",

55"--nice-name=system_server",

56"com.android.server.SystemServer",

57};

58args[4]=args[4].concat(ashmem_size);

59args[4]=args[4].concat(",");

60args[4]=args[4].concat(ashmem_size);

61}else{

62args=newString[]{

63"--setuid=1000",

64"--setgid=1000",

65"--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,100 9,1010,3001,3002,3003",

66"--capabilities=130104352,130104352",

67"--runtime-init",

68"--nice-name=system_server",

69"com.android.server.SystemServer",

70};

71}

72ZygoteConnection.ArgumentsparsedArgs=null;

73intpid;

74try{

75parsedArgs=newZygoteConnection.Arguments(args);

76/*

77*Enabledebuggingofthesystemprocessif*either*thecommandli neflags

78*indicateitshouldbedebuggableorthero.debuggablesystempro perty

79*issetto"1"

80*/

81intdebugFlags=parsedArgs.debugFlags;

82if("1".equals(SystemProperties.get("ro.debuggable"))) 83debugFlags|=Zygote.DEBUG_ENABLE_DEBUGGER;

84int[][]rlimits=newint[0][0];

85if(parsedArgs.rlimits!=null){

86rlimits=parsedArgs.rlimits.toArray(rlimits); 87}

88/*Requesttoforkthesystemserverprocess*/

89pid=Zygote.forkSystemServer(

90parsedArgs.uid,parsedArgs.gid,

91parsedArgs.gids,debugFlags,rlimits,

92parsedArgs.permittedCapabilities,

93parsedArgs.effectiveCapabilities);

94}catch(IllegalArgumentExceptionex){

95thrownewRuntimeException(ex);

96}

97/*Forchildprocess*/

98if(pid==0){

99handleSystemServerProcess(parsedArgs); 100}

101returntrue;

102}

通过以上过程就会调用到SystemServer 类,且是运行在一个名为“ system_server” 的进程中,这个进程为 zygote 的子进程。

虽然 SystemServer 类是运行在 system_server 中的,但是它并不运行在system_server 的主线程中。

上代码

103Java代码

104viewplaincopytoclipboardprint?

105privatestaticvoidhandleSystemServerProcess(

106ZygoteConnection.ArgumentsparsedArgs)

107throwsZygoteInit.MethodAndArgsCaller{

108closeServerSocket();

109/*

110*PasstheremainingargumentstoSystemServer.

111*"--nice-name=system_servercom.android.server.SystemSer ver"

112*/

113RuntimeInit.zygoteInit(parsedArgs.remainingArgs);Zygote

Init

114/*shouldneverreachhere*/

115}

116publicstaticfinalvoidzygo用teInit(String[]argv)

117throwsZygoteInit.MethodAndArgsCaller{

118//TODO:Doingthishereworks,butitseemskindofarbitrary.Fin d

119//abetterplace.Thegoalistosetitupforapplications,butnot 120//toolslikeam.

121System.setOut(newAndroidPrintStream(https://www.wendangku.net/doc/c73602774.html,,"System.ou t"));

122System.setErr(newAndroidPrintStream(Log.WARN,"System.er r"));

123commonInit();

124zygoteInitNative();

125intcurArg=0;

126for(/*curArg*/;curArg

127Stringarg=argv[curArg];

128if(arg.equals("--")){

129curArg++;

130break;

131}elseif(!arg.startsWith("--")){

132break;

133}elseif(arg.startsWith("--nice-name=")){

134StringniceName=arg.substring(arg.indexOf('=')+1);

135Process.setArgV0(niceName);

136}

137}

138if(curArg==argv.length){

139Slog.e(TAG,"MissingclassnameargumenttoRuntimeInit!"); 140//lettheprocessexit

141return;

142}

143//Remainingargumentsarepassedtothestartclass'sstaticmai n

144StringstartClass=argv[curArg++];

145String[]startArgs=newString[argv.length-curArg];

146System.arraycopy(argv,curArg,startArgs,0,startArgs.leng th);

147invokeStaticMain(startClass,startArgs);

148}

149privatestaticvoidinvokeStaticMain(StringclassName,Strin g[]argv)

150throwsZygoteInit.MethodAndArgsCaller{

152//Wewanttobefairlyaggressiveaboutheaputilization,toavoi d

153//holdingontoalotofmemorythatisn'tneeded.

154VMRuntime.getRuntime().setTargetHeapUtilization(0.75f); 155Classcl;

156try{

157cl=Class.forName(className);

158}catch(ClassNotFoundExceptionex){

159thrownewRuntimeException( 160"Missingclasswheninvokingstaticmain"+className,

161ex);

162}

163Methodm;

164try{

165m=cl.getMethod("main",newClass[]{String[].class}); 166}catch(NoSuchMethodExceptionex){

167thrownewRuntimeException( 168"Missingstaticmainon"+className,ex);

169}catch(SecurityExceptionex){

170thrownewRuntimeException( 171"Problemgettingstaticmainon"+className,ex);

173intmodifiers=m.getModifiers();用

174if(!(Modifier.isStatic(modif用iers)&&Modifier.isPublic(modifiers))){

175thrownewRuntimeException(

176"Mainmethodisnot用publicandstaticon"+className);

177}

178/*

179*ThisthrowgetscaughtinZygoteInit.main(),whichresponds 180*byinvokingtheexception'srun()method.Thisarrangement 181*clearsupallthestackframesthatwererequiredinsetting 182*uptheprocess.

183*/

184thrownewZygoteInit.MethodAndArgsCaller(m,argv);

185}

由代码可以看出,在调用函数invokeStaticMain 的最后会抛出一个异常。Java代码

186viewplaincopytoclipboardprint?

187publicstaticclassMethodAndArgsCallerextendsExceptionimplementsRunnable

回过头再看一下 ZygoteInit 类的 main 函数中的一段代码

188Java代码

189viewplaincopytoclipboardprint?

190}catch(MethodAndArgsCallercaller){

191

192caller.run();

193

194}

其实就是在这个抛出的异常中启动了 SystemServer 类,且这个异常为一个Runnable 类型,因此 SystemServer 类就运行在 system_server 进程中的一个新的线程里。

2.SystemServer 执行内容

1. 执行 frameworks/base/cmds/system_server/library/system_init.cpp 中的 system_init 函数,启动当前进程,也就是进程 system_server 的pool thread ,以便执行 Binder IPC 操作。

2. 向 SM(Service Manager) 添加系统服务。

学习android的心得体会

学习android的心得体会 【篇一:android实训心得体会】 项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发!

培训机构企业java安卓考试面试

中软国际Android班第一阶段考试 姓名____ __ __ 班级____________ 注意事项:笔试时间90分钟,满分100分. 请使用钢笔或者圆珠笔填写试题答案. 请在规定处填写您得答案,选择题在试卷前部答题卡中填写答案,程序题答案请写在答题纸上. 请不要在试卷上涂写与试题无关得得标记。 (一)单项选择题(每题2分,共30分) 1)对以下两个代码片段说法正确得就是? 代码片段1: int a =3; int b=0; int c = a /b; 代码片段2: float a = 3、0f; float b= 0、0f; float c =a / b; A、执行两段代码都会抛出异常??B、执行两段代码都无异常抛出 C、执行两段代码,只有代码片段1抛出异常??D、执行两段代码,只有代码片段2抛出异常 2)以下说法错误得就是? A、Java中接口不能被private或Protected修饰符修饰? B、Java中一个类可以实现多个接口,但就是只能继承一个父类 C、接口中定义得成员变量,即使不说明,默认均就是public\static\final得 D、final关键字可以修饰接口 3)以下哪种数据类型不就是引用数据类型? A.String?B、int[]C、Double?D、float 4)给出以下代码,假设arr数组中只包含正整数值,请问下列代码段实现了什么功能? public int guessWhat(int arr[]) {//{1,5,2,3} int x=0; for(int i = 0;i 〈arr、length; i++){ x = x <arr[i]? arr[i]: x; } return x; } A获取数组得最大索引值??B判断数组中就是否存在重复元素 C获取数组中元素个数??D获取数组中得最大元素 5)如何明确释放掉一个对象占据得内存空间? A调用free()方法???B调用System、gc()方法 C赋值给该对象得引用为null??D程序员无法明确强制垃圾回收器运行 6)以下关于集合与数组得观点中,正确得就是() A可以通过int[4]a=new int[];声明一个长度为4得数组 B 数组只能存放基本数据类型 C 集合得长度就是固定得 D List与Map都可以用迭代方式进行遍历 7)以下哪个方法不就是Android生命周期得方法B A onstart(); B onServer();

Android平台开发最佳实践与案例培训

Android平台开发最佳实践与案例培训 在多年的Android(6款硬件产品和超过20款应用软件)及HTML5系列技术的实战背景下制定本课程,课程全程以过去工作的案例为核心,掌握本课程后至少能够轻松编写完成诸如UC迅雷、优酷和KU6等的Android视频客户端、赶集网的移动客户端等并对HTML5有本质性的认识,最后以ActivityManagerService的源码剖析为核心,彻底剖析Android程序运行背后的机制,深刻体悟Android框架的设计哲学和实现机制,旨在帮助贵公司完成任意负责程度的Android程序开发并从务实实战的角度帮助Android工程师升级到Android架构师。 课程目标: 1,通晓Android的架构哲学和力量来源以及实现技术; 2,能够开发出任意类型、任意复杂程度的应用程序; 3,能够使用NDK技术编程; 4,实战Android测试技术; 5,对HTML5有根本性的理解 6,以ActivityManagerService的源码剖析为核心,彻底剖析Android程序运行背后的机制,深刻体悟Android框架的设计哲学和实现机制 【主办单位】中国电子标准协会 【协办单位】XX市威硕企业管理咨询XX 课程要点: 1,揭秘Android; 2,精通四大组件; 3,精通Android高级界面编程; 4,精通Android网络编程; 5,熟练NDK编程; 6,实战Android测试技术; 7,洞悉HTML5; 8,以ActivityManagerService的源码剖析为核心,彻底剖析Android程序运行背后的机制,深刻体悟Android框架的设计哲学和实现机制 课程要求: 具备一定的Java基础

android培训学习心得体会

android培训学习心得体会 android培训学习心得体会感受 在学习中成长,在成长中实践。人生中就是这样,每一次的学习就是一次实践的机会。每一次的实践就是一次挑战,我们能害怕吗?答案是肯定的:不能!不管是在什么情况下,都是不能,不会,也不可以害怕挑战。我们之所以培训,目的就是增强我们挑战的信心。我不知道别人通过培训学到了多少,感受到了多少,了解到了多少。只知道通过培训自己感悟颇深。 首先要说明的一点就是通过这次培训我学到了很多,见过的听过的,没见过的没听过的统统包含在内。 宋老师讲的创新与实践虽说我不知道内容是什么,不过通过各位干部的发言,我知道那是对我们以后产生影响的一次培训。总结会上各位干部积极发言,这说明什么?说明这一次培训是成功的。还有一点是我们需要这样的机会,这样一个提高自己,完善自己,充实自己的机会。 回想起这段时间的培训,相信大家都学到了很多,可我有一种新的感觉:学到的越多,不知道的就越多。为什么这样说呢?在以前的学习中自己并没有注重某一方面的学习,只是知道老师教什么,自己就学什么,从来不管对与错,也从来不管为什么,只是盲目的走路,学习。上大学以后感觉就变了很多,原因很简单:这里的学习不再是片面的,是一种以具体事情具体分析的方

式进行的。只从这一点上说,这就要比以前的学习系统化,毕竟涉及到专业知识。在这里学习越多,感觉以前了解的东西越少,然后就会努力的或者是刻意的去找这方面的书籍,学习这方面的知识。可是越学,感觉自己知道的越少,这是为什么呢?因为我们有一颗想充实自己的心,有一颗想要学习的心,同时也有一颗向前的心。这就不得不要求我们自己要在工作中学习,在学习中工作,把所学的用到工作中。 其次在我们的电教理论培训中,于丹教授讲的一段话让我受益良多:盘古在天地之间“一日九变”,像一个新生的婴儿,每天都在微妙地变化着。这种变化最终达到了一个境界,叫做神于天,圣于地。这六个字其实是中国人的人格理想:既有一片理想主义的天空,可以自由翱翔,而不妥协于现实世界上很多的规则与障碍;又有脚踏实地的能力,能够在这个大地上去进行他行为的拓展。只有理想而没有土地的人,是梦想主义者不是理想主义者;只有土地而没有天空的人,是务实主义者不是现实主义者。这句话虽然不能说完全体会但至少也回味很多次。他要求我们要干什么?脚踏实地!不管从哪一方面说,我们都要脚踏实地。只有这样,我们才能在工作中,学习中积极的表现自己。也是有这样,我们才能清楚的了解到自己的不足,从而积极的改正。 百善孝为先这是我在于丹教授讲座中记得最清楚的一句话。它不单单注重那个孝字,同样也注重那个先字。孝字讲的是孝敬长辈,提倡我们中华民族的传统美德,可先字,确是讲的第一,

Android开发工程师培训课程大纲

Android开发工程师培训 课程大纲 结合前沿技术发展和企业用人需求,最新研发课程体系真正教你做企业 争抢的核心技术人才 Java SE基础?语法基础 JAVA开发入门、安装和配置开发环境、开发工具的使用、Java基本程序结构;变量与数据类型、运算符与表达式、条件结构:简单if结构、switch结构;循环结构while、do...while、for循环、嵌套for循环、流程控制语句(break、continue)等 ?面向对象 数组、类和对象;基于数组的排序和查找算法(冒泡排序、选择排序、快速排序、二分查找);面向对象三大特征之封装、继承;面向对象三大特征之多态、final、static关键字用法等 ?Java常用类 常用类(Math、String、StringBuffer、StringBuilder、Random、NumberFormat、Date、Calendar、SimpleDateFormat等) ?异常处理 异常处理(try..catch、throws、throw处理异常、自定义异常类) ?集合框架

集合类分层模型、List、Set接口的实现类ArrayList、Vector、HashSet、TreeSet 类用法;集合类应用练习:使用ArrayList集合完成宠物商店设计、HashMap 与Hashtable类的使用 ?IO流 IO流简介、字节流和字符流的类继承体系、File类的使用、FileInputStream/FileOutputStream类用法、转换流InputStreamReader用法等 ?多线程开发 多线程详解线程与进程、实现多线程的方式、线程休眠、优先级、线程同步、线程生命周期、生产者和消费者 ?网络通信和XML 网络编程基于Tcp/Ip的网络通讯、基于UDP的网络通信;XML文件读写使用dom4j读写xml文件、使用SAX解析xml数据 ?MySQL MySQL概述、数据类型、数据库、表的创建、数据的添加、修改、删除、简单查询、排序;聚合函数、多表联合查询、分组查询、分页查询、模糊查询、子查询、内联接查询、外联接查询、索引、视图、事务控制和实战案例分析等?JDBC Connection/Statement/ResultSet三大接口功能详解、DBUtils类、DAO层编写;PrepareStatement接口用法、Java访问Mysql乱码处理、IO流+JDBC 综合(利用属性文件db.properties来配置数据库连接信息) Android基础

最新android培训心得体会

android培训心得体会 Android是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google和开放手持设备联盟开发与领导。下面是带来的android培训的心得体会,仅供参考。 android培训心得体会一: 现在对于Android的学习已有斗个学期了,但它对我来说其实还是一个大大的谜,还有待我去对它一一揭晓。 在还没有学习Android这门课之前,当听到别人谈到它时,知道它离我们很近,但是它给我的感觉却是那么的神奇,一直就是在听说着关于Android系统怎么怎么的新闻,知道它就在我的生活中,离我很近,我也在用它,但还是总有一种很遥不可及的感觉,觉得它不在我的思想里,所以呢,对于这门课《Android系统开发与实践》的学习很是期待的。 在上一个学期快要结束的时候,就听到老师说了一下,说下一个学期我们可能会学习Android系统的开发,他还说这个Android 系统的开发很值得学习,很值得我们去探索,说这个Android还一直在开发中,是一项很好玩的系统,当时就很是兴奋了,总是会在想Android系统到底是怎样的,它是如何的深入我们的生活,又是如何的到我们所用的这些设备当中的,这一切都让我感到很好奇。就这样带着一系列的问题走进了这个学期,终于就要与它见面了,这门课也就在这样的背景下,这样的一种环境下走进了我的课堂,它给了我一种兴奋感,对于它的出现,我很是期待的,一开始老师就给我们讲解了一些关于Android的知识,也给我们展示了Android系统开发的平台,真的给了我一种奇妙的感觉,它不仅有编译,它还有一个模

拟器,就和我们用的手机一模一样,上面也有简单的几个图标:电话、短信等等,真的感觉到了不可思议,感觉到一种神秘,Android系统的开发就是在这样的一个平台上完成的,你可以对它进行你想要的修改,只要是你想到的,你都可以支尽情的尝试,这让人兴奋。这门课的学习从这里就这样开始了,《Android系统开发与实践》这本课本它是以讨论Android系统平台为基础,并结合实例讲解教程和实践指导类教材。本书中全方位的讲解了Google开放移动应用平台Android的各种特性,深入探讨了应用程序的基本组件、界面布局的基础,结合Internet实现通讯录的设计和发送短信实例详细介绍了Android系统平台开发的步骤和方法,从而实现对Android系统的平台开发的深入了解。 android 基于嵌入式技术的Android是目前增长速度最快的智能3G 手机操作系统,其底层系统是以Linux内核为基础,用C语言开发;中间层包括函数库library和虚拟机Dalvik,用C++语言开发;上层应用软件,包括通话程序,短信程序等,用Java语言开发。所以,要想好好的学习Android系统的开发,那就必须掌握C++和Java 语言,它们都是基础。 Android学习并不是那么的容易,你得很努力很认真的去学习,但如果只是浅浅的了解,那就简单得多,但并不是这样的,你得更加深入的去学习,你才算是懂一点。 Linux是Android开发的基础,Linux是一套免费使用和自由传授的类UNIX操作系统,它速度快,运行稳定,对硬件的配置要求低,兼具了其他系统的优点,最关键是可以免费使用,所以Linux得

Android底层系统开发培训

Android底层系统开发培训 课程大纲及进度安排 附:Android底层系统开发培训 1、Andriod 开发环境搭建 1.1 andriod sdk介绍 1.2 eclipse中装载Android插件 1.3 编写、调试、运行Hello, Android!程序 1.4 git和repo使用方法 1.5 Android的源代码结构与编译方法 2、Android平台移植 2.1 Andorid移植的主要步骤与方法 2.2 配置linux内核支持Android 2.3 linux内核中添加Android 触摸屏驱动 2.4 linux内核中添加Android 键盘驱动 2.5 Android多点触摸的介绍 2.6 制作yaffs2、jffs2格式的Android文件系统 实验 1、下载linux内核、Android源码,编译、移植到目标平台。 2、编写一个简单的应用程序运行在目标平台 3、Android底层开发基础 3.1 Android启动流程与相关服务解析 3.2 Android 编译框架与Makefile介绍 3.3 在Android中添加自己的平台 3.4 在Android中添加本地库的方法 3.5 Android Dalvik虚拟机工作原理介绍 3.6 Jni开发方法 3.7 HAL开发方法 3.8 SystemServer、ServiceManager介绍 3.9 Android Binder工作原理 4、Android调试方法 4.1 Android 日志系统介绍 4.2 logcat使用介绍 4.3 ADB使用方法 4.4 DDMS使用介绍 实验 1、在Android平台上通过编写应用程序、Framework、jni、HAL实现LED控制。 5、Android Sensor 开发 5.1 Android 常见传感器与应用 5.2 Android Sensor开发框架 6、Andorid Camera 开发

Android实习报告

武汉工程大学 计算机科学与工程学院 专业实习报告 专业计算机科学与技术 班级2012信息技术02 学号1205110207 学生姓名方成钢 指导教师邬少飞(副教授)陈艳(讲师) 刘军(副教授) 2015~2016学年第1学期 实习时间 2015.7.13至2015.7.31 实习成绩 武汉工程大学计算机科学与工程学院制

说明: 1、实习指导教师由学院校内教师担任,负责组织实习、学生管理、参加实 习答辩、实习成绩评定、给出实习评语等工作。 2、实习报告由武汉工程大学计算机科学与工程学院提供基本格式(适用于 学院各专业),各教研室和指导教师可根据本专业特点及实习内容做适当的调整,学生须按指导教师下达的实习报告格式认真进行填写。 3、实习成绩由指导教师根据学生的实习情况给出各项分值及总评成绩。 4、指导教师评语一栏由实习指导教师(校内教师)就学生在整个实习期间 的表现给出客观、全面的评价,包括实习期间的表现、实习报告的质量、实习答辩的情况等。 5、学生必须参加实习答辩,凡不参加实习答辩者,实习成绩一律按不及格 处理。实习答辩小组应由2人及以上教师组成,其中校内指导教师必须参加,否则视作无效答辩。 6、实习报告正文字数应不少于5000字,实习日记字数不少于500字/天。 7、实习报告正文中实习目的与任务、实习地点、实习内容和要求等项,可 由指导教师统一给出(自主实习除外)。学生自主实习的,可根据实习的情况自行填写以上内容。 8、自主实习的学生还应提供由实习单位出具的实习鉴定表(复印件),与实 习报告一起装订,作为参加实习答辩和评定成绩的依据。

学生姓名:方成钢学号:1205110207 班级:2012信息技术02

ANDROID实训心得体会

项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。 刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。 乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。 音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和 运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。 这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发! 相信这些宝贵的经验会成为我今后成功的重要的基石。在此,我非常感谢指导老师和 同学对我的帮助。篇二:android实训报告 通信与电子信息专业实训报告 项目名称:基于android的游戏开发 班级 10通信1班 姓名 学号 指导教师 成绩 实训时间:年月日— 目录 一、实训目的及其意义 (3) 1.1、目的及意义 (3) 1.2、研究现状 (3) 二、实训主要任务、重点及难点 (4) 2.1、任务 (4) 2.2、重点内容及实现途径 (4) 三、实训具体内容及完成的主要工作 (5) 3.1、认识基础开发 (6) 3.2、了解数据存储 (6) 3.3、总体实训过程 (7) 四、实际遇到的困难,解决问题的方法和措施 (8) (一)、所遇问题 (8) (二)、解决方法与措施 (9) 五、心得体会 (9)

相关文档
相关文档 最新文档