首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >“Android应用程序怎么样”(Facebook等)安装在android手机上?

“Android应用程序怎么样”(Facebook等)安装在android手机上?
EN

Stack Overflow用户
提问于 2015-05-20 11:26:00
回答 1查看 2.7K关注 0票数 8

我知道如何将应用程序安装到Android设备上,例如从Play-Store或通过.apk文件。但我想了解安装的实际过程。

例如在Windows上:

  • 序列号等被放置在注册表中
  • 对软件运行很重要的文件被放置在Program文件夹(主.exe等)中。

到目前为止,我对Android应用程序安装过程的了解是:

  • 在执行android应用程序之后(安装后),新下载的数据被放置在诸如: Android/data或Android/obb等位置。
  • 如果由Android开发人员具体表示,文件也可以放在其他地方,例如在二级存储(存储卡、云存储等)上。

但除此之外,我对Android安装过程的了解非常有限,例如:

  • 我不知道与Android程序的执行相关的重要文件放在哪里(在Windows、.exe、相关媒体、库等方面)。
  • 同样,我也不知道这些文件是如何在Android设备(安装后)上构建的,例如,这些文件是否在诸如java、res、菜单、布局等文件夹中结构化,就像在像Android这样的开发环境中那样?
  • 我也不知道在安装后(从android安装文件或apk解压缩后)用户的设备上存储了哪些应用程序文件类型,例如,在开发过程中,它们被存储为.java和或.xml文件。

希望有人能填补空白,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 19:06:43

入门

PackageInstaller调用InstallAppProgress活动来接收用户的指令。InstallAppProgress将要求PackageManager服务通过分期付款方式安装软件包。源代码可在<Android Source>/packages/apps/PackageInstaller上获得。

当我们安装APK文件时,Package解析软件包(APK)文件并显示确认,当用户按OK按钮时,Package调用方法名为installPackage,其中包含uriinstallFlags、观察者、installPackageName四个参数。启动一个名为" Package“的服务,现在所有模糊的事情都发生在这个服务中。您可以在PackageInstallerActivity.java源代码中检查PackageInstaller和InstallAppProgress.java。在system_service进程中运行的和作为本机进程运行的守护进程( Package )都是在系统启动时启动的。

APK 文件存储在 Android 中的

  1. 预装(即照相机、日历、浏览器等)存储在/system/app/中的APK
  2. 用户安装(ApiDemo、Any.do等)存储在/data/app/中的APK
  3. Package创建数据目录/data/data/<package name>/以存储数据库、共享首选项、本机库和缓存数据

您可能会看到apk文件和*.odex文件用于相同的APKODEX文件是完全不同的讨论和目的。

详细说明了什么是APK安装过程?

Package Manager Service中执行以下进程。

  • 等待
  • 将包添加到安装过程的队列中
  • 确定包安装的适当位置。
  • 确定安装/更新新
  • apk文件到给定目录的副本。
  • 确定应用程序的UID
  • 请求分批to守护进程
  • 创建应用程序目录并设置权限
  • 将dex代码提取到缓存目录
  • 以反映和packages.list /system/data/packages.xml的最新状态
  • 广播到系统,以及安装效果的名称是完整的包Intent.ACTION_PACKAGE_ADDED:如果是新的( Intent.ACTION_PACKAGE_REPLACED):一个更新的情况。

包管理器如何存储数据?

Package将应用程序信息存储在位于/data/system中的三个文件中。从Android 4 ICS仿真器图像中提取以下示例。

packages.xml:This文件包含权限和包/应用程序的列表。这个xml文件存储两个东西: 1、权限2、包(应用程序)、权限存储在<permissions>标记下。每个权限有三个属性,即名称、包和保护。名称属性具有我们在AndroidManifest.xml中使用的权限名,package属性表示属于包的权限,在大多数情况下,"android“是值,因为<permission>标记包含默认权限,而保护指示安全级别。

packages.list:它是一个简单的文本文件,包含包名、用户id、标志和数据目录,我找不到任何完美的描述,但我假设packages.list文件只保留重要的信息,可以更快地查找已安装的包。

