❶ android Studio 3.5導入AOSP編譯的classes.jar
一、適用場景
我們在寫應用時可能會需要調用系統隱藏的API,這些API是我們無法直接訪問的,報如下錯誤:
此時,我們需要將系統AOSP的out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar導入到Android Studio中,使app能夠訪問這些介面。
二、實現步驟
Step1 . 在app目錄下建立libs文件夾,並將classes.jar包放入該路徑
Step2 .在app目錄上右鍵【Open Mole Settings】,點擊左側【Dependencies】,選擇app,點擊【+】選擇【2 Jar Dependency】,添加
選擇我們的libs/classes.jar,點擊【OK】
Step3 .在Mole的build.gradle中,dependencies自動增加依賴配置,注釋掉下面一行
implementation fileTree(dir: 'libs', include: ['*.jar'])
並將implementation files('libs/classes.jar')改為
compileOnly files('libs/classes.jar')
最終如下圖所示
Step4 .修改Project的build.gradle,在allProjects中增加如下語句
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\classes.jar')
}
}
Step5 .修改jar包優先順序,在Moels的app.iml文件中找到我們的classes.jar包所在行,
<orderEntry type="library" name="Gradle: __local_aars__:/Users/mrwong/AndroidStudioProjects/uart_daemon/app/libs/classes.jar:unspecified@jar" level="project" />
將其移動到
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
這一行之上,最終如下圖所示:
至此,app可以優先訪問我們自己的jar包 。
❷ 鴻蒙抄襲安卓看這一篇就夠了
01
什麼是 AOSP ?
很多人都說鴻蒙是 AOSP 套殼,那麼我們首先得明白什麼是 AOSP?
AOSP 是"Android Open Source Project"的縮寫,中文意為"安卓開放源代碼項目", AOSP 是基於 linux 開的。
AOSP 是由谷歌主導的一個開源項目,通過 AOSP 可以編譯出一個比較純凈的,可以用於智能設備的操作系統。
而 Android,尤其是首字母 A 大寫的時候,是屬於谷歌的一個商標,不屬於 AOSP 所有,未經允許不能隨意在商業產品中使用。
Android 系統是開源的 AOSP 和額外的閉源部分(其中包括 GMS )的組合而成,所以可以認為 Android=AOSP+GMS 。
網友有一個通俗的比喻: AOSP 是個毛坯房,Android 是個精裝房 。
由於 AOSP 是開源的,一些第三方機構就可以以 AOSP 為基礎,做出自己的改進,並對不同機型適配,然後自己取一個名字。
比如小米的 MIUI、華為的 EMUI、或者魅族的 Flyme。
02
什麼是鴻蒙?
鴻蒙是一個面向全場景的分布式操作系統,蒙是基於微內核的全場景分布式操作系統,目前華為已經將鴻蒙捐獻給了 開放原子開源基金會 。
有人說鴻蒙是基於 2012 年華為的 LiteOS 開發而來,LiteOS 是輕量級物聯網操作系統,目前也以及完全開源。
從客觀上來講,鴻蒙肯定借鑒了 LiteOS 開發中所積累的經驗,所以 華為鴻蒙OS 算是 LiteOS 的一個發展產物 ,但它們是兩款完全不同的操作系統。
這里還需要和大家明確,區分一個概念,說實話如果不是為了給大家寫這篇文章,查了很多資料,不然我也混淆的。
Openharmony 和 HarmonyOS(鴻蒙操作系統) 是兩個完全不同的概念!
HarmonyOS 是華為研發的面向萬物互聯時代的全新的、獨立的智能終端操作系統,為不同設備的智能化、互聯與協同提供統一的語言。
華為把 HarmonyOS 中基礎功能提取出來,打包成功一個項目叫做:Openharmony ,把 Openharmony 捐獻給原子開源基金會。
華為這次發布的 HarmonyOS 2 是華為基於開源項目 OpenHarmony 2.0 開發的面向多種全場景智能設備的商用版本。
OpenHarmony 是華為主要貢獻的,不屬於華為,屬於開源組織;而 HarmonyOS 是華為的商業系統,屬於華為擁有。
03
國產廠商為什麼不跟進?
大家如果明白上面這兩個概念的區別之後,就應該很容易明白,為什麼國內廠商沒有跟進鴻蒙?
上面說的有點繞,做一個簡單的比喻大家應該就明白了:
HarmonyOS 2 = Openharmony 2 + 華為的 EMUI + 兼容安卓部分
根據這個公式,我們可以回答好幾個問題:
1、Openharmony 是不兼容安卓的,也沒有什麼 AOSP 的事情,是一個純正、獨立的開源操作系統。
2、 HarmonyOS 2 是不開源的,是華為基於 Openharmony 2 開發的一個商業版本。
為了兼容安卓應用,必定使用了一些 AOSP 的內容,同時華為是不可能將 EMUI 開放給同行的,所以同行廠商沒辦法直接使用 HarmonyOS 2 。
3、如果讓國內同行都兼容鴻蒙的話,他們需要做的工作是:基於 Openharmony 2 開發自己的 UI。
比如 MIUI + 兼容以前應用,工作量巨大,可能不是一時半會就可以搞定,同時他們還需要考慮谷歌在國外對他們制裁的風險。
可以套用上面的比如: Openharmony 2 是個毛坯房,而 HarmonyOS 2 是個精裝房。
而小米OV等廠商要使用鴻蒙,至少需要他們自己來裝修吧,全部用 HarmonyOS 2 ,大家體驗完全一致沒有差異化,也沒有什麼意思。
並且,小米OV他們肯定也不會放棄自己的 MUUI、Flyme,因為這是他們的核心競爭力和收入來源呀。
說實話,現在硬要小米、VIVO、OPPO等支持鴻蒙,也有一點強人所難,可能需要有一個過程慢慢來准備吧。
❸ CnetOS編譯AOSP不明原因失敗
ROOT獲得最高許可權是刪除這些應用的唯一途徑 實際手動操作的流程非常復雜,並且有版本限制 我推薦你款不錯的手機ROOT工具吧, 我一直都是在用的,很不錯 使用應用寶獲取手機root許可權在工具 選項里找到一鍵ROOT即可或者KINGROOT也行。
❹ aosp系統怎麼樣
AOSP 全名為 Android Open-Source Project,中文為安卓開源項目,開源即開放源代碼!Android 是一個基於 Linux 的、由 Google 主導的開源系統。嚴格意義上來說,Android=AOSP+GMS,那麼這個GMS又是什麼呢?GMS 全名為 Google Mobile Service,即谷歌移動服務,也就是我們常刷的谷歌服務包。由於你懂的原因,國內無法使用 GMS,所以國內的各種定製 ROM 都是 AOSP 的定製修改加上自家的雲服務,比如 MIUI、ColorOS 等!所以,所有的 ROM 最終的根源就是 AOSP,沒有AOSP,也就沒有現在的 Androi關於 CM,全名為 CyanogenMod,全球最大的第三方 ROM 編譯團隊。CM 是基於 AOSP 進行二次開發,在 AOSP 的基礎上添加功能、適配更多機型、編寫眾多機型的內核和驅動!CM 是在底層多 AOSP 進行改進,並且遵循 Android 設計規范,所以 UI 與交互方面,與 AOSP 保持一致,所以很多人說的CM的UI應該
❺ Android在Ubuntu下編譯完整aosp需要多少硬碟空間
6.0以後的AOSP我沒編譯過,不太了解需要多大空間。
不過5.1.1我倒是編過,你可以參考一下:mac編譯aosp的配置需求? - 知乎用戶的回答
編譯完了,大概佔用了60G,6.0可能會更大一些。
像你列舉的250G等容量的硬碟,用來編AOSP,容量上是綽綽有餘的。其實如果經濟上允許,推薦你選擇一個SSD,對於編譯速度的提升,效果顯著。
❻ 自己可以編譯安卓源碼嗎
用最新的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 AOSP代碼與編譯伺服器系統時間有關系嗎
起因:aosp由許多項目組成,android4.2就有329個project,每個項目都是一個獨立的git倉庫。
Repo:創建一個aosp分支來做feature開發就需要每一個子項目創建對應的分支,手動創建很費力,所以有了Repo,自動化處理。Repoz自動化體現在創建分支,查看分支狀態,提交代碼,更新代碼。
Repo實際由Python腳本組成,Python腳本通過調用Git完成自己的功能。組成Repo工具的Python腳本本身也是一個Git倉庫。這個Git倉庫在aosp裡面,焦作Repo倉庫。每次執行Repo命令的時候了,Repo就進行一次更新。
Manifest倉庫:Repo是用來自動化處理aosp子項目的倉庫的,子項目名稱,倉庫地址,aosp又是不斷迭代變化的,每個版本子項目都不一樣,就需要另外一個倉庫來管理aosp所有子項目的倉庫元信息。就是Manifest倉庫
Repo腳本: