一. 通用Android環境和工具配置
1. 系統更新升級
sudo apt-get update
sudo apt-get upgrade
2. 配置ntlmaps代理上網環境(本公司網絡需要代理)
sudo apt-get update
sudo apt-get install ntlmaps
Parent proxy:cnkusisal
Parent proxy port:8080
NT Windows domain:xxxcn
以後如果需要重新配置ntlmaps可以用下面命令:
sudo dpkg-reconfigure ntlmaps
3. 安裝搜狗輸入法
下載Linux版搜狗輸入法:http://pinyin.sogou.com/linux/
安裝輸入法:
sudo apt-get install -f
sudo dpkg -i sogoupinyin_2.0.0.0072_amd64.deb
打開語言設置
如果沒有一個鍵盤,在Addon中全部勾選,重啓
按+,不要勾選“Only ... ...”,選擇搜狗,重啓
4. 安裝VIM文本編輯器
sudo apt-get install vim
5. 安裝其他工具
a. 安裝系統狀態監測Syspeek
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install syspeek
b. 安裝wget,unrar,git,gitk等一堆小工具
sudo apt-get install -y wget schedtool pngcrush
sudo apt-get install -y nautilus-open-terminal unrar meld ghex gtk-recordmydesktop gitk
c. 安裝Google瀏覽器
不喜歡Firefox,可以安裝Google瀏覽器。
在Software center裏面搜不到Google Chrome,不過可以安裝Chromium。
6. 配置repo和git
配置repo
將保存的repo 文件放在~/bin/下面, bin 文件夾不存在,請先行創建,執行
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin
配置git
以前電腦上配置過git的情況,把.ssh文件夾拷到本機Home下面,配置git config:
創建 ~/.ssh/config,打開輸入下面內容並保存
Host git-01.wxxx.com
User XXXXX_XX
Port 29418
配置git config信息:
git config --global user.name "XXXX XX/xxx/Wxxx"
git config --global user.email "[email protected]"
上面配置的user.name是gerrit上面的full name,email是gerrit上註冊的郵箱。
以前電腦上沒有配置過git的情況
a. 創建SSH密鑰
ssh-keygen -t rsa -C "[email protected]"
按回車保存到默認位置,再稍等出來提示輸入密碼短語,輸完按回車要輸兩遍,它用來加密私鑰,也就是以後使用私鑰的時候要輸這個密碼;
稍等出來提示成功,密鑰存放在自己主文件夾的.ssh文件夾中
打開文件管理器,顯示隱藏文件後,可以看到這個文件夾中有兩個文件,一個私鑰一個公鑰,把這個文件夾備份一下.id_rsa 是密鑰,id_rsa.pub是公鑰。
b. 登錄gerrit配置相關資料
登錄gerrit後,點右上角設置,在設置頁面右邊找到SSH Keys,點擊ADD SSH key。
到剛纔的.ssh文件夾中,雙擊打開自己的公鑰文件id_rsa.pub,複製裏面的所有內容,然後粘貼到SSH key設置框中,然後點下邊的“Add Key”導入密鑰;
c. 按照上面其他電腦配置過的步驟,設置git config
7. 安裝配置OpenJDK8
sudo apt-get update
sudo apt-get install openjdk-8-jdk
二. 配置Android源碼編譯環境
sudo apt-get update
1. 安裝Google官網提供的編譯庫
sudo apt-get install bison g++-multilib git gperf libxml2-utils
2. 安裝其他編譯需要的內容
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get installzip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt-get install libssl-dev
三. 配置Android app開發環境
1. 安裝配置Android Studio
拷貝保存的Android Studio軟件包
或者下載Android Studio http://www.androiddevtools.cn/
具體Android Studio的配置和使用方法可以參考下面網址:
第一次使用Android Studio時你應該知道的一切配置
四. adb和USB設置
1. 設置adb環境變量
adb工具位於SDK目錄下的platform-tools中
a.因爲拷貝過來的,所以要設置下權限
sudochmod -R a+x Tools/AndroidStudio/android-studio-sdk/
b. 編輯profile文件設置環境變量
sudo gedit /etc/profile
加上下面(可以用android studio也可以用eclipse)路徑要用自己的路徑
export PATH=$PATH:/home/kunkka/Tools/AndroidStudio/android-studio-sdk/android-sdk-linux/tools:/home/kunkka/Tools/AndroidStudio/android-studio-sdk/android-sdk-linux/platform-tools
或者
export PATH=$PATH:/home/kunkka/AndroidDeveloper/adt-bundle-linux-x86_64-20140321/sdk/platform-tools:/home/kunkka/AndroidDeveloper/adt-bundle-linux-x86_64-20140321/sdk/tools
2. Android設備USB設置
如果識別不到android設備,需要設置一下USB配置
將保存的 51-android.rules 拷貝到 /etc/udev/rules.d/ 下面
將保存的adb_usb.ini 拷貝到 ~/.android/ 下面
對於新設備,如果 vid 沒包含在上面的文件中,請做下面的操作。
a. 先通過 lsusb 命令得到新設備的 vendor id, ID 後面的前 4 位即是 vid.
b. 打開編輯51-android.rules
sudo gedit /etc/udev/rules.d/51-android.rules
然後在文件末尾添加
SUBSYSTEM=="usb", ATTRS{idVendor}=="05E0", MODE="0666"
紅色字體即是第一步得到的 vid.
c. 執行
sudo service udev restart
或
sudo /etc/init.d/udev restart
d. 打開編輯adb_usb.ini
sudo gedit ~/.android/adb_usb.ini
然後在文件末尾添加0x05E0,同樣,紅色字體即是第一步得到的 vid.
e. 執行
adb kill-server
f. 執行
adb devices
如果此時仍識別不到設備,請重啓你電腦。
五. 源碼下載與編譯
1. 配置gitconfig
由於項目是從臺北mirror server上下載代碼,所以需要配置下載代碼的位置。
打開~/.gitconfig文件,在最後添加下面的內容:
[url "ssh://[email protected]:22"]
insteadOf = ssh://xxxxxxxxxxxxxx
2. 修改hosts文件來訪問zebra的原路徑
使用sudo來編輯/etc/hosts文件,在文件末尾添加:
xxx.xx.xxx.xx ny21gitapp01.am.mot-solutions.com
xxx.xxx.xx.x git-mirror.wistron.com
3. 下載源碼
使用下面的命令來從mirror server上下載源碼:
mkdir beast
cd beast
repo init --reference=/build/mirror -u ssh://xxxxx.xx.xxxx:29418/ZEUS/manifest -b sdm660-android-o -m bigboard-bringup-o.xml
repo sync
***************************************************************************
當我們在自己的服務器上搭建Git遠程倉庫,並讓本地關聯到遠程倉庫的時候,我們需要寫一個config來讓本地可以關聯到非80端口的遠程倉庫。
config文件如下:
Host "IP"
Port "port"
12
在執行git fetch的時候,出現以下錯誤:
Bad owner or permissions on /home/haowt/.ssh/config
1
這個時候,只需要在.ssh目錄,執行以下命令行:
sudo chmod 600 config
/*git push caf HEAD:refs/for/xxxxxxx*/
4. 8G及以下內存的電腦編譯問題
在android/prebuilts/sdk/tools/jack-admin文件中,搜索到JACK_SERVER_VM_ARGUMENTS關鍵字的兩個位置,只加上下面 -Xmx3g
JACK_HOME="${JACK_HOME:=$HOME/.jack-server}"
CLIENT_SETTING="${CLIENT_SETTING:=$HOME/.jack-settings}"
TMPDIR=${TMPDIR:=/tmp}
JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx3g}"
JACK_EXTRA_CURL_OPTIONS=${JACK_EXTRA_CURL_OPTIONS:=}
…….
if [ "$RUNNING" = 0 ]; then
echo "Server is already running"
else
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx3g-cp $LAUNCHER_JAR $LAUNCHER_NAME"
5. 編譯源碼
使用下面的命令來編譯源碼:
cd LA.UM.6.2/LINUX/android/
source build/envsetup.sh
lunch sdm660_64-userdebug
make –j4
導入源碼
修改Android Studio的配置文件
由於導入源碼時需要消耗大量內存,所以建議修改studio64.vmoptions
文件:
-Xms1024m
-Xmx1024m
12
生成導入到Android Studio所需的配置文件
首先要編譯一次源碼,然後看有沒有out/host/linux-x86/framework/idegen.jar
如果沒有的話就執行一下下面的命令,生成out/host/linux-x86/framework/idegen.jar
:
source build/envsetup.sh
lunch xxxxx
mmm development/tools/idegen/
然後執行一下下面的命令:
development/tools/idegen/idegen.sh
1
會在根目錄下面生成android.ipr
和android.iml
。 android.ipr
一般保存了工程相關的設置,比如modules和modules libraries的路徑,編譯器配置,入口點等。 android.iml
用來描述modules。它包括modules路徑、 依賴關係,順序設置等。一個項目可以包含多個 *.iml 文件。
到這一步我們其實就可以導入到Android Studio裏面去了。
過濾一些模塊
如果把Android所有的源碼全部導入到Android Studio裏面去,工程將會非常大,而且會很耗時間,那麼我們就可以把不需要的模塊給過濾掉。
打開android.iml
文件,加入以下代碼,修改excludeFolder
的配置:
<excludeFolder url="file://$MODULE_DIR$/.repo"/>
<excludeFolder url="file://$MODULE_DIR$/abi"/>
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
<excludeFolder url="file://$MODULE_DIR$/art"/>
<excludeFolder url="file://$MODULE_DIR$/bionic"/>
<excludeFolder url="file://$MODULE_DIR$/bootable"/>
<excludeFolder url="file://$MODULE_DIR$/build"/>
<excludeFolder url="file://$MODULE_DIR$/cts"/>
<excludeFolder url="file://$MODULE_DIR$/dalvik"/>
<excludeFolder url="file://$MODULE_DIR$/developers"/>
<excludeFolder url="file://$MODULE_DIR$/development"/>
<excludeFolder url="file://$MODULE_DIR$/device"/>
<excludeFolder url="file://$MODULE_DIR$/docs"/>
<excludeFolder url="file://$MODULE_DIR$/external"/>
<excludeFolder url="file://$MODULE_DIR$/hardware"/>
<excludeFolder url="file://$MODULE_DIR$/kernel-3.18"/>
<excludeFolder url="file://$MODULE_DIR$/libcore"/>
<excludeFolder url="file://$MODULE_DIR$/libnativehelper"/>
<excludeFolder url="file://$MODULE_DIR$/ndk"/>
<excludeFolder url="file://$MODULE_DIR$/out"/>
<excludeFolder url="file://$MODULE_DIR$/pdk"/>
<excludeFolder url="file://$MODULE_DIR$/platform_testing"/>
<excludeFolder url="file://$MODULE_DIR$/prebuilts"/>
<excludeFolder url="file://$MODULE_DIR$/rc_projects"/>
<excludeFolder url="file://$MODULE_DIR$/sdk"/>
<excludeFolder url="file://$MODULE_DIR$/system"/>
<excludeFolder url="file://$MODULE_DIR$/tools"/>
<excludeFolder url="file://$MODULE_DIR$/trusty"/>
<excludeFolder url="file://$MODULE_DIR$/vendor"/>
1234567891011121314151617181920212223242526272829
這樣我們就只導入了frameworks
和packages
的代碼。
導入源代碼後, 跳轉到一個類的定義時, 發現出來的是一個.class文件.
A: 打開Project structure, Modules, android, 在Dependencies下面,將除了<Module source> 和 Android API xx Platform的其他項刪除掉, 然後點擊右上角的+號, 選擇JARs or directories, 然後 將你源碼中的frameworks , packages等你需要跳轉的目錄添加進來,然後點擊OK就可以了.
git一些指令:
git log
git status
git am 0002-BSPA-57880-Beast.patch
git reset -q 1a585df6df0d634905f73e96b38279adb59d05d0 --hard
git format-patch -2
git commit --amend
git commit --amend --author="Leif Tian/XXX/XXX<[email protected]>"
git rebase -i 9d80c0977f629161b23d87ddacddcc1dde60166d
git rebase --abort
git am --abort
git am –skip
git stash:清除增加的內容
git clean -f -d:清除修改的內容 git checkout xx.java
grep -R --include="*.java" "com.zebra.ethernet.intent.INTERFACE_UPDATED"