代码语言:javascript
运行
AI代码解释
复制
com.android.launcher 10013 0 /data/data/com.android.launcher
com.android.quicksearchbox 10033 0 /data/data/com.android.quicksearchbox
com.android.contacts 10001 0 /data/data/com.android.contacts
com.android.inputmethod.latin 10006 0 /data/data/com.android.inputmethod.latin

packages-stoped.xml:此文件包含已停止状态的包列表,存储声明的应用程序无法接收任何广播。

,在这里我可以找到Package和Package ?的源代码

包管理器

代码语言:javascript
运行
AI代码解释
复制
frameworks/base/services/java/com/android/server/pm/Settings.java
frameworks/base/services/java/com/android/server/pm/PackageManagerService.java
frameworks/base/services/java/com/android/server/pm/IPackageManager.aidl
frameworks/base/services/java/com/android/server/pm/PackageSignatures.java
frameworks/base/services/java/com/android/server/pm/PreferredActivity.java
frameworks/services/java/com/android/server/PreferredComponent.java
frameworks/core/java/android/content/IntentFilter.java
frameworks/base/core/java/android/content/pm/PackageParser.java
frameworks/base/services/java/com/android/server/pm/Installer.java
frameworks/base/core/java/com/android/internal/app/IMediaContainerService.aidl
frameworks/base/packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java

包安装程序

代码语言:javascript
运行
AI代码解释
复制
packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageUtil.java
packages/apps/PackageInstaller/src/com/android/packageinstaller/InstallAppProgress.java.

链接指向:链接1链接2

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30358687

