android 源碼開發環境配置

通用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

  打开语言设置


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 syspee

  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

BTW,repo init 的时候出现password的时候,可能是相关文件的权限不对.[.ssh目录下]

配置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/XX/Tools/AndroidStudio/android-studio-sdk/android-sdk-linux/tools:/home/xx/Tools/AndroidStudio/android-studio-sdk/android-sdk-linux/platform-tools

  或者

export PATH=$PATH:/home/XX/AndroidDeveloper/adt-bundle-linux-x86_64-20140321/sdk/platform-tools:/home/xx/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

由于項目是从XX mirror server上下载代码,所以需要配置下载代码的位置。

打开~/.gitconfig文件,在最后添加下面的内容:

[url "ssh://[email protected]:22"]

insteadOf = ssh://xxxxxxxxxxxxxx

2. 修改hosts文件来访问zebra的原路径

使用sudo来编辑/etc/hosts文件,在文件末尾添加:

xxx.xx.xxx.xx ny21gitapp01.am.xxxx.com

xxx.xxx.xx.x git-mirror.xxxx.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.sh

会在根目录下面生成android.iprandroid.iml。 
android.ipr 一般保存了工程相关的设置,比如modules和modules libraries的路径,编译器配置,入口点等。 
android.iml 用来描述modules。它包括modules路径、 依赖关系,顺序设置等。一个项目可以包含多个 *.iml 文件。 
到这一步我们其实就可以导入到Android Studio里面去了。



过滤一些模块

如果把Android所有的源码全部导入到Android Studio里面去,工程将会非常大,而且会很耗时间,那么我们就可以把不需要的模块给过滤掉。

1.导入制定代码

这边导入速度会很慢,你可以根据自己需要,只导入需要的代码。

打开android.iml,代码很多,几千行。直接删除,然后添加下面的代码。

excludeFolder 是你不需要导入的代码目录

sourceFolder 是你需要导入的

Xml代码 

  1.   
  2.   
  3.     
  4.       
  5.         
  6.       
  7.     
  8.     
  9.     
  10.       
  11.       
  12.     
  13.         
  14.         
  15.         
  16.         
  17.         
  18.         
  19.         
  20.         
  21.         
  22.         
  23.         
  24.         
  25.         
  26.         
  27.         
  28.         
  29.         
  30.         
  31.         
  32.         
  33.         
  34.         
  35.         
  36.         
  37.         
  38.         
  39.         
  40.         
  41.         
  42.         
  43.         
  44.         
  45.         
  46.         
  47.         
  48.         
  49.         
  50.         
  51.         
  52.   
  53.   
  54.   
  55.   
  56.       
  57.       
  58.       
  59.       
  60.     
  61.   

这样我们就只导入了frameworkspackages的代码。

導入源代碼後, 跳轉到一個類的定義時, 發現出來的是一個.class文件.

A: 打開Project structure, Modules, android, 在Dependencies下面,將除了 和 Android API xx Platform的其他項刪除掉, 然後點擊右上角的+號, 選擇JARs or directories, 然後 將你源碼中的frameworks , packages等你需要跳轉的目錄添加進來,然後點擊OK就可以

7. 加載源碼後, 底部一直提示Scanning files to index: 按F4, 選擇Moduls -> android -> Android>Generated Sources , 不勾選 Generate sources automatically, 這時點擊OK的時候會提示找不到AndroidManifest.xml, 切到Structure標籤, 將Manifest file 中選擇到一個項目下的Manifest.xml即可, 例如 Settings目錄下的文件.

git一些指令:
 

git log
git status
git am 0002-BSPA-57880-Beast.patch
git reset -q 1a585df6df0d634905f73e96b38279adb59d05d0 --hard 硬回滚,清楚修改内容
git reset -q 1a585df6df0d634905f73e96b38279adb59d05d0 -- soft 软回滚,保留修改数据内容
git format-patch -2
git commit --amend
git commit --amend --author="Leif Tian/XXX/XXX"
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"

repo forall -c git status 查看目录下修改更新内容

6) git查看某个文件的修改历史

git log --pretty=oneline 文件名   // 僅列出此次提交的ID和message.

   

或者

 

git log –p -- 文件名   // 顯示信息較全面

這樣就可以列出此文件的所有更改歷史

然後根據前面的哈希ID就可以通過下面的命令查看某次提交

git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e

  在20.04上编译BSP时会报一些Error,解决方案如下:

#### hidl-gen compilation failed, check above errors ####

解决方法:

sudo apt-get install bison

sudo apt-get install -y bison build-essential ccache curl dpkg-dev flex g++-multilib gcc-multilib

sudo apt-get install -y gnupg gperf lib32ncurses5-dev lib32z-dev libc6-dev-i386 libesd0-dev libgl1-mesa-dev

sudo apt-get install -y libncurses5-dev:i386 libreadline6-dev:i386 libsdl1.2-dev libx11-dev libx11-dev:i386

sudo apt-get install -y libxml2-utils m4 tofrodos unzip x11proto-core-dev

sudo apt-get install -y xsltproc zip zlib1g-dev zlib1g-dev:i386

一般安装libesd0-dev时会出现问题,其解决办法如下

解决办法:

更新软件源并重新安装:

sudo apt-get update && sudo apt-get install libesd0-dev

error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

>>>>>>

使用ubuntu19.04编译Android源码的时候,报缺少libtinfo.so.5

解决方法

通过find命令查看,发现确实没有这个文件,默认已经升级到libinfo.so.6版本了,搜索发现重装个包就可以了

sudo apt-get install libncurses5

atal error: openssl/opensslv.h: No such file or directory

>>>>>>>

sudo apt-get install openssl

sudo apt-get install libssl-dev

你可能感兴趣的:(Android,应用,git,运维,移动开发)