日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

ContactsProvider系统源码导入配置AndroidStudio编译环境

發(fā)布時間:2023/12/14 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ContactsProvider系统源码导入配置AndroidStudio编译环境 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、配置AndroidStudio SDK的環(huán)境

  • AndroidStudio配置使用自定義SDK

AndroidStudio項目需要調(diào)用的API是我們自己framework增加的API時,由于默認(rèn)使用的官方SDK.因此會找不到對應(yīng)的API.

解決方案是: 替換AndroidStudio SDK中的SDK為我們系統(tǒng)編譯出來的SDK

  • 1.在我們系統(tǒng)源碼linux中執(zhí)行make sdk 生成android.jar文件.

路徑: repo/out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar

  • 2.將linux中android.jar替換掉AndroidStudio SDK中sdk\platforms\android-27\android.jar文件

Tips:通過如上方式配置后的AS環(huán)境就不需要導(dǎo)入自己系統(tǒng)編譯生成framework.jar,也就不需要通過下面這種方式配置優(yōu)先加載我們自己framework.jar在allprojects中添加以下代碼:allprojects {repositories {jcenter()}gradle.projectsEvaluated {tasks.withType(JavaCompile) {options.compilerArgs.add('-Xbootclasspath/p:app\\ext_libs\\framework.jar')}}Xbootclasspath/p:path – 讓jvm優(yōu)先于默認(rèn)的bootstrap去加載path中指定的class-Xbootclasspath是設(shè)定在指定路徑中裝載系統(tǒng)運(yùn)行時類我們一般會用到下面兩個參數(shù):-Xbootclasspath/a:path,先搜索缺省路徑在搜索path中的路徑-Xbootclasspath/p:path,先搜索path中的路徑在搜索缺省路徑

二、導(dǎo)入android系統(tǒng)源碼到AndroidStudio(ContactsProvider系統(tǒng)源碼)

  • 1.創(chuàng)建AndroidStudio工程的項目
AS中 New Project: Application name定義為ContactsProvider Package name定義為ContactsProvider系統(tǒng)源碼中AndroidManifest.xml里相同包名
  • 2.在AS工程中導(dǎo)入ContactsProvider系統(tǒng)源碼

將ContactsProvider系統(tǒng)源碼中src、res、AndroidManifest.xml目錄覆蓋AS工程中對應(yīng)目錄

三、解決導(dǎo)入系統(tǒng)源碼后的AS工程的報錯

如下圖,通過分析ContactsProvider系統(tǒng)源碼中的Android.mk文件發(fā)現(xiàn),需要關(guān)聯(lián)動態(tài)庫ext、telephony-common 靜態(tài)庫android-common、com.android.vcard、guava

在out/target/common/obj/JAVA_LIBRARIES/目錄下查找如上需要的庫

  • ext庫,如下圖

將out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar 拷貝到AS工程libs目錄下,并命名為:ext.jar

  • android-common庫,如下圖

將out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/classes.jar 拷貝到AS工程libs目錄下,并命名為:android-common.jar

  • telephony-common庫

  • com.android.vcard庫

  • guava庫

  • 在AS工程中依賴libs中的庫文件

如下圖,將動態(tài)庫telephony-common.jar通過compileOnly的方式進(jìn)行依賴,而靜態(tài)庫使用implementation的方式進(jìn)行依賴

參考如上方式,將libs中的庫全部依賴

Tips:Android Studio3.0后依賴方式關(guān)鍵字變更(括號中為2.x版本的關(guān)鍵字):implementation (compile) // 依賴的庫將會參與編譯和打包(依賴不會傳遞,和以下兩者推薦使用implementation,implementation會使編譯速度有所增快)api(compile) // 依賴的庫將會參與編譯和打包(依賴可以傳遞)compileOnly(provided) // 只在編譯時有效,不會參與打包 runtimeOnly(apk) // 只在生成apk的時候參與打包,編譯時不會參與,很少用testImplementation(testCompile) // 只在單元測試代碼的編譯以及最終打包測試apk時有效debugImplementation(debugCompile) // 只在debug模式的編譯和最終的debug apk打包時有效releaseImplementation(releaseCompile) // 僅僅針對Release 模式的編譯和最終的Release apk打包
  • 最后一個報錯,缺失EventLogTags.java,在源碼中搜索 找到對應(yīng)的類,復(fù)制到AS工程中所對應(yīng)的包下(ContactsProvider\app\src\main\java\com\android\providers\contacts\EventLogTags.java),如下圖

最后,Build APk 即可生成非系統(tǒng)簽名的apk,將其進(jìn)行系統(tǒng)簽名即可push使用

Tips:將Eclipse或AndroidStudio已經(jīng)編出來的apk手動配置系統(tǒng)簽名:創(chuàng)建SignApk文件夾,把需要重新簽名的apk和platform.x509.pem、platform.pk8、signapk.jar文件拷貝到該目錄下對應(yīng)文件在linux所在路徑:platform.x509.pem、platform.pk8: build/target/product/securitysignapk.jar: out/host/linux-x86/frameworksignapk源碼路徑: build/tools/signapk最后執(zhí)行以下命令生成系統(tǒng)簽名后的apkjava -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

配置好的ContactsProvider代碼下載


相關(guān)鏈接直達(dá):

Android系統(tǒng)源碼SystemUI導(dǎo)入eclipse編譯

Android系統(tǒng)源碼Settings導(dǎo)入eclipse

AndroidStudio導(dǎo)入系統(tǒng)源碼DeskClock編譯生成系統(tǒng)簽名apk

ContactsProvider系統(tǒng)源碼導(dǎo)入配置AndroidStudio編譯環(huán)境

總結(jié)

以上是生活随笔為你收集整理的ContactsProvider系统源码导入配置AndroidStudio编译环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。