當前位置:首頁 » 編程軟體 » 編譯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

    熱點內容
    c語言breakcontinue 發布:2025-03-18 02:52:41 瀏覽:161
    伺服器雲主機改成雲電腦 發布:2025-03-18 02:46:11 瀏覽:422
    php環境的搭建 發布:2025-03-18 02:44:47 瀏覽:489
    java實現文件上傳到ftp 發布:2025-03-18 02:43:25 瀏覽:401
    編程出遊戲 發布:2025-03-18 02:43:15 瀏覽:178
    使用公網ip搭建伺服器 發布:2025-03-18 02:34:23 瀏覽:215
    android從程序員到架構師之路 發布:2025-03-18 02:32:52 瀏覽:298
    高壓存儲罐 發布:2025-03-18 02:23:18 瀏覽:760
    加密卡怎麼模擬 發布:2025-03-18 02:02:08 瀏覽:271
    我的世界伺服器水桶搭建 發布:2025-03-18 02:01:21 瀏覽:334