I. About key
A. 簽名類型
android的標準簽名key有:testkey
media
platform
shared
以上的四種,可以在源碼的/build/target/product/security/裡面看到對應的金鑰,其中shared.pk8代表私密金鑰,shared.x509.pem公開金鑰,一定是成對出現的。
其中testkey是作為android編譯的時候默認的簽名key,如果系統中的apk的android.mk中沒有設置LOCAL_CERTIFICATE的值,就默認使用testkey。
而如果設置成:
LOCAL_CERTIFICATE := platform
就代表使用platform來簽名,這樣的話這個apk就擁有了和system相同的簽名,因為系統級別的簽名也是使用的platform來簽名,此時使用android:sharedUserId="android.uid.system"才有用!
最後我們需要將testkey置換成releasekey。
B. 製作Release key
subject='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' mkdir ~/.android-certs for x in releasekey platform shared media; do \ ./development/tools/make_key ~/.android-certs/$x "$subject"; \ done |
ST ---> State or Province Name (full name)
L ---> Locality Name (eg, city)
O ---> Organization Name (eg, company)
OU ---> Organizational Unit Name (eg, section)
CN ---> Common Name (eg, your name or your server’s hostname)
emailAddress ---> Contact email address
另外在使用上面的make_key腳本生成key的過程中會提示輸入password,直接enter,不要密碼!否則build的過程因為多執行緒會build失敗。
將生成的key複製到android4.4/build/target/product/security/ 底下,testkey可以不留。
僅需一個人產生即可,其他人複製同一份security key使用,避免使用不同簽章而在燒錄過程驗證不過。
C. 修改系統默認簽名key
若LOCAL_CERTIFICATE沒有設定的話,系統預設會直接使用testkey為APK簽章。修改預設使用的testkey為releasekey
android4.4/build/core/config.mk
修正前: DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey 修正後: DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey |
android4.4/build/core/makefile
修正前: ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/testkey) BUILD_VERSION_TAGS += test-keys 修正後: ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/releasekey) BUILD_VERSION_TAGS += release-keys |
II.修改Device Product名稱
lichee/brandy/u-boot-2011.09/usb_sunxi/usb_fastboot.h修正前: #define SUNXI_FASTBOOT_DEVICE_PRODUCT "Android Fastboot" /*產品資訊*/ 修正後: #define SUNXI_FASTBOOT_DEVICE_PRODUCT "exdroid" /*產品資訊*/ |
在刷機的時候會去檢查Device Product是否與Update requires相同,若未修改則會遇到上面的狀況而刷機失敗。目前不曉得Update requires的名稱在哪邊可以設定。
沒有留言:
張貼留言