当前位置:首页 » 编程软件 » 编译nexus源码

编译nexus源码

发布时间: 2022-08-23 18:46:36

Ⅰ 大牛们是怎么阅读 Android 系统源码

由于工作需要大量修改framework代码, 在AOSP(Android Open Source Project)源码上花费了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行.
但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结.

知识
java
Java是AOSP的主要语言之一. 没得说, 必需熟练掌握.
熟练的Android App开发
linux
Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 12.04. 所以熟练的使用并了解Linux这个系统是必不可少的. 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发. 如果再深入到驱动层, 那么Kernel相关的知识也要具备.
Make
AOSP使用Make系统进行编译. 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的.
Git
AOSP使用git+repo进行源码管理. 这应该是程序员必备技能吧.
C++
Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现).

硬件
流畅的国际网络
AOSP代码下载需要你拥有一个流畅的国际网络. 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码. 另外, 好程序员应该都会需要一个流畅的Google.
一台运行Ubuntu 12.04的PC.
如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置.
一台Nexus设备
AOSP项目默认只支持Nexus系列设备. 没有也没关系, 你依然可以读代码. 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧.
高品质USB线
要刷机时线坏了, 没有更窝心的事儿了.
软件
Ubuntu 12.04
官方推荐, 没得选.
Oracle Java 1.6
注意不要用OpenJDK. 这是个坑, 官方文档虽然有写, 但还是单独提一下.
安装:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估计会有不少人吐槽, 为什么要用这个老古董. 其实原因很简单, 合适. 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最终结果还是Eclipse. 主要优点有:
有语法分析 (快速准确的类, 方法跳转).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等调试工具.
为了提高效率, 花5分钟背下常用快捷键非常非常值得.
调整好你的classpath, 不要导入无用的代码. 因为AOSP项目代码实在是太多了. 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃.
Intellij IDEA
开发App必备. 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了. Itellij IDEA的xml自动补全非常给力.
巨人的肩膀

这个一定要先读. 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里. 这是一切的基础.

这个其实是给App开发者看的. 但是里面也有不少关于系统机制的介绍, 值得细读.

此老罗非彼老罗. 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程. 你可以按照博客的时间顺序一篇篇挑需要的看.但这个系列的博客有些问题:
早期的博客是基于旧版本的Android;
大量的代码流程追踪. 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置.

邓凡平老师也是为Android大牛, 博客同样很有营养. 但是不像罗升阳老师的那么系统. 更多的是一些技术点的深入探讨.

Android官方Issue列表. 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录. 当然你可以提一些新的, 有没有人改就是另外一回事了.

一定要能流畅的使用这个工具. 大量的相关知识是没有人系统的总结的, 你需要自己搞定.
其它
代码组织
AOSP的编译单元不是和git项目一一对应的, 而是和Android.mk文件一一对应的. 善用mmm命令进行模块编译将节省你大量的时间.
Binder
这是Android最基础的进程间通讯. 在Application和System services之间大量使用. 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口. 这对你理解Android的Application和System services如何交互有非常重要的作用. Binder如何实现的倒不必着急看.
HAL
除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层.
CyanogenMod
这是一个基于AOSP的第三方Rom. 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西. 比如如何支持Nexus以外的设备.
DIA
这是一个Linux下画UML的工具, 能够帮你梳理看过的代码.
XDA

这里有最新资讯和最有趣的论坛.
想到了再补充.

Ⅱ 如何使用Eclipse调试Sonatype Nexus源代码

本文得到了国内Nexus大拿许晓斌老师的支持,首先在此感谢许老师的帮助。

在上一篇文章编译了Nexus源代码以后,这篇文章说明如何使用Eclipse在Nexus源代码中打断点并使用Eclipse捕捉。
该操作包括以下几步:
1. 正确安装部署Nexus并修改Nexus目录下的\bin\jsw\conf文件夹下的wrapper.conf文件
找到以下几行,全部取消注释。这里的8000表示的是Eclipse远程调试监听的端口。默认是8000。
#wrapper.java.additional.1=-Xdebug
#wrapper.java.additional.2=-Xnoagent
#wrapper.java.additional.3=-Djava.compiler=NONE
#wrapper.java.additional.4=-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#wrapper.java.additional.5=-XX:+HeapDumpOnOutOfMemoryError

