Android幾種簽名方法總結

在Android中,對應用簽名,讓其獲取系統權限,有幾種方式:

方法一

直接把應用源碼放在源碼/package/app/目錄下進行編譯,這種方式,需要擁有源碼編譯環境。
以系統Launcher爲例,需要在Project目錄下創建一個Android.mk文件,內容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := android-common android-support-v4
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := Launcher
ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_PACKAGE_NAME)
LOCAL_CERTIFICATE := shared
LOCAL_PROGUARD_ENABLED := full
LOCAL_PROGUARD_FLAG_FILES := proguard.cfg
include $(BUILD_PACKAGE)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := android-support-v4:libs/android-support-v4.jar
include $(call all-makefiles-under,$(LOCAL_PATH)) 

需要注意的是,如果需要系統權限,需要修改LOCAL_CERTIFICATE := shared爲LOCAL_CERTIFICATE := platform。
同時,需要在AndroidManifest.xml文件中修改如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.settings"
    android:versionCode="1"
    android:versionName="1.0"
    android:sharedUserId="android.uid.system" >

即需要添加android:sharedUserId="android.uid.system"
修改完畢後,進入到\packages\apps\Launcher目錄下,使用mm編譯,編譯完成後,apk生成在\out\target\product\Hi3796MV100\system\app下,然後通過cp拷貝到設備/system/app下即可。

方法二

沒有源碼環境怎麼讓應用擁有平臺簽名?方法很簡單,需要三個文件即可。
./prebuilts/sdk/tools/lib/signapk.jar
./build/target/product/security/platform.x509.pem
./build/target/product/security/platform.pk8
擁有這三個文件就可以在Linux環境下對應用進行簽名了。
具體怎麼做呢?步驟如下:

①建立一個文件夾,例如signature。
②將上面的三個文件放入signature,同時放入要簽名的apk。
③cd到文件夾signature下,敲入如下命令:

> java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk

其中input.apk是將要被簽名的apk,output.apk是簽名後的apk。
是不是很簡單呢?

方法三

在IDE中籤名,比如Eclipse,將下面三個文件拷貝到一個目錄:
./prebuilts/sdk/tools/lib/signapk.jar
./build/target/product/security/platform.x509.pem
./build/target/product/security/platform.pk8
然後執行
①openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt //生成shared.priv.pem
②openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androiddebugkey//生成pkcs12
③Enter Export Password: (默認是android,自己製作的key,輸入對應的密碼)
④Verifying - Enter Export Password:(輸入密碼android)
⑤生成debug.keystore

keytool -importkeystore -deststorepass android -destkeypass android -destkeystore debug.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey

⑥去Eclipse的Windows/Preferences/Android/Build中設置”Custom debug keystore”爲上面生成的keystore,運行調試即可。以上做完後就不再需要使用signapk.jar去簽名,如Java -jar signapk.jar platform.x509.pem platform.pk8 .apk *.apk

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章