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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 中Goolgle 相关服务的移植

發布時間:2023/12/16 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 中Goolgle 相关服务的移植 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android 中Goolgle 相關服務的移植

2011年02月24日 19:17:00?xiaofo?閱讀數:4141

?

Google相關服務的移植

1.?為什么需要移植?

首先,我編譯了Android2.1的源碼,編譯之后產生out/target/product/generic/。這個目錄下面放著在目標系統上運行Android2.1所需要的最基本的運行環境:包括ramdisk.img,system.img,userdata.img(當然,還需要prebuilt/android-arm/kerne下面的kernel-qemu)。在設置環境變量之后,通過啟動emulator,就可以看到最基本的Android2.1的系統了。

但是,最基本的Android系統中不包括Google提供的特色服務(包括電子市場,地圖,語音搜索,資訊和天氣,Gmail,GoogleTalk,YouTube),所以就考慮要在目標系統上安裝相應的特色服務。

我就通過adb?install,試圖安裝相應的服務程序(.apk文件),但是發現安裝失敗。打印信息后,發現原來缺少相應的庫和權限聲明。Android2.1源碼并不包含這些庫文件和權限聲明。后來,在網站上找到了Google定制手機的相應固件Googlebits

(包含 app etc framework lib幾個文件夾)

這其中就包含了Google服務程序的.apk文件,.jar庫,.so庫,.xml權限聲明。

????我就通過adb?remount獲取system的讀寫權限,然后adb?push把這些文件直接push到emulator的/system中去,重啟avd。這時,我發現剛剛push到/system中的文件都沒了。貌似有個啟動文件在系統啟動時,對/system目錄進行了還原。總之,我并不能獲取system的root權限,沒法進行有效的讀寫。

????然后,我就想把這些服務的.apk,.jar,.so,.xml直接編譯到system.img中去,目標系統就可以直接加載這些安裝文件和庫文件。要編譯到system.img中去,就需要對源碼進行相應的修改,即將Google的特色服務移植到Android2.1系統中去。

2.?移植的過程

2.1?generic_with_google

在編譯的過程中,默認選擇編譯/build/target/product下的generic,所以會生成out/target/product/generic目錄。另外,在/build/target/product目錄下還有一個generic_with_google.mk:

#?This?is?a?generic?product?that?isn't?specialized?for?a?specific?device.

#?It?includes?the?base?Android?platform?including?some?Google-specific?features.

#?If?you?do?not?want?to?include?Google?specific?features,?you?should?derive?

#?from?generic.mk

通過這個mk文件應該可以將google特色服務所需要的安裝文件和庫文件編譯到system.img中。所以,我嘗試著修改了generic_with_google.mk。但是,修過過后在編譯的過程中遇到了很多的問題,例如:系統缺省的generic.mk還是會編譯,并且會與generic_with_google沖突,產生多個目標匹配的問題。貌似這種方法還有待研究。接著我嘗試著另一種方法。

2.2vendor下的代碼定制

這個我使用了實驗室師兄和猛猛的在m8上移植Android所定制的vendor/m8的編譯規則。主要包括四個mk文件:AndroidBoard.mk,AndroidProducts.mk,BoardConfig.mk,fkh.mk。主要的改動:

將GoogleBits的安裝文件,庫和權限聲明文件放在vendor/emulator/google目錄下;

在AndroidBoard.mk中添加這些文件的操作:(以Google?Talk為例)

(1)?權限聲明

$(LOCAL_PATH)/google/etc/permissions/com.google.android.gtalkservice.xml:system/etc/permissions/com.google.android.gtalkservice.xml?/

?

(2)?安裝文件

(3)?.jar庫文件

$(LOCAL_PATH)/google/app/gtalkservice.apk:system/app/gtalkservice.apk?/

(4)?.so庫文件

$(LOCAL_PATH)/google/framework/com.google.android.maps.jar:system/framework/com.google.android.maps.jar?/

這樣在最后產生的目錄下產生system文件夾并打包到system.img中去;

為了查看效果,我把編譯產生的system.img復制到windows下的android-sdk/platform中去(google的這些特色服務都需要網絡的支持,而服務器上的模擬器無法上網),啟動模擬器,使用adb?shell,發現這些庫和安裝文件已經加載到system目錄下了,移植成功。

