android 源碼開發環境配置

 

. 通用Android環境和工具配置

 

1. 系統更新升級

 

sudo apt-get update

 

sudo apt-get upgrade

 

2. 配置ntlmaps代理上網環境(本公司網絡需要代理)

 

sudo apt-get update

 

sudo apt-get install ntlmaps

 

  Parent proxycnkusisal

 

  Parent proxy port8080

 

  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

 

  打開語言設置

 

fcitx-config-gtk3

 

  如果沒有一個鍵盤,在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. 安裝wgetunrargitgitk等一堆小工具

 

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. 配置repogit 

 

  配置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.namegerrit上面的full nameemailgerrit上註冊的郵箱。

 

    以前電腦上沒有配置過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時你應該知道的一切配置

 

. adbUSB設置

 

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 後面的前 位即是 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/config1

  這個時候,只需要在.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
-Xmx1024m12

生成導入到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.sh1

會在根目錄下面生成android.iprandroid.iml
android.ipr 一般保存了工程相關的設置,比如modulesmodules 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

這樣我們就只導入了frameworkspackages的代碼。

導入源代碼後跳轉到一個類的定義時發現出來的是一個.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"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章