導航:首頁 > 操作系統 > 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查看動態文件 瀏覽:578
輕松籌app怎麼發起籌款 瀏覽:217
鏈家app怎麼增加關注小區 瀏覽:804
u8客戶端連接不上阿里雲伺服器 瀏覽:395
如何連上谷歌的伺服器 瀏覽:722
安卓圓頭介面叫什麼 瀏覽:176
kd源碼指標公式 瀏覽:60
ss和ssr的混淆和加密 瀏覽:879
程序員大神從來不加班 瀏覽:217
英雄聯盟文件夾tqm有什麼用 瀏覽:108
網路運營文件加密是什麼工作啊 瀏覽:745
箍筋加密區和非加密區根數怎麼計算 瀏覽:861
新機編譯發熱 瀏覽:395
伺服器做適合玩什麼 瀏覽:257
聯合閱讀app如何下載 瀏覽:998
php大神 瀏覽:451
干一年程序員能拿多少錢 瀏覽:82
東軟程序員用工形式 瀏覽:190
靈飛經字帖pdf 瀏覽:429
python增刪改查web 瀏覽:964