簡體   English   中英

如何將AOSP應用程序(啟動器,聯系人......)導入Android-Studio?

[英]How to import the AOSP apps (launcher, contacts,…) into Android-Studio?

背景

Google在這里有一個適用於所有AOSP應用的網站 ,其中包括其啟動器,聯系人等...

問題

我想知道如何導入這些應用程序。 更具體地說, 發射器聯系人應用程序(雖然我也想了解其他人)。

事情是,它不是那么簡單。 你不能只導入克隆的項目,就是這樣。 即使您使用Eclipse(這似乎是這些存儲庫中使用的官方工具,根據文件夾hirerchy),它也不會那么容易。

我發現了什么

我發現了一篇關於如何導入啟動器(版本4.4.x)的舊文章 ,但它使用的是Eclipse,我認為需要Linux來構建一些文件。

我試圖使用Eclipse導入,但由於某種原因,我無法使用工作的“protobuf”庫。 我試過從這里使用一個jar,但它沒有成功導入它。

還有一個不錯的第三方庫 ,它有一個導入版本的啟動器應用程序,但目前它有點落后,因為它基於Kitkat(4.4)而不是Lollipop(5.0)。

這個問題

你如何進口這些項目? 有一個簡單的方法嗎? 它甚至可以在Windows操作系統和Android Studio上運行嗎?

你如何進口這些項目?

你只需克隆他們的git存儲庫。 然而,編譯它們的唯一方法是將所有AOSP項目放在一起。

試圖在沒有它的情況下編譯應用程序是不可能的,因為丑陋的混合:

1.與AOSP其他項目的依賴關系

2.使用常規應用程序無法使用的隱藏API(這些應用程序設計為具有其他API的系統應用程序)。 這些APIS甚至不存在於SDK中。

3.使用不能與Gradle甚至eclipse插件一起使用的黑客Android.mk系統。

有一個簡單的方法嗎?

不是。對於Launcher來說,它的幾天工作,對於Contacts來說,它更容易從頭開始。

它甚至可以在Windows操作系統和Android Studio上運行嗎?

不是沒有很多努力。

還有一件事,您在Nexus設備中看到的應用程序不是編譯從Google網站下載的代碼的結果。 他們的應用程序經歷了許多補丁周期和QA,而您將編譯的內容導致需要大量維護的非常錯誤的產品。

我的建議是尋找真正的開源應用程序,而不是依賴谷歌的善意。

這是另一種方法。 AOSP應用程序旨在“本機”,首先你應該想一想,這意味着什么? 這實際上意味着它們是在主要AOSP目錄上進行envsetup和午餐后通過'mm'命令編譯的。 另請注意,每個應用程序的Android.mk(在aosp / packages / apps中找到)會編譯該文件,以將它們存儲在最終圖像上的/ system / app文件夾中。 所以,是的,這種方法很難導入到AndroidStudio,因為這種類型的編譯缺少AndroidStudio的gradle構建系統,它實際上以完全不同的方式工作。

您可能遇到的其他問題: - 由於Native AOSP應用程序在Android上運行/系統並且使用odex優化進行編譯,因此在嘗試安裝任何派生工作時可能會遇到麻煩,除非您更改模塊名稱和AndroidManifest文件上的應用程序名稱。

一個簡單的解決方案:只需啟動一個新的Android Studio項目,並將相關的Java類和資源從aosp導入到您的項目中。 我知道這聽起來像是一個“懶惰”的解決方案但仍然采用這種方法,您應該確保以不同的方式命名您的應用程序(不同的模塊名稱),而不是AOSP應用程序,因此它不會與本機aosp應用程序(或任何派生的應用程序)沖突例如GoogleCamera(從AOSP Camera擴展))。 此外,這將設置正常創建Android應用程序所需的gradle環境。 希望這可以幫助。

對於Launcher3,您可以訪問https://android.googlesource.com/platform/packages/apps/Launcher3/+/android-6.0.1_r9

aosp Launcher3現在添加了build.gradle文件,您可以將總目錄復制到工作目錄,並更改gradlew文件模式以使其可以執行,然后使用./gradlew clean && ./gradlew build來構建Launcher3。 您還需要在abortOnError中關閉lint的build.grale

android {
    // Other configuration
    lintOptions {
        abortOnError false
    }
}

注意:不要在build.gradle更改protobuf版本,否則可能會破壞構建過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM