ソースコードのGMSパッケージを効率的に更新
10500 ワード
前言
Androidオリジナルシステムのカスタマイズにとって、google GMSパッケージのアップグレードは避けられない日常的な仕事です.ctsソフトウェアバージョンのようにgoogleが提供するGMSパッケージアプリケーションではありません.一般的なお客様のソフトウェアバージョンでは、google playstoreストアにログインし、最新のGMSソフトウェアをダウンロードする必要があります.ダウンロードしたソフトウェアを携帯電話からパソコンにエクスポートし、これらのダウンロードしたソフトウェアをソースコードのgoogleアプリケーションバージョンと比較し、apkパッケージ名を比較し、最後にソフトウェアを最新バージョンに置き換えます.
困難にぶつかるダウンロードしたソフトウェアをコンピュータにエクスポートするにはengバージョン が必要です.ダウンロードしたapk名はすべてbase.apkは、/vendor/google/appsの下にあるソフトウェアファイルを見つける必要があります. 解決策
第1に、userバージョンではadbがダウンロードしたファイルをコンピュータにエクスポートする権限がないため、userバージョンのbootを置き換えることが考えられる.img. 第2の困難に基づいて、私はスクリプトを作成して、必要なアップグレードファイルapkを自動的に、古いバージョンのapkに置き換えることができます.
スクリプトはpyで作成され、親テストで使用できます.具体的なコードは次のとおりです.コードのソースパスとダウンロードしたgmsパケットパスは書き込み済みで、このファイルパスを自分で置き換えることができます. に置き換えられたapkパッケージ名は、完全ではない可能性がありますが、自分で追加する必要があります.多くなっても大丈夫です.少なくなったら問題です.
Androidオリジナルシステムのカスタマイズにとって、google GMSパッケージのアップグレードは避けられない日常的な仕事です.ctsソフトウェアバージョンのようにgoogleが提供するGMSパッケージアプリケーションではありません.一般的なお客様のソフトウェアバージョンでは、google playstoreストアにログインし、最新のGMSソフトウェアをダウンロードする必要があります.ダウンロードしたソフトウェアを携帯電話からパソコンにエクスポートし、これらのダウンロードしたソフトウェアをソースコードのgoogleアプリケーションバージョンと比較し、apkパッケージ名を比較し、最後にソフトウェアを最新バージョンに置き換えます.
困難にぶつかる
第1に、userバージョンではadbがダウンロードしたファイルをコンピュータにエクスポートする権限がないため、userバージョンのbootを置き換えることが考えられる.img. 第2の困難に基づいて、私はスクリプトを作成して、必要なアップグレードファイルapkを自動的に、古いバージョンのapkに置き換えることができます.
スクリプトはpyで作成され、親テストで使用できます.具体的なコードは次のとおりです.
# !/usr/bin/python
#coding=utf-8
# google apk
# :
# linux :
# python replace.py
#
import os
import shutil
import sys
# google app data/app
replace_dir = [
'com.google.android.apps.plus-1',
'com.google.android.apps.tachyon-1',
'com.google.android.googlequicksearchbox-1',
'com.google.android.youtube-1',
'com.google.android.talk-1',
'com.google.android.calendar-1',
'com.google.android.apps.messaging-1',
'com.google.android.apps.docs.editors.docs-1',
'com.google.android.apps.photos-1',
'com.google.android.apps.books-1',
'com.google.android.gm-1',
'com.google.android.apps.docs-1',
'com.google.android.inputmethod.latin-1',
'com.google.android.music-1',
'com.google.android.tts-1',
'com.android.chrome-1',
'com.android.vending-1',
'com.google.android.apps.maps-1',
'com.google.android.videos-1',
'com.google.android.gms-1',
]
#google/apps apk dir
target_dir = [
'PlusOne',
'Duo',
'Velvet',
'YouTube',
'Hangouts',
'CalendarGoogle',
'Messenger',
'EditorsDocs',
'Photos',
'Books',
'Gmail2',
'Drive',
'LatinImeGoogle',
'Music2',
'GoogleTTS',
'Chrome',
'Phonesky',
'Maps',
'Videos',
'GmsCore'
]
#
#google/apps apk dir/ apk
target_apk_name = [
'PlusOne_arm_xhdpi.apk',
'Duo_arm_xhdpi.apk',
'Velvet_arm_xhdpi.apk',
'YouTube_arm_xhdpi.apk',
'Hangouts_arm_xhdpi.apk',
'CalendarGoogle.apk',
'Messenger_arm_xhdpi.apk',
'EditorsDocs_arm_xhdpi.apk',
'Photos_arm_xhdpi.apk',
'Books.apk',
'Gmail2_xhdpi.apk',
'Drive_arm_xhdpi.apk',
'LatinImeGoogle_arm.apk',
'Music2.apk',
'GoogleTTS_arm.apk',
'Chrome_arm.apk',
'Phonesky.apk',
'Maps_arm_xhdpi.apk',
'Videos_arm.apk',
'GmsCore_arm_xhdpi.apk'
]
#
replace_apk_path=[]
target_apk_path=[]
# ( )
#Android google app
apk_target_dir="vendor/google/apps"
# google
apk_replace_dir = "/home/work/download/app/"
def search_file(path):#, filename, newpath)
queue = []
queue.append(path);
while len(queue) > 0:
tmp = queue.pop(0)
if (os.path.isdir(tmp)):#
for item in os.listdir(tmp):#
queue.append(os.path.join(tmp, item))# queue
elif (os.path.isfile(tmp)):#
name = os.path.basename(tmp) #
dirname = os.path.dirname(tmp) #
full_path = os.path.join(dirname, name) # ,
if os.path.splitext(name)[1]== '.apk':
for x in range(0,len(replace_dir)):
if dirname == apk_replace_dir+replace_dir[x]:
print(" :"+dirname)
print(name)
google_path = os.path.join(apk_target_dir,target_dir[x])
if os.path.isdir(google_path):
print("Google :"+google_path)
print(apk_target_dir+"/"+target_dir[x]+"/"+target_apk_name[x])
replace_apk_path.append(full_path)
target_apk_path.append(apk_target_dir+"/"+target_dir[x]+"/"+target_apk_name[x])
else:
print("not find "+google_path)
break
else:
print(dirname+" not replace ..")
# des_path = newpath+'/'+path+'_'+name # ,
# if filename in name:# , if(name.find(filename)!=-1):
# shutil.move(full_path, des_path)# ( + )
print("************************************************************")
print(" ")
print(" :"+apk_replace_dir)
search_file(apk_replace_dir)
print("
")
print("list
")
for x in xrange(1,len(replace_apk_path)):
print(replace_apk_path[x])
print(target_apk_path[x])
print("
")
for x in range(0,len(replace_apk_path)):
log = '[ apk '+bytes(x)+']'+'replacing '+replace_apk_path[x]+' to '+target_apk_path[x]
print(log)
print("
")
os.unlink(target_apk_path[x])
shutil.copy(replace_apk_path[x],target_apk_path[x])
print("success!")
注意: