`
Leif_冬
  • 浏览: 46727 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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 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 "XXXX_XX@xxxx.com"

 

    上面配置的user.name是gerrit上面的full name,email是gerrit上注册的邮箱。

 

    以前电脑上没有配置过git的情况

 

    a. 创建SSH密钥

 

ssh-keygen -t rsa -C "XXXX_XX@xxxx.com"

 

      按回车保存到默认位置,再稍等出来提示输入密码短语,输完按回车要输两遍,它用来加密私钥,也就是以后使用私钥的时候要输这个密码;

 

      稍等出来提示成功,密钥存放在自己主文件夹的.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/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://gitolite@xxx.xxx.xx.x:22"]

insteadOf = ssh://xxxxxxxxxxxxxx

 

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

使用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.sh1

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

过滤一些模块

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

1.导入制定代码

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

打开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>

 

 

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

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

A: 打開Project structure, Modules, android, 在Dependencies下面,將除了<Module source> 和 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 format-patch -2
git commit --amend
git commit --amend --author="Leif Tian/XXX/XXX<xxxx@xxxxx.com>"
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

分享到:
评论

相关推荐

    Ubuntu中Android开发环境的搭建以及源码下载

    本文将详细介绍这一过程,包括VMware虚拟机中的Ubuntu安装、VMware Tools的安装、Android开发环境的配置以及Android源码的下载。 首先,我们来讨论如何在VMware虚拟机中安装Ubuntu 10.04。这个过程通常包括以下步骤...

    完整的 ubuntu android 源码环境搭建

    本文将详细介绍如何在 Ubuntu 10.04 操作系统上搭建基于 Eclipse IDE 的 Android 源码开发环境。整个过程分为几个步骤:获取源码、编译源码前的准备、编译工程、解决编译过程中可能出现的问题、配置 Eclipse 作为 ...

    怎样使用Eclipse来开发Android源码

    在开始使用Eclipse进行Android源码开发之前,我们需要做一些必要的准备工作: 1. **搭建Android开发环境**:确保已经安装了Java Development Kit (JDK) 和 Eclipse IDE,并且设置了正确的环境变量。 2. **获取...

    Android应用源码之1.Android开发环境搭建.zip

    总的来说,"Android应用源码之1.Android开发环境搭建.zip"这个资源将引导你完成从无到有的开发环境配置过程,从而让你能够顺利地开始Android应用的源码学习和开发工作。在实际操作中,遇到问题时,及时查阅文档、...

    Android应用源码之Android开发环境搭建.zip

    这份"Android应用源码之Android开发环境搭建.zip"文件显然包含了有关如何配置一个完整的Android开发环境的详细步骤和可能的源代码示例。下面将详细介绍这个过程,包括必要的工具、步骤以及一些关键知识点。 首先,...

    android源码开发实战15.03.zip

    2. **编译环境搭建**:在开始源码开发之前,我们需要配置一个完整的Android源码编译环境,包括安装必要的工具链,如Git、Java JDK、Android SDK、NDK以及Build-Prop工具等,还要设置环境变量,确保能成功编译源码。...

    搭建Android系统开发环境

    这通常涉及到下载Android源码、配置编译环境、执行编译脚本等一系列复杂步骤。编译完成后,还需要将生成的系统镜像固化到目标设备上,并进行一系列的调试和测试,确保系统稳定性和功能完整性。 #### 结论 搭建...

    Android开发环境搭建全程演示(jdk+eclip+android sdk)

    在Android应用开发中,搭建一个合适的开发环境是第一步。本文将详细介绍如何一步步配置Android开发环境,包括安装JDK、设置Eclipse以及获取和配置Android SDK。这个过程对于初学者至关重要,因为只有正确地搭建了...

    android源码开发实战19.20.zip

    2. **编译环境搭建**:在进行Android源码开发前,必须设置好构建环境,包括安装Linux操作系统(通常是Ubuntu),配置必要的工具链如Git、Java、Android SDK、NDK,以及获取并编译源码的repo工具。 3. **Kernel与HAL...

    《Android应用开发详解》源码

    《Android应用开发详解》源码,完整版,值得看一看。 《Android核心技术和开发...然后会向读者讲解如何搭建.Android的开发环境、如何在Eclipse中创建一个项目,以及如何使用Android平台提供的工具调试和监控应用程序。

    android源码开发实战11.10.zip

    2. **编译环境搭建**:在进行Android源码开发之前,需要设置Linux开发环境,安装必要的工具链,如Git、repo、Android SDK和NDK,以及配置编译环境变量,使用repo管理源码仓库。 3. **构建系统**:Android使用名为...

    android源码开发实战9.05.zip

    在Android源码开发实战9.05的资料中,我们可以深入探索Android操作系统的内部机制,了解如何基于Android 9.0 (Pie)进行定制和优化。Android源码开发是理解系统工作原理、改进性能和实现自定义功能的关键。以下是根据...

    Eclipse来开发Android源码

    在本文中,我们将深入探讨如何使用Eclipse这一强大的集成开发环境(IDE)来开发Android源码。Android SDK和Eclipse的结合为开发者提供了高效、便捷的开发体验。首先,我们需要确保拥有正确的开发环境。 **一、Android...

    android源码开发实战6.01.zip

    5. **编译环境搭建**:使用Android源码进行开发前,需要设置合适的开发环境,包括安装SDK、NDK、Git、JDK等工具,以及配置build system,如repo和makefile。 6. **编译流程**:理解mm、mmx、mmm等命令的作用,掌握...

    android源码开发实战4.05.zip

    《Android源码开发实战4.05》是针对Android系统源码进行深入研究的一本实践指南,涵盖了Android系统的各个核心组件和技术。通过学习这本书,开发者能够理解Android的内部工作机制,从而提升应用程序的性能和用户体验...

    QT5.14.2搭建Android开发环境测试项目源码

    这个项目源码是关于在Android平台上构建和运行QT应用程序的实例,它包含了搭建开发环境和创建基本QT应用所需的文件。让我们深入探讨一下这个过程中涉及的关键知识点。 1. **QT for Android**: QT为开发者提供了在...

    安卓Android源码——Android Launcher 源码修改可编译.zip

    3. **编译Android源码**:要编译Android源码,开发者需要搭建AOSP(Android Open Source Project)环境,安装必要的工具如Repo、JDK、NDK等,并执行make命令来构建系统。 4. **源码修改**:修改Android源码可能包括...

    android源码开发实战6.06.zip

    在Android源码开发实战6.06的课程中,我们深入探讨了Android系统的内部运作机制,以及如何基于源代码进行定制和优化。这个压缩包包含了丰富的资料,旨在帮助开发者提升在Android平台上的技能和理解。 首先,Android...

    android源码开发实战22.06.zip

    在Android源码开发实战22.06的课程中,我们深入探讨了Android系统的底层机制以及如何基于源码进行应用和系统级别的开发。这是一份针对Android开发者的高级教程,旨在提升开发者对Android操作系统的理解和定制能力。...

Global site tag (gtag.js) - Google Analytics