使用Android Studio編寫系統APP

2022-02-03 百問科技

本文來自粉絲(公號:tmac_lover,武漢風行在線framework開發)投稿。有興趣的可以關注他。

之前我們工作中都是使用Eclipse來編寫system app, 因為Eclipse能夠很方便的引用我們自己ROM的framework.jar。而現在Android Studio正在變得越來越流行,幾乎所有的APP開發者都開始使用Android Studio, 那我們如何才能夠在AS裡調用自己的framework.jar而不是SDK裡的呢。

當我們需要寫一些系統內置的APP時,比如Launcher, Setting之類的,它們經常會使用到一些隱藏的API,而這些API在SDK裡是找不到的,或者使用一些我們自己ROM裡編寫的接口,這時候我們就需要引用我們自己的framework.jar, 否則Android Studio裡是編譯不過的。

下面就來介紹一下如何在AS裡引用自己的framework.jar編寫一個系統APK:

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

特別要注意的是,並不是

out/target/product/your_target/system/framework/framework.jar

第一個是完整的java library, 而第二個jar包更像是SDK裡的framework.jar

將classes.jar拷到/projectpath/app/libs/下,並重命名為framework.jar

像在Ecplise裡的extended library一樣引用framework.jar, 在/projectpath/app/build.gradle的dependencies添加

   dependencies {                        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {            exclude group: 'com.android.support', module: 'support-annotations'        })        ... ...        testCompile 'junit:junit:4.12'        provided files('libs/framework.jar')        }

gradle打包時,也需要指定我們自己的framework.jar的位置,在/projectpath/app/build.gradle的buildscript裡添加

 gradle.projectsEvaluated {      tasks.withType(JavaCompile) {          options.compilerArgs.add('-Xbootclasspath/p:app/libs/framework.jar')      }  }

注意,這裡app目錄是一個AS工程的一個module

完成上面這些之後,使用gradle編譯的apk使用的就是我們自己的framework.jar裡的API。但是這裡還有一個小問題,就是你會發現如果代碼裡
調用我們自己添加的API接口時,AS裡提示沒有這個接口,會顯示這裡有語法錯誤。但是事實上,gradle編譯的時候確實可以編譯通過,並生成可以運行的APK。

這是因為Android Studio裡永遠會將SDK作為第一個語法解析的jar包。

我們可以將/projectpath/app/app.iml裡下面的

   <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />

放到最後去,也就是在我們自己的framework.jar之後。然後Android Studio就不會有語法錯誤提示了。

注意,這樣修改之後,只有java文件不會提示語法錯誤,kotlin文件裡仍然會提示語法錯誤,這個暫時還沒有找到解決辦法


公號介紹

悅己之作,方能悅人。韋東山品牌資訊發聲地,幫助您更快入門嵌入式Linux。

