Android ASOP/APP 开发环境配置 Linux

. 通用Android环境和工具配置

1. 系统更新升级

1、访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑(更新软件列表)

sudo apt-get update

2、会把本地已经安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新(更新软件)

sudo apt-get upgrade

2. 配置ntlmaps代理上网环境(本公司网络需要代理)

sudo apt-get update

sudo apt-get install ntlmaps

  Parent proxyxxxxx

  Parent proxy port8080

  NT Windows domainxxxx

  以后如果需要重新配置ntlmaps可以用下面命令:

sudo dpkg-reconfigure ntlmaps

3. 安装搜狗输入法

  下载Linux版搜狗输入法:搜狗输入法linux-首页

1、添加中文语言支持

打开系统设置——区域和语言——管理已安装的语言——在“语言”tab下——点击“添加或删除语言”

弹出“已安装语言”窗口,勾选中文(简体),点击应用

回到“语言支持”窗口,在键盘输入法系统中,选择“fcitx”

注:如果在键盘输入法系统中,没有“fcitx”选项时,建议先打开终端手动安装fcitx

sudo apt-get install fcitx

等安装成功之后再执行上述步骤

点击“应用到整个系统”,关闭整个系统,重启电脑

  2、通过命令行安装搜狗输入法:

sudo dkpg -i sougoupinyin_版本号_amd64.deb

注:如果安装过程中提示缺少相关依赖,则执行如下命令解决

sudo apt-get -f

3、注销计算机即可正常使用搜狗输入法

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 

  a. 配置repo

下载repo

mkdir ~/bin

->安装curl

sudo apt install curl # version 7.68.0-1ubuntu2.7

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

->给所有用户组添加执行权限

chmod a+x ~/bin/repo

配置环境变量(在/etc/profile或者~/.bashrc中添加如下,添加完成之后执行source /etc/profile或者source ~/.bashrc使配置生效)

export PATH=~/bin:$PATH

export REPO_URL=’https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’

注:repo是Android为了方便管理多个git库而开发的Python脚本。repo是通过一个git库来管理项目的清单文件的,这个git库叫manifests(项目清单库),描述了当前repo管理的所有信息。repo是一系列脚本的集合,这些脚本也是通过git库来维护的,这个git库叫repo(repo脚本库),repo对git命令进行了封装,提供了一套repo的命令集,所有repo管理的自动化实现也都包含在这个git库中。在客户端使用repo初始化一个项目时,就会从远程把manifests和repo拷贝到本地,对于开发人员来说是近乎无形的。

  b. 配置git

打开终端,安装git

sudo apt install git

配置git账号

git config --global user.name “git的用户名”

git config --global user.email “git的邮箱”

生成SSH密钥

ssh-keygen -t rsa -C “git的邮箱”

回车,密钥被保存在.ssh文件夹中,id_rsa是密钥,id_rsa.pub是公钥

登录Gerrit配置相关资料

登录gerrit后,点Settings->SSH Keys->ADD SSH key,复制id_rsa.pub中的内容到SSH key设置框中,然后点击Add Key导入密钥

注:SSH(Secure Shell)是由IETF制定的建立在应用层基础上的安全网络协议,专为远程登录会话和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。Git是目前世界上最先进的分布式版本控制系统。

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

uable to locate packge libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf build-essential

sudo apt-get install zip 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.因为拷贝过来的,所以要设置下权限  

sudo chmod -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

  如果此时仍识别不到设备,请重启你电脑。

五. 源码下载与编译

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

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


 

149.x.x.x. www.xxx..com

192.x.x.x.x www.xxx..com


 

注:hosts是主机名查询静态表,linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。

3. 下载源码

repo init xxx.xml [仅供参考]

repo sync -j16


 

Issue: 如果出现/usr/bin/env ‘python’:No such file or directory的错误,建立软链接

sudo ln -s /usr/bin/python2.7 /usr/bin/python

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.9.2.1/LINUX/android/

source build/envsetup.sh

lunch BOBCAT-userdebug (或者lunch BOBCAT-userdebug.GMS)

make –j16


 

注:source命令是用来将envsetup.sh里的所有用到的命令加载到环境变量中去。lunch命令是envsetup.sh里定义的一个命令,用来让用户选择编译项,来定义Product和编译过程中用到的全局变量,BOBCAT是定义的产品名称,userdebug是编译类型。


 