2. 启动Nexus,这时Nexus会停在启动界面,如下图所示:

3. 启动Eclipse,并配置远程调试的监听,如下图所示:

4. 点击Debug即可。注意,这时Eclipse的debug界面可以看到线程不断增多,而cmd的控制台打印启动信息,稍等片刻即启动成功。如下几幅图所示:

线程会逐渐增多

命令行打印启动信息

启动完成!!

5. 试验一下,给MavenCoordinatesSearcher类的public boolean canHandle( final Map<String, String> terms )打个断点,然后页面使用GAV搜索junit,进断点了!!

参考资料:http://www.xuebuyuan.com/1372184.html

Ⅲ 倒影软件Nexus如何使用

创建maven工程,新建project,右键选择New Project,勾选快速创建选项,这个选项可以快速创建简单的maven工程。
项目创建成功后,项目目录主要有:主代码目录、主资源目录、测试代码目录、测试资源目录、输出目录(代码编译存放的目录)。添加项目依赖,查找项目依赖通常有两种方式:1. 直接在eclipse上查找,2. 在私服nexus上查找再复制依赖信息到pom.xml中。在eclipse中查找右键项目或pom.xml,输入关键信息查找,选中要引入的构件,点OK就可以自动引入。在nexus中查找依赖,打开nexus输入关键信息点击查找按钮,在搜索结果中找到对应的jar包,复制右下角的那段信息到pom.xml的dependencies下在MyEclipse上运行mvn命令,右键项目选择Run As--》Maven clean。mvn命令有很多,简单说明下比较常用的命令.
Nexus是Google公司的品牌,Nexus系列产品是Google公司研发的以原生Android为操作系统的智能手机、平板电脑等电子数码产品。同时,Nexus手机和平板电脑是Google为三星、LG、HTC、MOTO、ASUS等合作厂商提供的Android官方设计标准。

Ⅳ 如何编译生成xposedbridge

installer3.0版本之后,传统的xposed框架的使用方法是从官网上下载xposed installer.apk以及xposed-arm-sdk22.zip包。然后具体的使用方法是将xposed installer.apk安装到手机,然后在手机上进入recovery模式,将下载的xposed-arm-sdk22.zip刷入手机。完成之后xposed installer才可以正常使用。本文写了另一种xposed框架的使用办法:编译xposed源码,生成xposed相关的应用程序和so库等文件,然后将这些应用程序和so库文件集成到android系统中,重新打包生成镜像文件,烧入手机。
文档主要用于xposed源码的编译以及xposed的集成工作。在编译过程中,主要是通过Xposed Tools进行编译;在集成过程中,将xposed的编译之后生成的文件替换到android系统中,打包之后重新生成镜像文件,将镜像文件刷入到手机查看日志信息来判断是否成功。
由于在集成过程中是将xposed的编译生成文件打包到android5.1系统中重新生成镜像文件,然后将镜像文件烧入到nexus5手机,所以需要对android源码进行编译,并在执行lunch选择对应源码代号时选择nexus5对应的android源码代号。
环境配置

Ⅳ 自己可以编译安卓源码吗

用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:

sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”

其中[email protected]为你自己的邮箱.

简要说明

android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.

源码下载

由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)

repo工具下载及安装

通过执行以下命令实现repo工具的下载和安装

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:

我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:


这里写图片描述

执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.

