android源碼教程
1. Android源碼該如何學習
直接沒目的的學習Android源碼效果並不好,建議設計一系列的任務,帶著任務學習源碼。比如:
1. 編譯並且燒錄到開發板中去
2. 嘗試分析、統計和優化系統的啟動速度
3. 在源碼中添加新的APP,或者嘗試刪除系統出廠的APP
4. 在源碼層編寫一些應用,如自定義鎖屏、底層Camera應用或者Audio應用
5. 嘗試編寫一個HAL層驅動
6. 嘗試移植系統到其他開發板上去
2. Android繪制源碼分析(下)
Android繪制源碼分析上 介紹了這個屏幕的架構,以及相關的系統類 Android繪制源碼分析中 介紹了整個繪制的啟動,繪制過程 ,繪制 完畢的一個流程,這篇的終點就是介紹我們平常自定的三步驟
如何確定大小?肯定就需要測量,從根 View 遞歸調用每一級子 View 的 measure() 方法,對它們進行測量。
所以測量是指父View對子View測量,父View收到子View寬高參數,然後結合自身的寬高,一起商量測量出給寬高傳遞給子View
host 就是DecorView,host.layout確定自身的位置
setFrame(l, t, r, b)這個方法用於確認View四個點的位置,及初始化left,top,right,bottom的位置,這是ViewGroup布局完成
以上就是確定View位置的大概方法和流程
ViewRootlmpl->boolean canUseAsync = draw(fullRedrawNeeded);
ViewRootlmpl->drawSoftware()
canvas 是由圖表Surface 賦值傳值給 mView.draw(canvas);
View->draw()
最後由子類在onDraw()自定義繪制
1.單獨一個子控制項,我的目的就是繪制,所以重點就是draw裡面的邏輯,不需要去管layout,或者measure
2.自定義時,裡麵包含多個控制項,這時需要去測量 (measure),布局(layout),繪制(draw)
3.自定義時明確功能,可能只是需要在TextView中加一個功能,所以可以直接繼承TextView
3.自定義時可能是父布局裡,如RelativeLayout,只是需要改變某個需求,可以直接繼承RelativeLayout
4.自定義組合控制項,某個布局塊的一部分控制項採用父控制項統一管理
3. 如何用Android 源碼生成APK簽名文件
我們很多應用需要用到系統簽名,可以通過生成系統簽名文件,在生成apk時使用這個簽名,然後可以安裝到機器中,不需要放在源碼里編譯,重新刷系統。
先附上 50和 20機器人通用的debugkey(圖已經省略)
在linux環境中,以Android源碼目錄為根目錄。
其中的platform.pk8是製作系統簽名需要的文件。
1、在這個目錄下,執行
生成臨時文件platform.pem
2、接著執行以下命令,將在目錄下生成platform.p12文件,它本質上應該就是一個數字證書
3、然後再執行以下命令出現以下信息,表示成功生成platform.jks
這個名字可以改成debug.keystore. 它的後綴本身是沒有關系,eclipse和AS都識別 platform.jks
4、然後在打包 apk 的時候選擇platform.jks文件,就可以直接用adb命令安裝apk到機器中了。
xxxx表示需要安裝的apk路徑
5、簽名的 Key store password和Key password都是android
4. 怎樣著手研究 Android 源代碼
一、源碼里的工程需要導入所有的Android源碼,不可以單獨作為一個Android工程導入到Eclipse里。
二、使用git和repo下載Android的源代碼,參考如下步驟
以下操作都是在Ubuntu10.04LTS下完成:
1)安裝git
sudo apt-get install git-core
2)安裝curl
sudo apt-get install git-core curl
3)安裝Repo,為了方便直接下載repo到用戶根目錄中。通過curl下載repo
curl http://android.git.kernel.org/repo >~/repo
4)給repo可執行的許可權
chmod a+x ~/repo
5)新建一個目錄,然後進入該目錄。通過repo將當前Android上所有源代碼下載。
首先初始化本地,
~/repo init -u git://android.git.kernel.org/platform/manifest.git
看到repo initialized in /android的提示後,則證明初始化完畢。成功後會在~/android下生成.repo文件夾
執行
repo sync
則自動開始下載源代碼。git支持斷點續傳,如果中斷了下次可繼續。
單獨下載內核,用這個
git clone git://android.git.kernel.org/kernel/linux-2.6.git
如果想拿某個branch而不是主線上的代碼,我們需要用-b參數制定branch名字,比如:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
另一種情況是,我們只需要某一個project的代碼,比如kernel/common,就不需要repo了,直接用Git即可。
git clone git://android.git.kernel.org/kernel/common.git
5. 誰有好的安卓開發教程推薦
android教程網路網盤免費資源在線學習
鏈接: https://pan..com/s/1vEeYVMBFhxsmmlxkEoHW1w
android教程
千鋒教育Mars老師Android游戲開發教程-數獨-源碼下載(1)
千鋒教育Mars老師Android游戲開發教程-數獨-源碼下載
千鋒Android游戲開發視頻教程-游戲數獨-Mars力作(1)
千鋒Android游戲開發視頻教程-游戲數獨-Mars力作
千鋒Android應用開發培訓視頻教程-老羅在線課堂
千鋒Android應用開發培訓視頻教程-老羅典藏版
千鋒Android培訓-java視頻教程-Mars典藏版
Android游戲開發基礎視頻教程-cocos2dMars版
千鋒3G學院_Android游戲開發教程_數獨_08.mp4
千鋒3G學院_Android游戲開發教程_數獨_07.mp4
千鋒3G學院_Android游戲開發教程_數獨_06.mp4
千鋒3G學院_Android游戲開發教程_數獨_05.mp4
千鋒3G學院_Android游戲開發教程_數獨_04.mp4
千鋒3G學院_Android游戲開發教程_數獨_03.mp4
6. 如何使用Android Studio開發/調試Android源碼
一、修改Android
Studio(以下簡稱AS)的內存配置
因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文檔中使用的是748m,
可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK,
這樣可以確保使用源碼里的庫文件
三、生成導入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過,則無需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執行:
mmm
development/tools/idegen/
在5.0.1的源碼中會生成res.java的文件夾,導致idegen.jar運行時拋FileNotFoundException,這是idegen的代碼不夠嚴謹造成的。
我的分享里有修改這個bug的patch,或者直接使用我分享的idegen.jar。
③執行
development/tools/idegen/idegen.sh
等待出現類似下面的結果:
Read
excludes:
5ms
Traversed
tree:
44078ms
這時會在源碼的根目錄下生成android.ipr和android.iml兩個IntelliJ
IDEA(AS是基於IntelliJ
IDEA社區版開發的)的配置文件
④在AS中打開源碼根目錄下新生成的android.ipr
四、解決源碼中跳轉錯誤問題
①為當前工程設置正確的SDK和JDK
②設置'Moles'的依賴
先將所有依賴刪掉,只留下上圖'1'所指向的兩個(注意:這里刪除全部只是為了方便。如果確實用到了.jar,在將它們的路徑添加進來就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點擊上圖中'2'指向的'+'並選擇上圖'3'指向的'Jars
or
directories'選項,依次將frameworks和external文件夾添加進來
五、DEBUG源碼
可以通過給剛導入的工程在'Moles'中添加'Android
Framework'來讓AS將它作為一個Android工程,從而方便調試代碼.
在彈出的選擇進程(Choose
Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示Call
requires
API
Level
x....
出現這個問題是因為AS將工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。
7. 如何獲取android源代碼
當前的Android代碼託管在兩個方:https://github.com/android 和https://android.googlesource.com之前在 android.git.kernel.org上也有託管,不過現在重定向到了https://android.googlesource.com好在都支持git訪問。
google提供的repo工具實際上是一個內部操作git工具來簡化操作Android源碼的Python腳本。經過嘗試,直接使用git工具在ubuntu下可以實現cloneAndroid源碼。下面介紹一下方法:
1.獲取當前的在github上託管的Androidgitrepositories:
github頁面為:https://github.com/android/following。不過這個頁面不支持通過wget"https://github.com/android/following"或者curl"https://github.com/android/following"的方式訪問,錯誤信息如下:
這個時候需能做的只能是"tryagain"了。
需要說明的是"不要試圖同時並發執行多個gitclone命令",這樣會導致大量出現上面貼圖中的錯誤,另外,整個clone過程中耗時最多的gitrepository如下:
kernel_common.gitkernel_msm.gitplatform_frameworks_base.gitplatform_prebuilt.git其中platform_prebuilt.git是google提供的預編譯好的二進制文件,包含:各種庫文件,jar包,可執行程序等等,如果只是閱讀Android源代碼,這個gitrepository可以不用clone.
8. 怎樣運行Android源代碼
小編初學android的時候也不知道如何導入源碼,但經過半天的琢磨··終於找到了一個好的捷徑。 第一步在Eclipse 開發環境中,選擇File---》import
第二步選中所要導入的文件
第三步 選中導入的項目,右鍵選擇Properties--》
第四步 選擇「Android」選項,勾選TargName,然後單擊OK。小提示:TagName要與你當前模擬器的版本匹配,比如筆者的是android 2.3.3。
第五步 在導入的項目按滑鼠右鍵 ,單擊Android tool ---》Fix Project Properties
這樣子··你下載的源碼就可以運行了,雖然步驟煩瑣了一點,但是操作多了就了就順手了。 不過··大家有什麼更便捷的方法也可以推薦給我。
9. 如何使用Android Studio開發/調試Android源碼
開發調試環境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
由於AS是基於IntelliJ IDEA開發的,所以本文也適用於IntelliJ IDEA
一、修改Android Studio(以下簡稱AS)的內存配置
因為在導入源碼時需要消耗大量內存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m,可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個沒有classpath的JDK,這樣可以確保使用源碼里的庫文件
在代碼中加斷點,然後選擇'Run'->''或者直接點擊下圖所示的圖標
在彈出的選擇進程(Choose Process)對話框中,勾選顯示所有進程,選擇要DEBUG的代碼所在的進程,點擊OK即可.
六、其它
代碼中很多地方提示CallrequiresAPILevelx.... 出現這個問題是因為AS將我們的工程當做安卓應用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個AndroidManifest.xml)。
也可以考慮使用build.gradle來解決該問題。