2.3自己制作system.img

另一種方法是比較笨的方法,但很實用。自己嘗試著制作system.img。考慮到system.img是yaffs2文件系統,所以可以自己制作。主要使用了sdk中android-7/platform/image/system.img,一個解壓工具(unyaffs)和一個打包工具(out/host/linux-x86/bin/mkyaffs2image)。解壓system.img后將googlebits下相應的庫,權限聲明和安裝文件放到對應的目錄下,然后打包成system.img。然后將制作后的system.img復制到sdk中,啟動模擬器,可以使用(這種方法不僅添加了相應的庫和安裝文件,還避免了模擬器不能上網的問題)。

?

?

總之,上面三種方法中,自己制作system.img最為簡單快捷

?

3.?Google?Bits?中安裝文件,權限聲明和庫文件

?

[c-sharp]?view plain?copy

  • ||--app??
  • ??|-EnhancedGoogleSearchProvider:?Google搜索引擎增強服務,安裝后將在設置(settings)的搜索設置(search)中獲得更多關于搜索引擎的服務??
  • ??|-GenieWidget:?根據地區下載不同語言的新聞和天氣??
  • ??????|-Gmail:Gmail電子郵箱服務??
  • ??????|-GmailProvider:電子郵箱的數據存儲服務??
  • |-GoogleApps:Google企業應用套件,類似office,支持WEB、POP3、SMTP、IMAP4、WAP收發郵件,還提供即時通信、日歷、在線文檔、網站等全面服務??
  • |-GoogleBackupTransport:可能是數據備份后,可以在線傳輸到網上,然后實現數據的保存(與Android的backup服務相關)??
  • |-GoogleCheckin:google簽入服務??
  • |-GoogleContactsSyncAdapter:Google聯系人/通訊錄同步服務(聯系人的導入和導出)??
  • |-GooglePartnerSetup:Google協作程序安裝向導(估計與賬戶的設置相關)??
  • |-GoogleSearch:Google的搜索服務,可以刪除的,不影響其他的搜索功能??
  • |-GoogleSettingsProvider:程序設置數據存儲服務??
  • |-GoogleSubscribedFeedsProvider:Google資料同步服務??
  • |-gtalkservice:gtalk服務??
  • |-Maps:Google地圖??
  • |-MarketUpdater:軟件管理服務(負責更新電子市場的程序)??
  • |-MediaUploader:Google的媒體數據上傳服務??
  • |-NetworkLocation:Google的網絡定位服務??
  • |-SetupWizard:手機設置向導(第一次安裝后出現的畫面)??
  • |-Street:Google的街景視圖服務??
  • |-Talk:Google?Talk?服務(不建議卸載)??
  • |-TalkProvider:Talk服務的支撐程序,估計與數據存儲相關??
  • |-TtsService:TTS(Text?To?Speech)文本到語音的服務??
  • |-Vending:Android?Market(電子市場)??
  • |-VoiceSearchWithKeyboard:語音輸進功能(通過語音鍵盤輸入,如果語速不快,基本可以準確判斷)??
  • |-YouTube:手機“優酷”(世界最大的視頻分享網站YouTube)??
  • ||--etc??
  • ???|-permissons??
  • ?????|-com.google.android.datamessaging.xml:(貌似不需要)??
  • ?????|-com.google.android.gtalkservice.xml:對于framewokr/gtalk.jar的權限聲明??
  • ?????|-com.google.android.maps.xml:對于frameword/maps.jar的權限聲明??
  • ||--framework??
  • ????|-com.google.android.gtalkservice.jar:支持gtalk的api的源文件編譯產生??
  • ????|-com.google.android.maps.jar:支持maps的api的源文件編譯產生??
  • ||--lib??
  • ????|-libgtalk_jni.so:支持gtalk的動態鏈接庫??
  • |-libspeech.so:支持語音搜索和語音撥號相關動態鏈接庫??
  • ?

    總結

    以上是生活随笔為你收集整理的Android 中Goolgle 相关服务的移植的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。