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住么?