Issue1: 编译过程中出现error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory.

使用命令:

sudo apt-get install libncurses5


 

Issue2: 编译过程中出现 error linux/compiler-types.h: No such file or directory.

找到/usr/src/linux-headers-5.11.0.34-generic/include/linux/compiler_types.h文件,并复制到到/home/[新文件夹]/LA.UM.9.2.1/LINUX/android/kernel/msm-4.19/include/uapi/linux/文件夹下,并修改/home/[新文件夹]/LA.UM.9.2.1/LINUX/android/kernel/msm-4.19/gen_headers_arm.bp文件,添加内容:”linux/compiler_types.h”,对/home/[新文件夹]/LA.UM.9.2.1/LINUX/android/kernel/msm-4.19/gen_headers_arm64.bp文件做出同样的修改。

Issue3: 如果修改了根目录名,删除bootable文件夹,并执行”make clean”命令或者删除out文件夹,在根目录下执行命令”repo sync -j16”,最后再执行命令”make -j16”重新编译。

六. 导入源码

1. 修改Android Studio的配置文件

由于导入源码时需要消耗大量内存,所以建议修改studio64.vmoptions文件

-Xms1024m

-Xmx2048m

2. 生成导入到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.ipr和android.iml

android.ipr一般保存了工程相关的设置,比如modules和modules libraries的路径,编译器配置,入口点等。

android.iml用来描述modules。它包括modules路径、依赖关系,顺序设置等。一个项目可以包含多个*.iml文件。

注:

-mmm:编译指定目录下的模块,指定目录下要有Android.mk文件。

idegen: 要将Android系统源代码工程导入到Eclipse或者IntelliJ IDEA,关键是要有相应的工程配置文件。idegen 就是用来生成针对Eclipse和Android系统源代码工程配置文件的一个工具,它位于Android系统源代码工程目录下的下列位置:development/tools/idegen/。

3. 过滤一些模块

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

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

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

sourceFolder是你需要导入的

<?xml version="1.0" encoding="UTF-8"?>

<module version="4" relativePaths="true" type="JAVA_MODULE">

<component name="FacetManager">

<facet type="android" name="Android">

<configuration />

</facet>

</component>

<component name="ModuleRootManager" />

<component name="NewModuleRootManager" inherit-compiler-output="true">

<exclude-output />

<content url="file://$MODULE_DIR$">

<!--sourceFolder标签表示需要索引的代码目录-->

<sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/java" isTestSource="false" />

<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />

<!--excludeFolder标签表示这个目录下所有内容都不索引-->

<excludeFolder url="file://$MODULE_DIR$/.repo" />

<excludeFolder url="file://$MODULE_DIR$/abi" />

<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$/external/bluetooth" />

<excludeFolder url="file://$MODULE_DIR$/external/chromium" />

<excludeFolder url="file://$MODULE_DIR$/external/emma" />

<excludeFolder url="file://$MODULE_DIR$/external/icu4c" />

<excludeFolder url="file://$MODULE_DIR$/external/jdiff" />

<excludeFolder url="file://$MODULE_DIR$/external/webkit" />

<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />

<excludeFolder url="file://$MODULE_DIR$/frameworks/base/tests" />

<excludeFolder url="file://$MODULE_DIR$/frameworks/base/tools" />

<excludeFolder url="file://$MODULE_DIR$/hardware" />

<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$/prebuilt" />

<excludeFolder url="file://$MODULE_DIR$/sdk" />

<excludeFolder url="file://$MODULE_DIR$/tools" />

<excludeFolder url="file://$MODULE_DIR$/vendor" />

<excludeFolder url="file://$MODULE_DIR$/toolchain" />

<excludeFolder url="file://$MODULE_DIR$/system" />

<excludeFolder url="file://$MODULE_DIR$/prebuilts" />

<excludeFolder url="file://$MODULE_DIR$/disregard" />

<excludeFolder url="file://$MODULE_DIR$/kernel" />

<excludeFolder url="file://$MODULE_DIR$/shortcut-fe" />

<excludeFolder url="file://$MODULE_DIR$/test" />

</content>

<orderEntry type="sourceFolder" forTests="false" />

<orderEntry type="inheritedJdk" />

<orderEntryProperties />

</component>

</module>

打开Android Studio,点击File->Open,打开android.ipr文件

这样我们就只导入了frameworks和packages的代码。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值