导航:首页 > 操作系统 > android源码大小

android源码大小

发布时间:2025-08-09 16:15:04

A. 关于学习安卓底层,懂得进

我干了3年android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径。根据前辈的经验,Android底层完全入门需要两年。

先说下我的入门过程:
第零步,下载源码,我下的4.2的,框架层源码10G,内核2G多,ctags给框架层建的标签文件都有600M,当时让我有点震撼,用的vim+ctags+cscope来阅读,还算不错,架构挺清晰的。

第一步,我找到了一本好书《Android的设计与实现 第一卷》它讲了Android框架层的启动,初始化,服务框架初始化,Binder,消息循环,PackageManagerService,ActivityManagerService。据作者说后面会出讲UI子系统的第二卷,拭目以待。其实这本书看了几十页我就发现需要第二步的知识,否则看不下去,于是跳去第二步。

第二步,学习linux系统编程,在看《Android的设计与实现》的时候我发现,框架层的Native部分,全是Linux编程。为了掌握这部分知识,我花了4个月学习了《Linux系统编程手册》(TLPI)这本1000多页的书,我以前是搞WIndows文件系统这块的,所以C语言还比较熟,TLPI的习题很有意思,量也比较大,坚持下来还是收获很多。

第三步,花了4个月学习了一些Linux内核的知识,看了LKD,PLKA看了一半多。越学越没底,觉得不懂得越来越多,不过这个也正常,只有靠慢慢磨,估计以后要不断的磨这块。

第四步,回头看Android源码,这次一口气看完了《Android的设计与实现 第一卷》,终于对框架层有了谱。同时真的数次把我看晕,前面看Linux内核源码都没这么晕,不断在java层和Native层之间跳有点磨脑浆。其中我又觉得Java的基础没有打太牢,回去补了一个月的《Core Java》第八版。但是这书没有涉及UI子系统,于是又看了《Android内核剖析》

第五步,《Android内核剖析》(这本书实际上是讲框架层的,作者也是个搞嵌入式的,所以他在写框架层的时候文笔不太好,很罗嗦,不过还是有很多看点,到他后来写做ROM,玩开发板时估计是说到了他的本行,一下子遛起来了看得出还是挺有水平的,这本书知识有点旧毕竟讲的是2.3很多代码已经过时,但是作者很多点子很有参考价值)这本书讲UI子系统和按键/触摸消息处理系统还是很有分量的,尤其13章View绘制那里,结合源码研究很有收获。而后面他讲编译框架和ROM相关的东西都是挺宝贵的资料。

第六步,为了再补一下其他诸如电源管理模块等子系统的知识看了,《深入理解android》系列,个人认为这个系列看起来有点不太舒服,不过作为补充印证还是比较有价值。

第七步,《Android系统源代码情景分析》,罗升阳的源码分析大作,比《Android的设计与实现》分析得更细致,但缺点是涉及到模块比较少,选用的源码也比《Android的设计与实现》更旧一点。看完书后需要去研究作者的博客,东西挺多的,一定让你满意。

第八步,买块开发板自己玩。这步我还没走到,原因是我觉得我还差点准备知识。可能要再几个月,到时准备入块6410或者树莓派。

最后,由于我11年以前都是搞Windows这块的,所以对Linux知识不是很了解,不得已看了这么些书,如果是一直做Linux的人,很多步骤估计可以省掉了。直接上源码才是正道。

我本身做着移动GIS开发的工作,学框架层全是因为兴趣,但招聘平台Android框架层开发人员还是蛮有竞争力的有不少定制ROM,智能电视的工作都处于人才难求状态,毕竟有一定的门槛,现在各种ios培训,让奔着钱干开发的人纷纷涌入,而ios只能干sdk开发的缺点就暴露出来了,一堆新手老手,菜鸟大牛全挤在SDK开发这块,我觉得不太妙。 反观Android这边,虽然入门菜鸟没有搞ios来钱,但是可持续性很好,从sdk-》框架》驱动》内核这样干下去。干着干着发现自己渐渐变成了Linux开发者/嵌入式开发者的人也不少,新人,老手,菜鸟大牛各居其位,层次性很好。

B. android 怎么获取应用安装包的大小