错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)

    如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.

    结束吧

    到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.

    Ⅵ Android 源码编译后,怎么发布到真机

    刷机就可以了,不过你得先确定你编译的东西是针对你的真机的,简单点说就是你编译的东西,例如驱动必须是和你的真机所对应的硬件相匹配的。然后可以通过刷机工具或者直接直接系统升级就可以了。刷机工具和系统升级的方法步骤不一而足,基本都有使用操作指南。

    Ⅶ 自己下载源码,编译出一个在手机上能用的Android系统,是不可能实现的吧

    就是所谓的ADP机android developer phone(现在是Nexus One)是可以在google网站上下载到源代码,其他的手机就去手机厂商的开发者平台网站上去查找是否有对应源码,因为每个机子都有其对应的BSP,这些肯定得厂商提供

    Ⅷ 如何在android studio中调试源程序

    一、修改Android Studio(以下简称AS)的内存配置

    因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。

    二、配置AS的JDK、SDK

    在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件

    三、生成导入AS所需配置文件(*.ipr)

    ①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

    ②检查out/host/linux-x86/framework/目录下是否有idegen.jar

    如果idegen.jar不存在,执行:
    mmm development/tools/idegen/

    在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。

    我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。

    ③执行
    development/tools/idegen/idegen.sh

    等待出现类似下面的结果:
    Read excludes: 5ms
    Traversed tree: 44078ms

    这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ
    IDEA社区版开发的)的配置文件

    Tips:

    AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:

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

    这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.

    ④在AS中打开源码根目录下新生成的android.ipr

    如果在导入时AS出现

    则建议按照其给定的解决方法来解决

    四、解决源码中跳转错误问题

    ①为当前工程设置正确的SDK和JDK

    ②设置'Moles'的依赖

    先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.

    如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)

    点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or
    directories'选项,依次将frameworks和external文件夹添加进来.如:

    其它版本的代码在添加frameworks时可能会显示成:

    Ⅸ 有手机的源代码,如何编译安卓4.4的系统

    代码编译…
    恐怕这个不是随随便便在这里几句话就能说明白的…
    首先要下载安卓4.4的内核,
    然后要把厂商的手机源代码编译进去,
    还要自己写脚本
    很多都是很技术的活。
    lz确定能hold住么?

    Ⅹ 如何在myeclipse中使用nexus

    方法/步骤

    1
    创建maven工程,新建project,右键选择New Project,勾选快速创建选项,这个选项可以快速创建简单的maven工程。

    2
    项目创建成功后,项目目录主要有:主代码目录、主资源目录、测试代码目录、测试资源目录、输出目录(代码编译存放的目录)。

    3
    添加项目依赖,查找项目依赖通常有两种方式:1. 直接在eclipse上查找,2. 在私服nexus上查找再复制依赖信息到pom.xml中。在eclipse中查找右键项目或pom.xml,输入关键信息查找,选中要引入的构件,点OK就可以自动引入。

    4
    在nexus中查找依赖,打开nexus输入关键信息点击查找按钮,在搜索结果中找到对应的jar包,复制右下角的那段信息到pom.xml的dependencies下,如图所示。

    5
    在MyEclipse上运行mvn命令,右键项目选择Run As--》Maven clean。mvn命令有很多,简单说明下比较常用的命令:
    1. clean 用于清理输出目录target/
    2. compile用于编译项目主代码
    3. test 用于编译运行测试代码
    4. package 接受编译好的代码,打包成可发布的模式
    5. install 将包安装到maven本地仓库
    6. Deploy将最终的包复制到远程仓库
    执行以上命令时,clean是不会自动执行的,因为clean和其他5个命令是不同的生命周期,因此需要使用组合命令。

    6
    在MyEclipse中运行组合命令,右键项目选择Run As--》Maven build...

    7
    前面介绍了怎么运行一些命令,现在讲下怎么样运行实例。在主代码目录和测试目录上添加代码。

    8
    运行命令clean install,运行结果如图所示,从结果可以看到,命令运行成功,运行了一次测试并且运行通过,同时,将jar打包到项目的target目录下,也安装到maven的的本地仓库上了。

    9
    将jar包部署到私服nexus上,在pom.xml中添加一些配置,最后发布运行命令
    clean deploy,发布后可以到私服nexus查找有没有刚刚部署的jar包

    http://jingyan..com/article/fd8044facb9bc85031137a91.html

    热点内容
    加密狗是啥 发布:2025-02-06 03:48:03 浏览:552
    phpcopy文件 发布:2025-02-06 03:41:26 浏览:410
    系统配置页面怎么设置 发布:2025-02-06 03:36:34 浏览:693
    家庭电脑搭建流媒体服务器 发布:2025-02-06 03:19:02 浏览:342
    matlab稀疏矩阵存储 发布:2025-02-06 03:07:54 浏览:838
    国际服2b2t服务器地址 发布:2025-02-06 03:06:28 浏览:390
    c语言输出b 发布:2025-02-06 03:06:27 浏览:31
    普通火车wifi密码多少 发布:2025-02-06 03:04:20 浏览:436
    可编程监控 发布:2025-02-06 03:03:33 浏览:645
    c语言取随机数 发布:2025-02-06 02:46:57 浏览:863