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

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