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

歡迎訪問 生活随笔!

生活随笔

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

Android

[转]重新签名Android pre-install APK

發布時間:2025/4/5 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]重新签名Android pre-install APK 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文轉自:http://www.cnblogs.com/whuiscool/archive/2010/11/24/1886476.html

?

題外話

? 最近在研究Android APK的自動化測試方法,期間遇到了APK簽名問題, 尤其是Android系統pre-install的應用,它們的簽名方式比較特殊,后面會說到,于是在Eclipse里寫好的測試代碼就會由于權限問題,無法測試這些應用。折騰了好幾天,頭疼。好在最后還是搞定了,于是乎就想在這里分享一下我的一點經驗,有感興趣的、或者有類似問題的朋友們,希望能夠給你們一點幫助。

?

什么是pre-installapk

? 就是Android系統預裝的一些應用,例如Messaging、Contacts、Calendar等等。

?

pre-install apk的簽名方式

? 給apk簽名的一般方法有兩種,一種是在Eclipse里使用“Android Tools -> Export SignedApplication Package…”這種方式簽名;另一種是用命令行簽名。這里就不詳細描述了。

? 而pre-install apk的簽名比較特殊,使用源碼中的默認簽名。可以查看Android的源代碼得知。

$ signapkpublickey.x509[.pem] privatekey.pk8 input.jar output.jar

其中,*.x509.pem為x509格式公鑰,pk8為私鑰。

?

pre-install apk的簽名方法

  • 在Eclipse里編寫好測試apk的代碼,例如要測試“打開信息這個應用,準備發送短信息”;
  • 準備Linux系統環境,并配置好Android開發環境(包括SDK、JRE、環境變量等);
  • 下載自動簽名腳本
  • ??http://code.google.com/p/robotium/downloads/detail?name=sign-debug-any-apk.sh
  • 從Android系統中導出pre-install的應用(例如Mms.apk)
  • adbpull /system/app/Mms.apk
  • 準備Eclipse的默認簽名工具debug.keystore文件;
  • 將腳本文件、Mms.apk、debug.keystore都拷貝到Linux系統中;
  • 修改腳本文件,并給它加權(注二);
  • 在終端中輸入命令:
  • ./sign-debug-any-apk.shMms.apk Mms_signed.apk
  • 如果一切順利,此apk應該已經簽好名并生成新的文件“Mms_signed.apk”;
  • adb pull /data/system/packages.xml
  • Openpackages.xml and remove:
  • ?<packagename="com.android.Mms">
  • ?
  • </package>
  • Pushpackages.xml back to device: adb push packages.xml /data/system
  • Renamed“Mms_signed.apk”to “Mms.apk”, then push the apk back to the device: adb push Mms.apk/system/app
  • 運行Eclipse里的測試代碼,順利的話你就能看到信息這個應用被調用并啟動。
  • ?

    特別注意:?

  • 測試代碼編寫正確,繼承InstrumentationTest類、target package = “…”等無誤;
  • Linux環境及其中的Android開發環境配置正確;
  • 請按照上述需要的文件實際拷貝到的Linux目錄位置,修改Shell腳本,并加權;
  • ?

    總結

    ? 本文介紹的方法,除了對Android系統pre-install的應用有效,同時對一般簽名的應用apk也有效(至少我拿我們公司編寫的一些apk應用沒問題)

    ?

    心得體會

    一開始,我試圖找到使用源碼簽名和上述兩種方法的互換方式。但是研究了很久,好像沒辦法互換。再后來,看到一篇資料,介紹了對已簽名的apk重新簽名的方法(注一)。于是在Window環境下試著做。前三步都沒問題,可是到了第四步就進行不下去了。就這樣被卡了三天時間。這三天里,每天上班都滿懷希望的帶著各種嘗試方案,但是每天下班都無奈悻悻的回家。現在回頭想想,凡事就是這樣,你做成了一件事后感覺很簡單,但回頭看看其中的艱辛探索之路是旁人無法體會的。這期間,找到了一個資料,一個自動解包打包的Shell腳本,由于在Window環境下無法執行,也一直沒有嘗試。到了第四天,萬念俱灰的時候,抱著試一試的態度,進行了最后的嘗試。難道凡事也必在走投無路準備放棄的時候,突然一線轉機?!在一系列的搭建環境操作之后,包括安裝虛擬機,安裝linux系統,配置Android開發環境,配置java環境變量,修改、運行腳本,輸入必要的參數,終于。。。。。。OK了!拿到Window下,搗鼓到Android虛擬機里,運行測試代碼,哈哈,跑起來了!

    ?

    注一

    ‐‐Un-zip the apk file

    ‐‐Delete the META--‐INF folder

    ‐‐Re‐zip the apkfile

    ‐‐In Dos prompt /Command prompt

    >jarsigner -keystore~/.android/debug.keystore -storepass android -keypass android ApplicationToTest.apkandroiddebugkey

    > zipalign 4 ApplicationToTest.apkTempApplicationToTest.apk

    ?

    注二

    ?

    view sourceprint?
    01#!/bin/bash
    02set -e
    03ORIGINAL_APK="$(readlink --canonicalize $1)"
    04CLEAN_SIGNED_APK="$(mktemp -t robotium.clean.apk.XXXXXXXXXXXXXX)"
    05UNPACK_DIRECTORY="$(mktemp --directory -t robotium.unpack.XXXXXXXXXXXXXX)"
    06ZIPALIGNED_APK="$(readlink --canonicalize $2)"
    07PWD="$(pwd)"
    08if [ -e "$ORIGINAL_APK" ]; then
    09????if [ "$2" == "" ]; then
    10????????echo "Second argument must be the output filename for the signed apk."
    11????????exit 2
    12????fi
    13????rm "$CLEAN_SIGNED_APK" 2>/dev/null || true
    14????rm "$ZIPALIGNED_APK" 2>/dev/null || true
    15????cd "$UNPACK_DIRECTORY"
    16????jar xf "$ORIGINAL_APK"
    17????rm META-INF/CERT.*
    18????jar cf "$CLEAN_SIGNED_APK" .
    19????jarsigner -keystore 這里是你的debug.keystore存放路徑 -storepass android -keypass android "$CLEAN_SIGNED_APK" androiddebugkey
    20????zipalign 4 "$CLEAN_SIGNED_APK" "$ZIPALIGNED_APK"
    21else
    22????echo "First argument must be an apk file."
    23????exit 1
    24fi

    ?

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的[转]重新签名Android pre-install APK的全部內容,希望文章能夠幫你解決所遇到的問題。

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