nexus源码
㈠ 如何解决Maven依赖本地仓库eclipse报错的问题
一、应用场景
为了使用maven强大的包依赖管理和项目管理功能,故在项目中使用maven2作为项目建构工具。
但是我的项目在内网构建,为了能使用maven2,只能使用本地仓库依赖策略。
但是,有时候明明本地仓库确确实实存在相应的依赖包,但是在eclipse环境下依然会报错,即:在pom.xml显示错误提示信息。
经过我的实践证明,可以通过如下方式解决。
二、示例讲解
以依赖commons-io-2.0.1为例讲解:
在pom.xml中配置:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
三、解决方案
1、
首先,从其他可以在外网下载相应依赖包的地方下载好相应的依赖包到本地仓库,再将该本地仓库拷贝到项目相应位置,便于引用。
2、安装Maven2并进行相应配置,关于Maven2具体安装和配置,略过。
注意:在Maven2的配置文件setting.xml一定要修改如下属性:
<offline>true</offline>
该属性配置默认为false,因为是在内网,无法到外网下载依赖包,所以一定要配置离线属性为true。
3、如果本地仓库确实存在该依赖包,且eclipse没有报错,那么在本地仓库中找到该依赖包所在的位置,相应目录下必定存在如下6个文件:
_maven.repositories
commons-io-2.0.1.jar
commons-io-2.0.1.jar.sha1
commons-io-2.0.1.pom
commons-io-2.0.1.pom.sha1
m2e-lastUpdated.properties
依赖配置正确且eclipse没有报错时依赖包目录下包含的文件
当然,如下载了源码的话,应该还包括如下2个文件:
commons-io-2.0.1-sources.jar
commons-io-2.0.1-sources.jar.sha1
所以,如果当本地仓库中确实存在相应的依赖jar包,但是在eclipse中依然报错的话,请进入到相应依赖包的目录位置,观察该目录下是否对应存在如图1所示的6个文件。
通常情况下,当在eclipse中报错的话,在依赖包目录下还存在一个“xxx.lastUpdated”文件。
如果确实存在“xxx.lastUpdated”文件的话,请先删除该文件。并确认是否存在如下2个文件:
_maven.repositories
m2e-lastUpdated.properties
通常在eclipse中报错的话,是不会存在这2个文件的,到别的依赖正确的jar包目录下去拷贝这2个文件到当前目录下,并修改相应内容:
(1)、 修改“_maven.repositories”内容:
#NOTE: This is an internal implementation file,
its format can be changed without prior notice.
#Wed Jul 10 09:16:30 CST
2013
${artifactId}-${version}-sources.jar>nexus=
${artifactId}-${version}.jar>central=
${artifactId}-${version}.pom>central=
${artifactId}-${version}.pom>nexus=
${artifactId}-${version}.jar>nexus=
如:commons-io-2.0.1依赖包目录下的_maven.repositories文件内容如下:
#NOTE: This is an internal implementation file,
its format can be changed without prior notice.
#Wed Jul 10 09:16:30 CST
2013
commons-io-2.0.1-sources.jar>nexus=
commons-io-2.0.1.jar>central=
commons-io-2.0.1.pom>central=
commons-io-2.0.1.pom>nexus=
commons-io-2.0.1.jar>nexus=
(2)、 m2e-lastUpdated.properties文件内容可以不用修改!
完成后,在eclipse中clean一下项目,并执行“Maven->Update
Project...”,OK,问题解决!
㈡ android源码是适配nexus的吗
源程序代码是适配Visual Basic的。
在Visual Basic中的基本语句包括:
一、赋值语句。
赋值语句的语法如下:
变量名或对象.属性=表达式
它的含义是把等号右边的值赋给等号左边的值。
二、判定结构。
一、If语句。
用If...Then结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:
If condition Then statement
If condition Then
Statements
End If
Condition 通常是比较式,但它可以是任何计算数值的表达式。Visual Basic 将这个值解释为True或False:一个为零的数值为False,而任何非零数值都被看作True。若condition为True,则Visual Basic执行Then
关键字后面的所有statements。可以使用单行或多行语法有条件地执行一个语句。
注意:If...Then的单行格式不用End If语句。如果condition为True时要执行多行代码,则必须使用多行块If...Then...End If语法。
二、If...Then...Else语句。
用If...Then...Else块定义几个语句块,执行其中一个语句:
If condition1 Then
[statementblock-1]
[ElseIf condition2 Then
[statementblock-2]] ...
[Else
[statementblock-n]]
End If
Visual Basic首先测试condition1。如果它为False,Visual Basic就测试
condition2,依次类推,直到找到一个为True的条件。当它找到一个为
True的条件时,Visual Basic就会执行相应的语句块,然后执行End If后面的代码。作为一个选择,可以包含Else语句块,如果条件都不是True,则Visual Basic执行Else语句块。
If...Then…ElseIf只是If...Then...Else的一个特例。注意,可以使用任意数量的
ElseIf子句,或者一个也不用。可以有一个Else子句,而不管有没有ElseIf
子句。
二、循环语句。
电脑最擅长的就是不厌其烦地重复做一项工作成千上万遍(即重复执行几行代码),这就是通过循环结构来完成的。VB支持的循环结构有:Do…Loop和For…Next。
用Do循环重复执行一个语句块,且重复次数不定。Do…Loop是以计算数值为条件以决定是否继续执行。条件必须是一个数值或者值为True或False的表达式。
在下面的Do…Loop循环中,只要条件为真就执行循环。
Do While 循环条件
循环语句块
Loop
当Visual Basic执行到这个Do循环时首先测试条件,条件为假时,跳过所有语句。如果条件为真,Visual Basic就会执行语句,退回到Do While语句测试条件。只要条件为真,循环可以随意执行几次。如果条件一开始便为假,则不会执行语句。
还有一种Do…Loop语句,是先执行语句,每次执行之后测试条件,循环中的语句至少执行一次。
Do
循环语句块
Loop While 循环条件
在不知道循环要执行几次语句时,用Do循环,知道循环次数时,可以使用For…Next循环。For循环使用一个叫做计数器的变量,重复一次循环之后,计数器的值会增加或减少。
For 计数器=初值To终止值Step增量
循环语句块
Next 计数器
计数器、初值、终止值和增量为数值型。执行For循环时,设置计数器等于初值,测试计数器是否大于终止值,是则退出循环,执行循环语句,计数器增加增量后重复以上步骤。
用Exit语句可以退出For循环、Do循环,它的语法是Exit Do和Exit For,在循环中出现的次数无限制。
㈢ 如何修改android7.0源代码
在开发程序的过程中,少不了对源程序进行调试。下面介绍下如何在androidstudio中进行调试。工具/原料androidstudionexus7方法/步骤1、在androidstudio中新建默认的android应用app。2、点击菜单栏的“Run”->“”。3、然后会打开“ChooseProcess”窗口。选中要调试的进程,然后点击ok。4、console中会输出:ConnectedtothetargetVM,address:'localhost:8601',transport:'socket'。说明已经可以进行调试。5、在MainActivity的第14行打断点,然后运行程序,可以看到程序停在断点上。
㈣ Android 开发板有哪些如何选择
这里我只是给出我选购Android开发板的思路,供大家参考:
(1) 一定要支持比较新的Android版本
这里我把Android手机也算在Android开发板里面吧。目前,支持Android源码版本最好的手机/开发板应该就是Google的干儿子了(Nexus系列),官方最新源码编译好了就可以直接在上面跑了,唯一我觉得不太方便的就是手机的接口太有限,比如没有串口、有线网口、丰富的GPIO等等,调试和扩展起来比较受限。
如果不是购买官方源码支持的Android设备/开发板,那么你就需要开发板生产商提供对应的Android源码(其实主要是patch包),因此,我举得如果一个Android开发板只能提供Android 2.3版的源码,建议你就不用考虑了。
(2)最好选购比较热门的开发板
孤军奋战,遇到问题没人交流是最痛苦的事儿了,因此,我会比较看重那些社区比较完善和活跃、关注度和开发者比较多的开发板,这里比较推荐一些开源硬件,如树莓派,Beaglebone等等,国内国外都很火,不仅有很多大牛分享开发经验,而且遇到问题也很容易在社区搜到解决方案。
(3) 其他的综合考虑
对于我来说,上面两个因素是我最看重的,当然,也还有其他的可以参考的因素,比如:价格,文档资料,开发板的接口(串口、网络、USB OTG、HDMI等等),开发板的处理器厂商(TI?高通?Marvell?)开发板的性能(CPU、内存大小等)。
3. Android开发板推荐
根据上面我介绍的原则,我相信大家也很快能选中自己心仪的开发板,不过我相信肯定还是会有童鞋希望我能推荐一款,那么这里就给大家推荐我自己购买的开发板吧。
㈤ 如何使用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
㈥ 自己可以编译安卓源码吗
用最新的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内核问题,解决方法如下:
执行如下命令:
通过使用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 系统源码的
由于工作需要大量修改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
这里有最新资讯和最有趣的论坛.
想到了再补充.
㈧ 自己下载源码,编译出一个在手机上能用的Android系统,是不可能实现的吧
就是所谓的ADP机android developer phone(现在是Nexus One)是可以在google网站上下载到源代码,其他的手机就去手机厂商的开发者平台网站上去查找是否有对应源码,因为每个机子都有其对应的BSP,这些肯定得厂商提供
㈨ google官方源代码编译之后,可以直接运行在nexus机器上吗
或者换个问法,我下载了android 2.3的源代码,是不是可以自己编译之后,放到nexus机器里面,是能够运行起来的?
㈩ 有手机的源代码,如何编译安卓4.4的系统
代码编译…
恐怕这个不是随随便便在这里几句话就能说明白的…
首先要下载安卓4.4的内核,
然后要把厂商的手机源代码编译进去,
还要自己写脚本,
很多都是很技术的活。
lz确定能hold住么?