网上找了一下有两种方法:

1、直接拿到data目录下对应的包,然后用File.length()方法获得。然后会发现和设置里显示的大小不同。

2、通过反射调用设置里源码的方法获得PackageStats类的实例。

两种方法都不想用...

后来自己找到解决办法:

PackageManager类有个getPackageSizeInfo方法如下:

复制代码 代码如下:

public abstract void getPackageSizeInfo(String packageName,

IPackageStatsObserver observer);


只是这个方法是hide的。

自己编译一下的android2.3的Framework框架,把jar包拷出来,只需要把框架导入到library,设置在默认的android的lib之上遍可以优先使用自己编译的框架了,其实也就是让自己应用层能调用框架中的接口。

framework下载:点击此处

下载好后,通过添加lib后把classes.jar添加到此lib中,如图:

下面就是直接使用方法了。

代码如下:

pm.getPackageSizeInfo(packageInfo.packageName,

new IPackageStatsObserver.Stub() {

public void onGetStatsCompleted(PackageStats stats,

boolean succeeded) {

Log.v("King", stats.codeSize);

Log.v("King", stats.dataSize);

Log.v("King", stats.cacheSize);

}

});


第一个参数是包名,想必大家都能拿到。

第二个参数是实现AIDL生成的JAVA接口的匿名内部类。在回调方法里即可处理程序大小数据。

stats.codeSize:应用程序大小

stats.dataSize:数据大小

stats.cacheSize:缓存大小

一般大家可能都是用listView去显示每个应用的大小,而调用getPackageSizeInfo方法是不能立刻拿到值的,所以要和其他数据异步显示。


可以通过handler讲数据发送出去后,然后调用Adapter的notifyDataSetChanged()方法更新显示应用大小。

也许你还想点击每一项可以可以直接跳转到设置里的应用管理界面,而不自己去写卸载、清除缓存等方法。设置源码的方法如下,可以搬过来照样用:

代码如下:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,Uri.fromParts("package",包名 ,null));

// start new activity to display extended information

startActivityForResult(intent, 1);

C. Ubuntu14.04编译Android源码,需要有多大的磁盘空间。给Ubuntu虚拟机分配20G

不够,系统开销加上开发环境和编译环境就差不多20G了,如果你再装一些IDE工具,20G空间很紧张的。空间充足的话,建议分配80G以上。

D. Android Adb 源码分析(一)

Android ADB源码分析的要点如下

  1. ADB工具概述

    • ADB是Android系统中用于调试的工具。
    • 它主要由三部分构成:adb clientadb serviceadb daemon
  2. ADB源码位置

    • ADB及adbd的源代码主要位于system/core/adb目录下。
  3. ADB在解决特定问题中的应用

    • 在切换userdebug版本为user版本并调整selinux权限后,项目遇到大量bug,日志文件因权限问题无法正常pull。
    • 尝试修改data目录权限未解决问题。
    • 通过修改adb代码,利用adb命令的后门机制,实现了相对安全的日志获取方法,同时避免了被窃取的风险,对日常开发影响降至最低。
  4. ADB代码修改与编译

    • 为解决上述问题,对adb代码进行了修改,并通过Android SDK进行编译。
    • 具体步骤包括在Windows环境下编译生成adb.exe,以及在设备端编译adbd服务。
    • 在进行编译前,需要先建立Android的编译环境。
  5. 后续研究方向

    • 在后续的开发过程中,将继续深入研究ADB代码,尤其是关于如何实现root权限的功能。

重点内容:ADB源码位于system/core/adb目录,ADB工具由adb client、adb service和adb daemon三部分构成,在解决特定问题时,可以通过修改adb代码和利用后门机制来实现特定功能,同时需要建立Android编译环境进行编译。

E. 安卓app开源代码在哪下 android开发源码

Android开发源码的获取与使用

一、获取Android开发源码

  1. 官方渠道

    • Android的开源项目(AOSP)是获取Android开发源码的主要渠道。你可以访问Android开源项目官网下载源码。需要注意的是,由于源码体积庞大,下载过程可能需要较长时间,并且需要稳定的网络连接。
  2. GitHub等代码托管平台

    • 有些开发者或组织会将他们修改或优化的Android源码托管在GitHub等平台上。你可以通过搜索关键词找到这些项目,并根据需要下载或克隆源码。
  3. 第三方镜像站点

    • 为了加速下载过程,一些组织或个人会提供Android源码的镜像站点。你可以在这些站点上找到与官方渠道相同的源码,但下载速度可能更快。

二、在Eclipse中使用Android开发源码

  1. 安装Eclipse和ADT插件

    • 首先,你需要下载并安装Eclipse IDE。然后,通过Eclipse Marketplace或直接从Android开发者网站下载并安装Android Development Tools(ADT)插件。
  2. 导入Android源码项目

    • 将下载的Android源码项目导入到Eclipse中。这通常涉及将源码文件夹作为新项目导入,并配置正确的项目构建路径和依赖项。
  3. 配置构建环境

    • 根据需要配置构建环境,包括设置Android SDK路径、选择目标Android版本等。确保Eclipse能够正确识别并构建Android源码项目。
  4. 浏览和修改源码

    • 在Eclipse中,你可以浏览Android源码的目录结构、类文件和资源文件。通过双击文件或类名,你可以在编辑器中查看和修改源码。
  5. 编译和运行项目

    • 在Eclipse中,你可以编译Android源码项目并生成APK文件。然后,你可以将APK文件部署到模拟器或真实设备上运行和测试。

三、注意事项

通过以上步骤,你可以在Eclipse中成功获取并使用Android开发源码进行开发工作。

F. 安卓修改系统代码实现多开

安卓修改系统代码实现多开是一个复杂且需要深入理解Android系统架构和源码的过程

关键步骤包括

  1. 准备开发环境和目标设备

    配置Ubuntu虚拟机或相应的开发环境。

    安装JDK(Java Development Kit)以支持Java代码的编译和运行。

    准备Android源码,这通常需要从Android开源项目(AOSP)中获取。

  2. 修改用户限制

    在Android源码中,找到UserManagerService.java文件。

    修改MAX_MANAGED_PROFILES字段的值,以允许创建更多的多开用户。例如,将其改为一个更高的数字,以支持所需数量的多开用户。

  3. 创建及管理多用户

    通过调用createProfile方法创建多开用户(即多开容器)。

    每个多开应用将运行在不同的用户中,拥有独立的数据目录,但可能共用同一个APK文件。

    需要实现用户的管理功能,如切换用户、删除用户等。

  4. 定制化安装与卸载流程

    为多开应用定制安装和卸载流程,以确保它们能够正确地安装到不同的用户中。

    这可能涉及修改Android的包管理器(Package Manager)或服务。

  5. 调整UI显示

    修改系统UI以支持多开用户的显示和管理。

    这可能包括添加新的用户界面元素或修改现有的界面布局。

  6. 考虑进程间通信(IPC)机制

    Binder是Android中常用的进程间通信机制。

    在多开应用中,Binder用于保持不同进程中的应用之间的通信和数据同步。

总结:安卓修改系统代码实现多开是一个技术挑战,需要深入理解Android系统的内部机制。由于修改系统代码可能带来的风险和不稳定性,建议在进行此类操作前充分备份数据,并在非生产环境中进行测试。

阅读全文

与android源码大小相关的资料

热点内容
程序员和linux内核交道 浏览:213
安卓怎么把手机资料传到苹果 浏览:944
如何修改注册表命令 浏览:135
公用文件夹打开需要网络凭证 浏览:546
监控服务器怎么配置硬盘 浏览:281
腾讯云服务器怎么查看ftp地址 浏览:300
四时歌PDf 浏览:379
linux查看动态文件 浏览:578
轻松筹app怎么发起筹款 浏览:217
链家app怎么增加关注小区 浏览:804
u8客户端连接不上阿里云服务器 浏览:395
如何连上谷歌的服务器 浏览:722
安卓圆头接口叫什么 浏览:176
kd源码指标公式 浏览:60
ss和ssr的混淆和加密 浏览:879
程序员大神从来不加班 浏览:217
英雄联盟文件夹tqm有什么用 浏览:108
网络运营文件加密是什么工作啊 浏览:746
箍筋加密区和非加密区根数怎么计算 浏览:861
新机编译发热 浏览:395