复制
相关文章
android应用程序_chrome Android
最近在看Android源码Setting代码的时候,发现其中配置都是用的PreferenceFragment,以前对这一块不是很了解,
全栈程序员站长
2022/10/04
5220
android应用程序_chrome Android
Android debug_Android开发在手机上调试
Android Studio目前已经成为开发Android的主要工具,用熟了可谓相当顺手。作为开发者,调试并发现bug,进而解决,可是我们的看家本领。正所谓,工欲善其事必先利其器,和其他开发工具一样,如Eclipse、Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧。
全栈程序员站长
2022/11/04
3750
Android debug_Android开发在手机上调试
安卓开发基础教程-Android多界面应用程序开发
本套教程主要讲解安卓开发的相关知识,从基础到精通。一方面可以巩固自己所得,另一方面可以帮助对安卓开发感兴趣的朋友。
做全栈攻城狮
2018/12/20
8920
Android 应用程序签名
Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。
阳光岛主
2019/02/19
1.7K0
Android安卓进阶之——相比 Groovy 脚本, KTS 性能到底怎么样?
大家肯定也都或多或少的写过一些Groovy代码,但由于不支持代码提示及编译时检查,使用Groovy开发的体验并不太好,Android Gradle插件4.0之后支持在Gradle构建配置中使用Kotlin 脚本 (KTS),用于替代 Groovy(过去在 Gradle 配置文件中使用的编程语言)。
BlueSocks
2022/03/19
1.7K0
Android安卓进阶之——相比 Groovy 脚本, KTS 性能到底怎么样?
安卓开发基础教程-Android多界面应用程序开发
本套教程主要讲解安卓开发的相关知识,从基础到精通。一方面可以巩固自己所得,另一方面可以帮助对安卓开发感兴趣的朋友。
做全栈攻城狮
2018/12/20
9830
Android仿FaceBook登录动画效果
效果图录制出来有黑屏帧,勉强看哈,效果就是点击输入框后,顶部缩小,按返回按钮时再还原
SoullessCoder
2020/10/29
7470
高通芯片曝高危漏洞!影响全球 30% 安卓手机,小米、一加用户要当心
安卓那边也不消停:一个新的高通芯片漏洞可能会影响全球 30% 的 Android 手机。
新智元
2021/05/28
7420
高通芯片曝高危漏洞!影响全球 30% 安卓手机,小米、一加用户要当心
Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包
从App内部点击按钮或链接,跳转到应用商店的某个APP的详情页面。 让用户 下载 或 评论。
再见孙悟空_
2023/02/10
2.3K0
Android仿FaceBook登录动画效果
效果图录制出来有黑屏帧,勉强看哈,效果就是点击输入框后,顶部缩小,按返回按钮时再还原
SoullessCoder
2020/10/29
9300
[译] 在 Android Instant App(安卓即时应用程序)中启用 ProGuard (混淆)
原文地址:Enabling ProGuard in an Android Instant App 原文作者:Wojtek Kaliciński 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:JayZhaoBoy 校对者:hanliuxin5 Instant Apps(即时应用)和 4 MB 字节的限制 把一个已经存在的应用程序转换成 Android Instant App(安卓即时应用程序)是很有挑战性的,但对于模块及结构化你的项目而言却是一个很好的练习,更
Android 开发者
2018/05/31
2.6K0
android应用程序开发第三版_安卓app开发
activity是Android SDK中Activity类的一个具体实例,负责管理用户与信息屏的交互。
Java架构师必看
2022/05/12
5720
android应用程序开发第三版_安卓app开发
eagleget安卓_android startactivityforresult
Android EagleEye官方介绍在 https://github.com/MindMac/AndroidEagleEye/blob/master/README-zh.md
全栈程序员站长
2022/09/22
4410
了解Android
了解Android Android系统架构 开发环境搭建 安卓虚拟机 最新Android系统版本及信息查询👇 http://developer.android.google.cn/about/dashboards 菜鸟教程 Android系统架构 Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。 系统运行库层 这一层通过一些C/C++库来为Android系统提供了
司六米希
2022/11/15
6020
了解Android
在你的 Android 手机上「云养猫」:Android 11 Beta 3 具透
链接:https://zhuanlan.zhihu.com/p/176961986
陈宇明
2020/12/16
1.7K0
在你的 Android 手机上「云养猫」:Android 11 Beta 3 具透
在你的 Android 手机上运行 Golang 程序
在我们日常开发中,运行一个服务,都是在 shell 或 cmd 下执行命令,像是使用 go run main.go 直接编译运行,或是 go build 编译生成可执行文件后,以 ./xxx 方式运行。
gopher云原生
2021/10/15
7.9K0
在你的 Android 手机上运行 Golang 程序
Facebook移动架构:Android Flux架构详解
要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。
哲洛不闹
2018/09/18
1.2K0
Facebook移动架构:Android Flux架构详解
安卓so库你应该注意的事
在这公司那么久也没有弄过ndk开发,作为一个做刷卡头和蓝牙pos的安卓开发程序员这点还是很蛋疼,然后现在重新做一个新的项目,因为以前的so库是放在armeabi文件夹下面的,所以不管是安卓4.4以下还是5.0+是都可以用的,然后里面加了下分享的功能,微信和qq分享还好没有so库,但是新浪微博的就不一样了,里面有7中cpu架构文件,再加上百度的定位,操蛋的事情就发生了,如果删除其他文件夹然后新浪分享时异常,还好百度定位的没有崩溃,然后全部保留吧,硬件连接又出错,果断和硬件厂商联系了下,叫他们提供so库,因为so库为二进制码技术有限不能逆向再重新生成多so库。
全栈程序员站长
2022/06/24
1.3K0
JBoss7 安装在KVM 虚拟机上问题探讨
目前公司在KVM虚拟出来的虚拟机是双ip,即一个floating ip 和一个虚拟机用的 fixed ip。在安装jboss应用服务器时,host.xml配置文件必须指定管理应用服务器的管理ip,这时在配置问题上,有了难题:
星哥玩云
2022/06/30
6110
Ubuntu 18.04等Linux系统安装Anbox并使用它运行Android应用程序
Android模拟器应用程序允许我们直接从Linux系统运行Android应用程序或游戏,本文介绍在Ubuntu Linux 18.04系统中安装Anbox的方法,包括其他Linux发行版上的安装方法,并且介绍启动及应用Anbox来运行Android应用程序。
用户8710643
2021/06/11
3.6K0

相似问题

应用程序未安装在android手机上

14

安卓市场的应用程序已经安装在每部android手机上了吗?

15

防止android穿戴应用程序安装在手机上

11

在android中,应用程序没有安装在手机上。

34

Android错误:应用程序没有安装在您的手机上?

72
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文