編輯:關於Android編程
准備:
一. Mac OS X(10.9.2)編譯環境設置
創建大小寫敏感的磁盤鏡像
可以通過磁盤管理工具進行設置,也可以通過以下命令生成鏡像文件
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg.sparsefile
生成分區之後,可以在~/.bash_profile中添加以下命令來加載分區
# mount the android file image function mountAndroid { hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android; }
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
由於首次同步需要下載 24GB 數據,過程中任何網絡故障都可能造成同步失敗,我們強烈建議您使用初始化包進行初始化。
由於所有代碼都是從隱藏的 .repo 目錄中 checkout 出來的,所以我們只保留了 .repo 目錄,下載後解壓 再 repo sync 一遍即可得到完整的目錄。
使用方法如下:
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包 tar xf aosp-latest.tar cd AOSP # 解壓得到的 AOSP 工程目錄 # 這時 ls 的話什麼也看不到,因為只有一個隱藏的 .repo 目錄 repo sync # 正常同步一遍即可得到完整目錄 # 或 repo sync -l 僅checkout代碼
$ cd ~/Desktop/android
$ source build/envsetup.sh
$ lunch target
注:target有以下可選:
1. aosp_arm-eng 2. aosp_arm64-eng 3. aosp_mips-eng 4. aosp_mips64-eng 5. aosp_x86-eng 6. aosp_x86_64-eng 7. aosp_deb-userdebug 8. aosp_flo-userdebug 9. full_fugu-userdebug 10. aosp_fugu-userdebug 11. mini_emulator_arm64-userdebug 12. m_e_arm-userdebug 13. mini_emulator_mips-userdebug 14. mini_emulator_x86-userdebug 15. mini_emulator_x86_64-userdebug 16. aosp_flounder-userdebug 17. aosp_angler-userdebug 18. aosp_bullhead-userdebug 19. aosp_hammerhead-userdebug 20. aosp_hammerhead_fp-userdebug 21. aosp_shamu-userdebug
make -j4 #-jN,N這個數字可以跟你的CPU實際情況而定。
android目錄底下會生成out文件夾,文件夾下:
報錯
Error: could not find jdk tools.jar at /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/../lib/tools.jar, please check if your JDK was installed correctly. Stop.
在~/.bash_profile文件中指定ANDROID_JAVA_HOME為JDK路徑即可。
export ANDROID_JAVA_HOME=${JAVA_HOME}
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
通過如上操作我們就完成了基本的源碼配置工作。
大家都知道使用Eclipse倒入源碼很慢,Android Studio導入源碼時也慢,所以建議修改android.iml文件(將自己不用的代碼去掉),然後再導入Studio。
就像下面摘取的android.iml文件1887行開始的這些一樣:
我們可以仿照上面這段代碼的寫法一樣過濾掉不需要的內容,這樣在導入時就會快很多。
也可以通過Android Studio的Project Stucture 打開左側Modules,然後將右側Sources中一些目錄Excluded掉。
有了如上的這些操作以後,我們打開Android Studio,然後選擇打開一個現有的Android Studio項目,然後選擇打開源碼根目錄下的android.ipr文件,然後出現如圖一樣的索引即可等待導入就行:tu
這裡寫圖片描述
到目前為止我們就可以方便的使用Android Studio查看源碼啦。如下圖所示:
這裡寫圖片描述
上圖我們看見了,可以通過Android Studio搜索整套源碼的代碼了。但是這時候如果你打開一個Service.java類,然後把鼠標放在其中任意方法的Intent參數上按住CTRL+鼠標左鍵跳轉到Intent類你會發現跳轉過去的是一個Intent.class文件,為啥呢?因為他跳轉的是你的默認SDK中的jar內部的class文件。既然要修改查看整套源碼,這麼跳轉得多蛋疼啊,所以我們需要配置讓其能跳轉到Intent.java文件,具體做法如下:
首先刪掉依賴中的所有依賴,只保留下圖中沒被選中的那兩個(當然你可以選擇保留一些你用到的其他jar),如下
接著點擊加號的JARs or directories將你源碼的frameworks及external和你用到的其他跳轉目錄添加到依賴中,然後apply即可。
這時候我們在像上面一樣打開Service.java跳轉Intent,你會發現像下圖一樣直接跳轉到你源碼路徑下的Intent.java文件了,如下:
MainActivity如下:package cc.testview4; import cc.testview4.SlideView.SwitchChangedList
學習一下人家100日寫100個網頁的做法,我也用100日寫100個完整的Android程序。 這些程序的最基本要求: 1 完整性-每個程序都必須是獨立可運行的 2 不重復
閒來無事,總結了兩個自定義的ProgressDialog,大家可以參考下,根據自己需要進行選擇修改:實現效果:示例1:示例2: 代碼如下:MainA
Android TextView 圓弧效果圖:布局代碼:<TextView android:id=@+id/product_tag