編輯:關於Android編程
可以通過磁盤管理工具進行設置,也可以通過以下命令生成70g的鏡像文件
sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 70g -volname android ~/android.dmg
hdiutil convert ~/android.dmg.sparseimage -format UDRW -o ~/android.dmg
(android.dmg.sparseimage 為創建的磁盤名,可能是android.dmg.sparseimage 或android.dmg ,根據實際情況填寫)
echo $PATH
否則,在.bash_profile文件種添加
PATH=/opt/local/bin:$PATH
特別說明:下面的一些知道step3的步驟我這邊總出問題就跳過了,事實上也沒影響後面源代碼的下載,跳不跳過就取決與你了
從MacPorts安裝make, git, and GPG packages:
POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
如果你是Mac OS X 10.4版本的話,還要安裝個bison
POSIXLY_CORRECT=1 sudo port install bison
下面要把gmake 3.82還原到3.81,否則之後編譯源碼會出錯:(3.82有Bug,用不了):
sudo vim /opt/local/etc/macports/sources.conf
然後在rsync那行的上面一行加上
file:///Users/Shared/dport
之後按這個步驟來就行了:
mkdir /Users/Shared/dports
cd /Users/Shared/dports/
svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/devel/gmake/
portindex /Users/Shared/dports
安裝3.81版的:
sudo port install gmake @3.81
檢查一下gmake版本,看到版本號是3.81就對了:
gmake --version
於是最後下載Android源碼前的最後一步就是,修改文件標識符限制:
由於Mac OS 默認將同時打開的文件標識符數量限制得太小,並行編譯處理時可能會超出這個限制。所以在 ~/.bash_profile 裡加上這麼一段:
#set the number of open files to be 1024
ulimit -S -n 1024
三、開始下載android的源碼了,開心啊
3.1 在你的home目錄下創建文件夾 /bin
mkdir ~/bin
3.2 設置環境變量
PATH=~/bin:$PATH
3.3 下載repo工具並且給這個工具可執行權限
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
3.4 下載源碼
推薦使用清華大學TUNA鏡像源,使用每月更新的初始化包進行下載更新。具體步驟請看
https://mirror.tuna.tsinghua.edu.cn/help/AOSP/
四.編譯源碼
4.1 在android.dmg磁盤下創建文件夾android用於存放源碼:
cd /Volumes/android
mkdir android
4.2 將下載的源碼拷貝到android文件夾中並進入源碼目錄
cd /Volumes/android/android/android-6.0.1/
4.3 設置環境
source build/envsetup.sh
4.4 根據設備選擇target
lunch target
注:target有以下可選:
aosp_arm-eng aosp_arm64-eng aosp_mips-eng aosp_mips64-eng aosp_x86-eng aosp_x86_64-eng aosp_deb-userdebug aosp_flo-userdebug full_fugu-userdebug aosp_fugu-userdebug mini_emulator_arm64-userdebug m_e_arm-userdebug mini_emulator_mips-userdebug mini_emulator_x86-userdebug mini_emulator_x86_64-userdebug aosp_flounder-userdebug aosp_angler-userdebug aosp_bullhead-userdebug aosp_hammerhead-userdebug aosp_hammerhead_fp-userdebug aosp_shamu-userdebug
其他設備可以到這裡閱讀
4.5 編譯
make -j4
-jN,N這個數字可以跟你的CPU實際情況而定。
android目錄底下會生成out文件夾,文件夾下:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMyBpZD0="46-錯誤解決">4.6 錯誤解決
Which would you like? [aosp_arm-eng] 6
build/core/combo/mac_version.mk:38:
*****************************************************
build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at
/Developer/SDKs/MacOSX10.6.sdk
build/core/combo/mac_version.mk:40:
*****************************************************
build/core/combo/mac_version.mk:41: *** Stop.. Stop.
** Don't have a product spec for: 'aosp_x86_64'
** Do you have the right repo manifest?
把文件中 build/core/combo/mac_version.mk:
mac_sdk_versions_supported := 10.6 10.7 10.8
修改為
mac_sdk_versions_supported := 10.11
(我的Xcode 是10.11,具體查看一下路徑中的sdk版本
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/)
五.用android studio查看Android源碼
5.1 編譯源碼idegen模塊及生成AS配置文件(*.ipr)
mmm development/tools/idegen/
這行命令的意思是編譯idegen這個模塊項目,然後生成idegen.jar文件(不信你自己去查看這個模塊的Android.mk的目標吧,不多解釋)。運行完以後如果看到如下信息則說明編譯OK:
#### make completed successfully (7 seconds) ####
接著執行如下腳本:
development/tools/idegen/idegen.sh
這行命令的意思是在根目錄生成對應的android.ipr、android.iml IEDA工程配置文件。等待片刻得到類似如下信息說明OK:
Read excludes: 21ms
Traversed tree: 194799ms
通過如上操作我們就完成了基本的源碼配置工作。
5.2 使用Android Studio導入源碼工程
有了如上的這些操作以後,我們打開Android Studio,然後選擇打開一個現有的Android Studio項目,然後選擇打開源碼根目錄下的android.ipr文件,導入就行
5.3 加快AS讀取源碼速度
在打開android.ipr之後AS會花費一定的時間來讀取源碼,首次掃描源碼中所有的Source Folders的時候花費的時間比較長,尤其源碼存放在機械硬盤上的時候(完整掃描一次以後後續再打開就沒這麼慢了)。因為我們經常查看和編譯的源碼目錄為packages和framework等,所以我們可以僅保留需要的源碼文件夾不做設置,其他設為Excluded(請按需配置)。
在android根目錄上安快捷鍵F4(如果已經設為Eclipse快捷鍵方式則為F12)打開Module Setting
選中不需要掃描的目錄後點右上的Excluded(其中out和prebuilts目錄較大,建議選擇),完成以後效果如左側,文件夾顏色區分,紅色的即為排除在外的文件夾,AS將不掃描其中內容。 重新啟動AS,會發現掃描源碼目錄的時間大大縮減了。
5.4 配置AS的JDK和SDK
在上一步操作之後的等待期間剛好讓我們來配置一下JDK和SDK。
在IDE中參照下圖Project Structure設置,先在SDKs設置中加入必須的JDK,SDK。(可選)然後創建一個新的JDK,可以取名為1.8(No Libraries),然後刪除classpath標簽頁下面的jar文件。 這樣可以確保使用Android源碼裡的庫文件。
並將1.8(No Libraries)作為Android SDK要使用的Java SDK。如下圖
之後在Project標簽中的Project SDK中選擇對應的Android API版本
5.5 解決源碼中跳轉錯誤問題
1)確保在上一步中已為當前工程設置正確了SDK和JDK
2)設置’Modules’的依賴
先將所有依賴刪掉
點擊上圖中’+’並選擇’Jars or directories’選項,依次將frameworks和external文件夾添加進來.如:
如果代碼跳轉錯誤,請仿照上面的步驟將相應代碼的路徑或jar文件添加到其Dependencies標簽頁中即可。
在Android開發中,我們經常會需要在Android界面上彈出一些對話框,比如詢問用戶或者讓用戶選擇。這些功能我們叫它Android Dialog對話框,AlertDi
之前在使用iOS時,看到過一種分組的View,每一組都有一個Header,在上下滑動的時候,會有一個懸浮的Header,這種體驗覺得很不錯,請看下圖:上圖中標紅的1,2,
前言安卓中為了給用戶的友好提示,一般的表現形式為Dialog、PopWindow、Toast,自從Snackbar的出現絕對是秒殺Toast了,Snackbar不僅能夠簡
Android的廣告平台是很多的,各市場對各平台的接受程度是不一樣的,Android的開發者如果想集成廣告基本要考慮下面兩個問題:(1)集成什麼廣告,會賺錢?(2)集成什