仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 673|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA网站制作之深切安卓Package Manager和Package Installer仓酷云

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)我们天天都在安装和卸载APK(安卓使用程序包文件),也许一天会有好几回,可是你有想过上面成绩吗?

  • 甚么是PackageManager(保证理器)和PackageInstaller(程序安装包)?
  • APK文件保留在Android的哪一个中央?
  • APK文件安装历程的细节是如何的?
  • PackageManager(保证理器)是如何保留数据的?
  • 我应当往那里找PackageManager和PackageInstaller的源码?
1、甚么是PackageManager和PackageInstaller

PackageInstaller是安卓上默许的使用程序,用它来交互式地安装一般包文件。PackageInstaller供应了用户界面来办理使用大概包文件。PackageInstaller挪用一个叫InstallAppProgress的activity来猎取用户收回的指令。InstallAppProgress会哀求PackageManager服务,然后经由过程indalld来安装包文件。源码供应在/packages/apps/PackageInstaller上。
Installd这个体系保卫程序的主要脚色是猎取来自PackageManager服务的哀求,而该哀求是经由过程Linux套接字/dev/socket/installed取得的。
Installd利用办理员权限实行一系列的步骤来安装APK。参考:commands.c
PackageManger是一个实践上办理使用程序安装、卸载和晋级的API。当我们安装APK文件时,PackageManager会剖析APK包文件和显现确认信息。当我们点击OK按钮后,PackageManger会挪用一个叫“InstallPackage”的办法,这个办法有四个参数,也就是uri、installFlags、observer和installPackagename。PackageManger会启动一个叫“package”的service(服务),如今一切含混的工具会产生在这个service中。你能够在PackageInstaller源码中检察“PackageInstallAcitivity.java”和“InstallAppProgress.java”。PackageManger服务运转在体系服务历程中,而安装保卫程序(installd)作为一个当地历程运转着,他们都在体系启动时入手下手运转。
2、APK文件保留在Android的哪一个中央?


  • 预装程序(即相机,日历和扫瞄器等)保留在/system/app/中。
  • 用户安装程序(APIDemo,Any.do等)保留在/data/app/中。
  • PackageManager创立数据目次/data/data//来保留数据库、sharedpreference、当地函数库弛缓存数据。
你大概会看到apk文件和统一个APK的*.odex文件,而ODEX文件是完整分歧的会商和目标了。
3、APK文件安装历程的细节是如何的?

上面的历程实行在PackageManger服务中。


  • 守候;
  • 增加一个包文件到安装历程的行列中;
  • 断定符合的中央来安装包文件;
  • 复制apk文件到一个给定的目次下;
  • 断定使用的UID;
  • 哀求installd保卫程序历程;
  • 创立使用目次和设置权限;
  • 提取dex代码到缓存目次中;
  • 剖析packages.list、system、data和packages.xml的最新形态;
  • 向体系发送播送动静,动静带有安装完效果果的名字Intent.ACTION_PACKAGE_ADDED:假如是更新,会带有新的(Intent.ACTION_PACKAGE_REPLACED)。


4、PackageManager(保证理器)是如何保留数据的?

PackageManager保留使用程序的信息在/data/system目次下的三个文件里。上面的例子是从Android4ICS(IceCreamSandwich)摹拟器提掏出来的图片。
1.packages.xml:这个文件包括一切的权限和Packages/Applications。
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<packages>
<last-platform-versionexternal="15"internal="15">
<permission-trees>
<permissions>
<itemname="android.permission.CHANGE_WIFI_MULTICAST_STATE"package="android"protection="1">
<itemname="android.permission.CLEAR_APP_USER_DATA"package="android"protection="2">
.
.
.
.
</item></item></permissions>
<p><packagecodepath="/system/app/Contacts.apk"flags="1"ft="136567b3990"it="136567b3990"name="com.android.contacts"nativelibrarypath=
小魔女 该用户已被删除
沙发
发表于 2015-1-20 20:10:38 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
山那边是海 该用户已被删除
板凳
发表于 2015-1-25 15:14:21 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
变相怪杰 该用户已被删除
地板
发表于 2015-2-2 22:33:50 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-8 16:34:34 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
分手快乐 该用户已被删除
6#
发表于 2015-2-10 00:40:32 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小妖女 该用户已被删除
7#
发表于 2015-2-28 10:15:08 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-6 09:18:14 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
9#
发表于 2015-3-11 00:01:53 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
小女巫 该用户已被删除
10#
发表于 2015-3-17 16:10:36 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
老尸 该用户已被删除
11#
发表于 2015-3-24 11:32:37 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表