編輯:關於Android編程
最近比較忙,而且又要維護自己的博客,視頻和公眾號,也就沒仔細的梳理源碼的入門邏輯,今天也就來講一個源碼的玩法,各位看官,一起學習學習!
參考資料
官方教程:http://source.android.com/source/downloading.html
Github托管源碼:https://github.com/android
android源碼的同步,也就是下載,其實不難,我們先把虛擬機打開了,緊接著,我們需要做一些准備的東西,下載的東西比較多哦,這裡要注意一下
sudo apt-get install phablet-toolsandroid的源碼是托管在github上的,所以安裝git來管理,使用git version可以查看版本
sudo apt-get install curlgit工具包
sudo apt-get install build-essential這是上傳和下載數據的工具
sudo apt-get install make提供編譯程序必須軟件包的列表信息
sudo apt-get install gcc源碼編譯工具
sudo apt-get install g++GNU編譯器套件
同上,最新版本為4.8,但是有些系統指定了版本,並不是越高越好<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCnN1ZG8gYXB0LWdldCBpbnN0YWxsIGxpYmM2LWRldg0KPGJsb2NrcXVvdGU+DQoJPHA+ubLP7b/iPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgcGF0Y2gNCjxibG9ja3F1b3RlPg0KCTxwPrK5tqG5pL7fPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgdGV4aW5mbw0KPGJsb2NrcXVvdGU+DQoJPHA+zsS1tc+1zbM8L3A+DQo8L2Jsb2NrcXVvdGU+DQpzdWRvIGFwdC1nZXQgaW5zdGFsbCBsaWJuY3Vyc2VzLWRldg0KPGJsb2NrcXVvdGU+DQoJPHA+z7XNs7XEsdixuL/iPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgZ2l0LWNvcmUgZ251cGcNCjxibG9ja3F1b3RlPg0KCTxwPmdpdLXEuaS+37D8o6zL5Mi709BnaXTBy6OstavKx9PQsbjO3ru8PC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgbmN1cnNlcy1kZXYNCjxibG9ja3F1b3RlPg0KCTxwPrHg0uvE2rrLtcTKsbry0OjSqjwvcD4NCjwvYmxvY2txdW90ZT4NCnN1ZG8gYXB0LWdldCBpbnN0YWxsIHpsaWIxZy1kZXYNCjxibG9ja3F1b3RlPg0KCTxwPrHg0uu1xMqxuvLQ6NKqPC9wPg0KPC9ibG9ja3F1b3RlPg0Kc3VkbyBhcHQtZ2V0IGluc3RhbGwgdmFsZ3JpbmQNCjxibG9ja3F1b3RlPg0KCTxwPsTatOa87LLpxvc8L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aHIgLz4NCjxibG9ja3F1b3RlPg0KCTxwPjxzdHJvbmc+0tTJz7XEtrzKx9K70Km7+bG+yrnTw7XEo6zO0sLewdCz9sC0o6y1q8rH1tDNvsjnufu7uczhyr7SqrCy17C1xMqyw7S5pL7ftcS7sNKyv8nS1NaxvdNzdWRvIGFwdC1nZXQgaW5zdGFsbCDI7bz+w/u9+NDQsLLXsLy0v8k8L3N0cm9uZz48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8aDMgaWQ9"2配置環境">2.配置環境
repo
一個基於git的版本庫管理工具, 這裡用於自動批量下載android整個項目這個也是一個工具,但是這裡就提出來講,因為這個是比較重要的
我們首先創建一個目錄
mkdir ~/bin
下載repo腳本到本地bin文件夾下
curl http://android.git.kernel.org/repo >~/bin/repo (官網:curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo)
給所有用戶追加可執行的權限
chmod a+x ~/bin/repo
到這裡我們前期的准備工作就差不多了,我們創建一個文件夾來存放源碼
mkdir ~/android_source
linux的權限很重要,也是最麻煩的東西,我們可以來給這個文件夾配置權限
chmod 777 ~/android_source
好的,我們進入這個目錄,什麼,怎麼進入?直接cd啊
cd ~/android_source
這裡我要強調一下,我們既然要編譯源碼,乃至後期的源碼編譯修改等,都是要在linux下進行的,所以一些基本的常識和命令我希望大家去復習一下,我也是摸索出來的,大家可以去搜索一下命令大全,簡單易懂,到這裡,我們就可以開始同步代碼了,其實就是下載,我們只是說的專業一點,但是再同步之前,還需要做一點點事情
3.初始化
配置郵箱這裡的初始化,主要是針對兩個,一個是repo,還有一個是android的源碼版本,我們一個個來,首先初始化的是我們的git,你總要配賬戶之內的
配置用戶git config --global user.email "[email protected]"
git config --global user.name "LiuGuiLinAndroid"
接著初始化repo,指明下載的android源碼,這裡我就旋轉android5.0,記住哦,需要翻牆哦
repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r2
如果你沒有翻牆,那就會提示
這裡順便教一下大家怎麼修改host
sudo gedit /etc/hosts
http://laod.cn/hosts/2016-google-hosts.html在hosts文件結尾加入源,源從哪裡來?這裡有個網址
可以去下載host,然後復制到最後面,接著,我們去讓他生效
sudo rcnscd restart
AOSP 5.1.1當然,還有一種選擇,就是下載AOSP,這裡有三個版本
AOSP 6.0.1repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4
AOSP 7.0 perview-1repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22
repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-n-preview-1
顯示是這樣的
好了,現在都OK了,我們只要輸入
repo sync
就開始同步了
就這樣讓他一直接收吧!
注意: 下載過程中, 因為網絡問題, 可能會中斷下載. 當中斷下載時, 繼續使用repo sync命令繼續下載.
二.編譯源碼(make)
下載好了以後,我們可以看一下,挺大的,我們開始編譯了
首先初始化編譯環境
. build/envsetup.sh
然後選擇編譯的目標包
lunch aosp_arm-eng
當我們不知道目標包的時候可以輸入lunch,就可以查看目標了
然後就可以開始編譯了,編譯命令是
make
為了提高效率,我們一般會多開線程去編譯的,只要輸入
make -j8 //8是線程的意思,如果配置較低可以改為2或者4,
然後我們就可以靜靜的等待他編譯成功了,當然,這是最理想的狀態,一般虛擬機不會讓你有好日子過的,他會報各種錯誤,我這裡列舉幾個比較明顯的錯誤
1.gcc/g++ error
這個提示應該會提示gcc+版本號,找不到命令行,是什麼原因呢?剛開始我也找了挺久的了,但是後來才發現,是版本的問題,我直接apt-get install gcc所安裝的版本太高了,他需要指定的版本
2.文件夾權限
這個錯誤會報各種權限問題的,你只要輸入
ls -l
3.xxx找不到命令就可以看到文件夾的歸屬了,一般下載下來是歸root用戶的,你需要改成你的歸屬,更改的方法網上也能搜到
這個是你缺少了什麼工具,比如他提示repo找不到或者找不到命令行,你切記不要用apt-get install repo這個命令,因為有些軟件可能只是集合包裡的一個罷了,你要直接輸入repo,然後他會提示你怎麼安裝,你再進行安裝
make失敗或停止後,可以使用make -k 繼續編譯
目前我這也還在編譯,就不發截圖了,當然,也會碰到各種各樣的問題,如果你不知道,可以加入QQ群:555974449,我們一起來分析一下
三.Samba服務器
源碼還在編譯,老司機催著開車,也就不等了,有遺漏的話,歡迎評論,這裡再分享一個新技能,也就是配置samba服務器,這個在linux行業裡可以必備的技能,而像我們工作需要改源碼,然後重新燒錄,用的虛擬機,讓windows就直接訪問我們的ubuntu,來進行燒錄刷機,好的,我們來學習下samba的配置
ubuntu默認是安裝了samba的,但是以防萬一,我們還是走一下安裝步驟,分三次輸入安裝
sudo apt-get install samba sudo apt-get install samba-common sudo apt-get install samba-client
如果提示安裝,你就安裝吧!
緊接著,我們打開samba的配置文件,輸入命令打開
sudo gedit /etc/samba/smb.conf
我們直接在最下面增加一個用戶組
[share] //共享文件名 path = /home/lgl/android_source //共享路徑 available = yes browseable = yes public = yes writable = yes valid users =lgl //用戶名 create mask = 0700 directory mask =0700 force user =nobody force group = nogroup
其他的都是一些設置相關的數據,然後,我們重啟一下samba服務器
/etc/init.d/samba restart
我們現在要做什麼?需要查看一下ubuntu的IP地址,在windows上查看的IP地址的方式是在cmd中輸入ipconfig,在ubuntu上是輸入
ifconfig
然後我們在運行裡面輸入IP地址
你稍微等待一下就就可以看到分享目錄了
但是當你點進去的時候,你會發現,他需要輸入賬號密碼
那我們還需要去創建用戶組的賬號密碼了,我們輸入
sudo smbpasswd -a lgl
最後跟的是你想創建的samba用戶名,然後他會提示你創建密碼,你照著填就行了
然後你會驚訝的發現,可以訪問了,當然,samba服務器遠不止如此
你們可以慢慢去體驗
當然,我在剛搭建的時候,遇到了很多坑,基本上都是權限的問題,也是蛋疼,我只能說,只能耐心去搜索排查問題了,不過你按照我這樣子來,成功率還是很高的,好的,本篇博文就閒到這裡了,如果有興趣的話,可以加群聊聊!
前言:最近因為某項目cpu,內存的使用率實在讓人不敢恭維;手機發燙,電量下降已經讓用戶無法忍受;頻繁快速迭代發版導致各種性能問題突出;由於之前產品不考慮低端手機情況,低端
本文Github代碼鏈接https://github.com/AndroidMsky/AndoirdIOSPicker 先上圖吧:這是筆者最近一個項目一直再用的一個選擇器
本文實例講述了使用SAX來解析XML。通常來說在Android裡面可以使用SAX和DOM,DOM需要把整個XML文件讀入內存再解析,比較消耗內存,而SAX是基於事件驅動的
本篇隨筆將講解一下Android當中比較常用的兩個布局容器--ScrollView和HorizontalScrollView,從字面意義上來看也是非常的簡單的,Scrol