Android签名
来源:互联网 发布:php文件缓存 编辑:程序博客网 时间:2024/05/17 05:05
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"才有用!
具体签名方法:
(1)platform签名:
AndroidManifest.xml的manifest节点中添加 android:sharedUserId="android.uid.system",
Android.mk中增加 LOCAL_CERTIFICATE := platform
(2)shared签名:
AndroidManifest.xml的manifest节点中增加android:sharedUserId="android.uid.shared",
Android.mk中增加LOCAL_CERTIFICATE := shared
(3)media签名:
AndroidManifest.xml的manifest节点中增加 android:sharedUserId="android.media",
Android.mk中增加 LOCAL_CERTIFICATE := media
由于需要在Android.mk中增加信息,我们暂时在Android源码中编译生成apk包。具体的操作方法如下:
(1)在Android源码中选择一个APK程序,作为需要签名的程序,我选择/xxx/packages/apps下的一个程序,copy并更名为SignTest。
(2)将当前APK应用添加platform签名,首先在AndroidManifest.xml文件中添加信息,如:
package="com.mediatek.weather3dwidget" android:sharedUserId="android.uid.shared">
(3)在Android.mk文件中添加信息,如:
LOCAL_EMMA_COVERAGE_FILTER := +com.mediatek.weather3dwidget.* -com.mediatek.weather3dwidget.R
LOCAL_CERTIFICATE := shared
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../../../frameworks/opt/ngin3d/inflater/res $(LOCAL_PATH)/res
(4)进行模块编译,生成一个apk,本示例为SignTest.apk
(5)针对本apk进行platform签名,可以通过签名系统,也可以通过eclipse,或者通过相应的工具。
(6)如果将该应用放置在别的系统中,则会报“INSTALL_FAILED_SHARED_USER_INCOMPATIBLE”的错误,这是签名不一致导致的。
- android签名
- android签名
- android签名
- Android签名
- android签名
- android签名
- android签名
- android签名
- android 签名
- android签名
- android签名
- android 签名
- android 签名
- android 签名
- Android 签名
- android 签名
- Android签名
- Android签名
- 将多个txt文件导入到ORACLE
- java随机从数组中取出指定数目的值
- 车联网V2X技术要点
- SpingMVC随笔
- Day5 基于greenDao的List存储与查询方法大全
- Android签名
- 基于注解的Spring多数据源配置和使用
- 将17字节mac字符串转换为6字节mac
- Qt入门笔记1
- linux 下日志 too many open files 异常
- linux远程服务器后台执行命令
- 无需第三方sdk支持的定位功能实现
- mybatis配置
- java中的几种对象(PO,VO,DAO,BO,POJO)