资讯
论坛
词条
众包
招聘
商城
下载
问答
博客
工程师家园
帮助
搜索
登录
立即注册
一牛网论坛
一流研发工程师学习交流分享电子技术的论坛!
工作时间
周一到周五 9:00-11:30 13:30-19:30
热线电话
19168984579
论坛客服
QQ:
2064607811
微信:
19168984579
商城客服
QQ:
1911822682
微信:
18924675756
一牛网
›
芯片词条
›
release
›
相关日志
release
release- 精选贴
机械防抖摄像头
18-30倍可变焦模组
5G相关方案定制
T31/T40方案定制
全志方案定制
展讯4G/5G方案定制
FPGA高清视频方案
高通方案
显示屏方案
AMLOGIC相关方案
Ai硬件方案
PD超级快充方案
MTK4G/5G方案
wifi/cpe相关方案
RK相关方案
摄像头和测温模块
高精度定位模组
联咏相关方案
其他需求定制联系我
全部
帖子
资料
日志
“release”
的日志
(转载)Android——编译release版签名系统
热度
6
liujin
2016-10-21 17:11
本文转载至:http://blog.csdn.net/jscese/article/details/24243171 一:签名类型 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"才有用! 二:自定义签名Key 在/build/target/product/security目录下有个README,里面有说怎么制作这些key以及使用问题(android4.2): The following commands were used to generate the test key pairs: development/tools/make_key testkey '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' development/tools/make_key shared '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' development/tools/make_key media '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com' The following standard test keys are currently included: testkey -- a generic key for packages that do not otherwise specify a key. platform -- a test key for packages that are part of the core platform. shared -- a test key for things that are shared in the home/contacts process. media -- a test key for packages that are part of the media/download system. These test keys are used strictly in development, and should never be assumed to convey any sort of validity. When $BUILD_SECURE=true, the code should not honor these keys in any context. 从上面可以看出来在源码下的/development/tools目录下有个make_key的脚本,通过传入两个参数就可以生成一对签名用的key。 其中第一个为key的名字,一般都默认成android本身有的,因为很多地方都默认使用了这些名字,我们自定义的话只需要对第二个参数动手脚,定义如下: C --- Country Name (2 letter code) 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,不要密码!后面解释,用自定义的key替换/security下面的。 可以看到android源码里面的key使用的第二个参数就是上面README里面的,是公开的,所以要release版本的系统的话,肯定要有自己的签名key才能起到一个安全控制作用。 三:修改系统默认签名key 在上面提到如果apk中的编译选项LOCAL_CERTIFICATE没有设置的话,就会使用默认的testkey作为签名key,我们可以修改成自己想要的key,按照上面的步骤制作一个releasekey,修改android配置在/build/core/config.mk中定义变量: DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/releasekey 在主makefile文件里面: ifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/target/product/security/releasekey) BUILD_VERSION_TAGS += release-keys 这样的话默认的所有签名将会使用releasekey。 修改完之后就要编译了,如果上面的这些key在制作的时候输入了password就会出现如下错误: Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142) at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166) at com.android.signapk.SignApk.main(SignApk.java:531) Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): make: *** 错误 1 make: *** 正在等待未完成的任务.... Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142) at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166) at com.android.signapk.SignApk.main(SignApk.java:531) make: *** 错误 1 Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest. Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest. 'out/target/common/obj/APPS/Calendar_intermediates/classes.dex' as 'classes.dex'... Enter password for build/target/product/security/releasekey.pk8 (password will not be hidden): java.lang.NullPointerException at com.android.signapk.SignApk.decryptPrivateKey(SignApk.java:142) at com.android.signapk.SignApk.readPrivateKey(SignApk.java:166) at com.android.signapk.SignApk.main(SignApk.java:531) make: *** 错误 1 ^Cmake: *** 错误 130 我在网上找到了合理的解释: 其实会出现这个错误的最根本的原因是多线程的问题。在编译的时候为了加速一般都会执行make -jxxx,这样本来需要手动输入密码的时候,由于其它线程的运行,就会导致影响当前的输入终端,所以就会导致密码无法输入的情况! 再编译完成之后也可以在build.prop中查看到变量: ro.build.tags=release-keys 这样处理了之后编译出来的都是签名过的了,系统才算是release版本 我发现我这样处理之后,整个系统的算是全部按照我的要求签名了。 四:其它 网上看到还有另外的签名release办法,但是应该是针对另外的版本的,借用学习一下: make -j4 PRODUCT-product_modul-user dist 这个怎么跟平时的编译不一样,后面多了两个参数PRODUCT-product_modul-user 和 dist. 编译完成之后回在源码/out/dist/目录内生成个product_modul-target_files开头的zip文件.这就是我们需要进行签名的文件系统. 我的product_modul 是full_gotechcn,后面加“-user”代表的是最终用户版本,关于这个命名以及product_modul等可参考http://blog.csdn.net/jscese/article/details/23931159 编译出需要签名的zip压缩包之后,就是利用/security下面的准备的key进行签名了: ./build/tools/releasetools/sign_target_files_apks -d /build/target/product/security out/dist/full_gotechcn-target_files.zip out/dist/signed_target_files.zip 签名目标文件 输出成signed_target_files.zip 如果出现某些apk出错,可以通过在full_gotechcn-target_files.zip前面加参数"-e apkname=" 来过滤这些apk. 然后再通过image的脚本生成imag的zip文件,这种方式不适用与我目前的工程源码,没有做过多验证!
展开>>
收起<<
个人分类:
android 驱动开发
|
9113 次阅读
|
8
个评论
小广播
一牛网是干什么的?1分钟了解一牛网
一牛网5G产品及方案:mtk5G/高通5G核心板/5GCPE/5G相关仪器
wifi6方案(IPQ807X/IPQ6000/QCA9984/MT7622/MT7621A)及整机定制
各类带AI算力开发板/定制(mtk/海思/算能/sigmastar/amlogic/rk等)
珠海海奇半导体A/B/C/D/E系列产品性能参数介绍
热门推荐
一牛MTK技术交流QQ群:947753880
MTK方案定制,请联系
13316559917
(
微信同号,加号请备注:MTK
)
MTK系列开发板/核心板:
MTK5G-MT6853开发板
MTK5G-MT6873开发板
MT6771-4G核心板
mt8788 AI智能模块
MT6763开发板
MT6762开发板
MT6761开发板
MT6765开发板
MT6757芯片核心板
MT6753核心板
MT6739开发板
更多开发板点击查看
热门词条
物联网
机器人
无人机
MT6735
FPGA
Linux
开发板
MTK
手机
Android
嵌入式
CAMERA
FAQ
单片机
传感器
蓝牙
PCB
MT2503
射频
全志
瑞芯微
海思
芯片
datasheet
MCU
原理图
展讯
数据手册
高通
规格书
二极管
雷卯电子
热门资料下载
RK3368 V1.0_PCB文件.zip
必须弄懂的495个c语言问题.pdf
MT6356_PMIC_Data_Sheet_V1.3.pdf
很好的MTK-Android资料.doc
LinkIt_Assist_2502_pin_out_v1_0 .pdf
MT7623N_Datasheet_preliminary (1).pdf
MT7623A_Datasheet_preliminary (1).pdf
MediaTek_LinkIt_Assist_2502_Hardware_Reference_Design_v1_1.zip
4G IMEI 写号神器.rar
关于我们
关于我们
加入我们
新闻动态
联系我们
服务支持
官方商城
隐私声明
常见问题
论坛总则
合作/建议
TEL: 19168984579
工作时间:
周一到周五 9:00-11:30 13:30-19:30
扫一扫关注公众号
扫一扫打开小程序
Copyright © 2013-2024
一牛网
版权所有
All Rights Reserved.
帮助中心
|
隐私声明
|
联系我们
|
手机版
|
粤ICP备13053961号
|
营业执照
|
EDI证
搜索
扫一扫添加微信客服
QQ客服
返回顶部
返回顶部