相關焦點

  • Android Studio Arctic Fox (2020.3.1) Beta 版發布
    無論您的應用是完全用 Compose 編寫的布局,還是混合使用了 Compose 和 View,Layout Inspector 都能幫助您了解布局如何在設備或模擬器上呈現,獲得豐富的細節 (如傳遞給每個 Composable 的參數和修飾符),並調試可能出現的問題。
  • Android Studio Arctic Fox 大版本更新,快來了解下吧
    開發者可以檢查使用新的 Android 聲明式 UI 框架 Jetpack Compose 編寫的布局,無論應用程式使用完全由 Compose 編寫的布局,還是使用 Compose 和 Views 的混合布局,布局檢查器都 可以幫助開發者了解布局在運行設備上的呈現方式。
  • android studio布局嵌套_android studio相對布局和線性布局嵌套...
    利用android studio LinearLayout線性布局設計製作簡易的計算器詳細版【精選收藏】Android Studio簡介Android Studio 是谷歌推出的一個Android集成開發工具
  • 谷歌:Android Studio 和 Gradle 插件使用全新版本編號
    這種命名模式的變更使您能夠快速確定您在 Android Studio 中使用的 IntelliJ 平臺版本。此外,每個主要版本都將具有標準代號,從 Arctic Fox 開始,之後會按字母順序依次命名,以幫助用戶輕鬆辨別新老版本。我們建議您使用最新版本的 Android Studio,以體驗最新功能和質量改進。
  • 這15個Android開源庫,只有經常逛Github的才知道!
    它是用純Kotlin編寫的,並在MIT許可下發布。如果您需要在應用程式中使用日曆視圖,這是一個不錯的選擇。@color/white"    android:elevation="4dp"    android:padding="12dp"    app:bnc_mode="spread">    <com.gauravk.bubblenavigation.BubbleToggleView        android:id="@+id/c_item_rest
  • Android Studio 4.0 發布
    並且,此前已經使用了ConstraintLayout的項目,IDE 可以輕鬆地將其轉換為MotionLayout。使用「布局驗證」窗口,可以同時在不同的屏幕和配置上預覽布局。現在還可以使用導航快捷方式輕鬆移動數據進行精細的縮放和平移,比如使用 W/A/S/D 鍵操作。
  • Android Studio啟用新代號!新版本Artic Fox重點新特性一覽!
    如果沿用以前的編號系統,則此版本將為 Android Studio 4.3。現在,新版編號系統將其命名為 Android Studio Arctic Fox (2020.3.1) Canary 1,或簡稱為 Arctic Fox。為什麼要更改命名方案呢?
  • Android 樣式系統 | 主題背景屬性
    通過使用主題背景屬性,我們可以將語義顏色的聲明從提供它們的值中區分開來,而且讓使用方更清楚地了解到顏色會隨主題背景而變化 (因為它們使用 ?attr/ 語法)。將顏色聲明保持為字面值,您就可以自定義應用使用的顏色調色板,並在主題背景級別修改它們,這會讓 color.xml 較小且易維護。這種方法的額外好處是,布局/樣式引用這些顏色時復用性變得更高。
  • Android Studio啟用新代號,新版本Arctic Fox(白狐)重點新特性一覽!
    如果沿用以前的編號系統,則此版本將為 Android Studio 4.3。現在,新版編號系統將其命名為 Android Studio Arctic Fox (2020.3.1) Canary 1,或簡稱為 Arctic Fox。為什麼要更改命名方案呢?
  • 推薦開發者使用 Material Design 組件
    Android 用戶希望您的應用在視覺和行為上與系統保持一致。您在設計視覺和導航模式時應該遵循 Material Design 規範…您可以使用 Material Design Components (MDC) 組件庫來實現這一目的。本文將列出使用 MDC 的優勢,從而說明我們推薦使用它的原因。
  • Android TV開發總結(一)構建一個TV app前要知道的事兒
    為了讓用戶與電視應用程式交互,他們必須使用一個遙控器或遊戲手柄。當你為電視構建一個應用程式,你必須仔細考慮硬體操作電視硬體的限制和要求。app上檢查電視設備如果您正在構建一個app運行在TV設備和其他設備,你也許需要去check你的app運行在什麼樣的設備上且可能將在你的app做何種操作。
  • android app殺死啟動專題及常見問題 - CSDN
    啟動畫面的初始化可以使用設置主題背景的方式,速度回更快。四. 冷啟動流程冷啟動指的是應用程式從進程在系統不存在,到系統創建應用運行進程空間的過程。冷啟動通常會發生在一下兩種情況:設備啟動以來首次啟動應用程式系統殺死應用程式之後再次啟動應用程式在冷啟動的最開始,系統需要負責做三件事:加載以及啟動appapp啟動之後立刻顯示一個空白的預覽窗口創建app進程
  • Android Studio常用插件
    開發的過程中使用一些插件可以事半功倍,下面介紹一些博主開發過程中常用到的一些as插件供大家參考。ButterKnife官網:http://jakewharton.github.io/butterknife/github:https://github.com/JakeWharton/butterknife該插件是由jakewharton開發的,他被人稱為android明星程式設計師,偉大的NineOldAndroids動畫庫正是他開發的。
  • 谷歌Android Studio Arctic Fox (2020.3.1) 預覽版發布,附更新內容
    版本說明 https://developer.android.google.cn/studio/releases對於那些嘗試使用 Jetpack Compose 的用戶,我們提供了大量更新內容,例如將 @Preview Composable 部署到設備 / 模擬器 :Jetpack Composehttps:/
  • Android性能優化之使用Lint
    >Internationalization:國際化,直接使用漢字,沒有使用資源引用等Security:不安全的編碼,比如在 WebView 中允許使用 JavaScriptInterface 等其他等等。
  • 傾情分享:Android 開發者們不要錯過的網站寶藏~
    涵蓋了系統、API、語言、開發工具、以及各種官方學習平臺。不求面面俱到,只求無私分享!可以通過如下的網站進行系統的學習,可以重塑和刷新既有的 Android app 開發思維。https://developer.android.google.cn/studioApp Bundle 是 Android 平臺最新的發布格式,在 APK 的基礎上進行了多項優化。
  • 開發你的第一個 Android 應用
    本書撰寫時,Android Studio新建項目默認使用Java語言。選Kotlin是讓Android Studio準備好該語言相關的各種工具和依賴,以便編寫和構建Kotlin應用。一直以來,Java是Android開發唯一的官方支持語言,直到2017年5月,Android開發團隊在Google I/O大會上宣布Kotlin為Android開發又一官方支持語言。
  • Android Studio Arctic Fox 正式版發布,真香?
    原本連結:https://developer.android.com/studio/releases來源:GSYTech❞2020年12月份,google宣布了Android Studio 4.2 之後,將採用新的命名方式,首個更新後的版本為Android Studio Arctic Fox,並且將相應的gradle插件版本號改為
  • vlc_for_android(基於git-3.0.0)快速集成並播放電視節目直播
    今天是djstava關於他編譯vlc-android源碼移植,並播放電視節目直播案例。說實話,很多人連vlc-android編譯出庫文件出來都要折騰好久。這篇文章對你絕對有借鑑意義。前言最近老有朋友在問vlc for android的移植問題,網絡上有一些帖子也有談到,但是大部分都是基於老版本,況且vlc的更新也很頻繁,接口也經常變動,給大家造成了很大的困擾。
  • Android Studio實現音樂播放器(2.0版本)
    雖然前段時間很忙,還是沉下心來回顧了自己的音樂播放器項目,也發現了很多不足的地方,然後進行了優化升級,主要有三點:增加了上一首下一首功能更換了按鈕樣式,使用更個性化的按鈕增加了大多數代碼的注釋,做到臨缺勿濫所以,這篇博客就是對最初版本(1.0版本)的一個完善,即2.0版本,話不多說,下面開始。