‘壹’ 如何对android的APP进行签名
1、在Android Studio中打开工程,点击“Build”菜单下的“Generate Signed APK”。
‘贰’ android中怎样将自己的应用程序的签名改为系统签名一样
不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。 所有的程序都必须签名,没有被签名的程序,系统将不能安装。 可使用自签署证书签署应用程序,无须授权凭证。系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。 Android SDK 工具可以在调试时给应用程序签名。ADT插件和Ant编译工具都提供了两种签名模式-debug模式和release模式 debug模式下,编译工具使用JDK中的通用程序Keytool通过已知方法和密码创建秘锁和密钥。每次编译的时候,工具使用debug密钥签名应用程序的.apk文件。因为密码是已知的,工具 不需要在每次编译的时候提示输入密锁和密钥。 当应用程序调试完毕准备要发布release版本时,可以在release模式下编译。release模式下,编译工具不会将.apk文件签名。需要自己用Keytool生成密钥和密锁,再用JDK中的Jarsigner工具给.apk文件签名。签名基本设置 首先设置JAVA_HOME环境变量,告诉SDK如何找到Keytool,或者可以在Windows 系统环境变量PATH变量中添加Keytool的JDK路径。 在发布release版本时,从Package面版上按选中你的project,按鼠标右键,依次选择Android Tools、Export Application Package。或者可以点击Manifest Editor,overview 页面上的“Exporting the unsigned .apk”连接 ,导出未签名apk文件。保存.apk文件后,用Jarsigner及自己的密钥给apk文件签名,如果没有密钥, 可以用Keystore创建密钥和密锁。如果已经有一个密钥了,如公共密钥,就可以给.apk文件签名了。 也可以把上面这个完整的步骤写成一个bat文件,这样需要签名的时候只要运行这个bat就可以了。下面给出一个完整的bat文件示例: @Rem android签名程序 //注释指令 @Rem echo是显示指令 格式:echo [{onoff}] [message] @echo ********************************************************** @Rem 文件是否存在命令格式:if exist 路径+文件名 命令 @if exist d:sign/MyFirstApp.keystore goto sign @echo 创建签名文件MyFirstApp.keystore @Rem keytool命令格式:-genkey产生签名 -alias别名 -keyalg加密算法 -validity有效天数 -keystore生产签名文件名称keytool -genkey -alias MyFirstApp.keystore -keyalg RSA -validity 40000 -keystore MyFirstApp.keystore @echo 开始签名: @Rem jarsigner命令格式:-verbose输出详细信息 -keystore密钥库位置 -signedjar要生成的文件 要签名的文件 密钥库文件 jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore @goto over :sign @echo 开始签名:jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore :over @echo ********************MyFirstApp.apk 签名完成*********************** pause 以上是一个给应用签名的完整bat文件,在运行这个bat文件时,还需要按照屏幕提示的步骤输入一些必要信息,最后生成一个签名后的文件是:MyFirstApp_signed.apk。
‘叁’ 请教,关于AndroidStudio签名不正确的问题
Android开发中,用数字证书签名打包时第一步:输入keystore密码通过第二步:输入alias密码不通过时便会报这个错。Java.security.UnrecoverableKeyException:此错误由调用getKey(alias,aliaspassword)函数抛出。问题解决法请参考android学习手册,例子、源码、文档全部搞定,采用androidstudo的目录结构,360手机助手中下载。下面是截图。
‘肆’ 运行android程序会默认生成签名吗
开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。
由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换。
APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
这样签名其实也是开发者的身份标识。交易中抵赖等事情发生时,签名可以防止抵赖的发生。
二、签名的注意事项
Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。
Android签名的数字证书不需要权威机构来认证,是开发者自己产生的数字证书,即所谓的自签名。数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序。
系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。
可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。
签名后需使用zipalign优化程序。
模拟器开发环境,开发时通过ADB接口上传的程序会先自动被签有Debug权限,然后才传递到模拟器。Eclipse菜单的Window -> Preferences -> Android –> Build 下显示的是我们默认的调试用的签名数字证书。
正式发布一个Android应用时,必须使用一个合适的私钥生成的数字证书来给程序签名,不能使用ADT插件或者ANT工具生成的调试证书来发布。
三、签名方法:
1.使用Keytool 和jarsigner工具签名(在jdk/bin目录下)
1.生成签名keystore:
确保电脑上安装了JDK,因为我们将使用JDK自带的创建和管理数字证书的工具Keytool。在命令行下输入如下命令:
keytool -genkey -v -keystore app.keystore -alias alias_name -keyalg RSA -validity 20000
-alias 后面跟的是别名这里是alias_name
-keyalg 是加密方式这里是RSA
-validity 是有效期这里是20000
-keystore 就是要生成的keystore的名称这里是app.keystore
然后按回车键
按回车后首先会提示你输入的密码:这个在签名时要用的,要记住
然后会再确认你的密码。
之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码(CN)等。
2.签名:
jarsigner -verbose -keystore app.keystore -signedjar app_signed.apk app.apk alias_name
-keystore: keystore的名称
-signedjar app_signed.apk: 指定签名后生成的APK名称
app.apk: 目标APK
然后按回车:会要求输入刚才设置的密码,输入后按回车就开始签名了。
3.查看签名:
jarsigner -verify app_signed.apk
查看是否签名,如果已经签名会打印 "jar verified".
jarsigner -verify -verbose -certs app_signed.apk
查看签名详细信息。
4.通过zipalign工具进行优化apk(android自带的工具,./build/tools/zipalign)
zipalign -v 4 app_signed.apk androidres.apk 对apk优化
zipalign -c -v 4 androidres.apk 查看apk是否经过优化
2.使用eclipse ADT工具签名
在Package Explorer 窗口,右键,选择Android Tools--->Export Signed Application Package 然后按照提示一步一步,生成已签名的apk。通过eclipse也可以导出未签名的APK文件。
注:需要输入两次密码,第一次是私钥密码,第二次时私钥别名的密码。
3.eclipse在debug模式下自动签名(无须手动配置):
在debug模式下用eclipse 的ADT为android签名,只要应用程序在eclipse下开发,系统就会自动给apk签名和优化。
在Eclipse中Windows > Preferences > Android > Build可以看到你keysotre的位置;
四、生成Android系统签名
上面讲的Android数字签名大多是与Android APK相关,做CTS 认证时,需要用到Android系统签名。为什么需要给Android系统签个名才能进行CTS认证呢?原来我们通过make -j4编译出来的system.img使用的是test key,这种类型的key只适用于开发阶段,而且这种秘钥是公开的,谁都可以使用。当发布一款android产品,就需要另外给整个系统签个名,防止被别人盗用。这种系统就是release版本的Android系统。
1、生成加密key文件
要对Android系统进行签名,需要生成四种类型的key文件。
a)releasekey (testkey)
b)media
c)shared
d)platform
1)进入/android_src/development/tools目录。
2)使用make_key工具生成签名文件。需要分别生成 releasekey,media,shared,platform。
./make_key releasekey '/C=CN/ST=JiangSu/L=NanJing/O=Company/OU=Department/CN=Your Name/emailAddress=YourE-mailAddress' (系统将会提示输入针对各种key的密码,按照提示输入即可)
将会生成 releasekey.pk8 和 releasekey.x509.pem文件,其中 *.pk8是生成的私钥,而*.x509.pem是公钥,生成时两者是成对出现的.
注:如果出现 openssl : relocation error :openssl : symbol ...尝试用 sudo 执行命令,问题解决了!
2.回到根目录android_src。
命令执行的时候都最好在工程的根目录下执行,要不然脚本用到的某些文件找不到的。
3.编译系统
make -j4 PRODUCT-generic-user dist
其中generic 表示生成的TARGET_PRODUCT类型为generic,
user代表TARGET_BUILD_VARIANT为user版本。
编译完成之后回在android_src/dist/目录内生成个proct_generic-user_files开头的zip文件.这就是我们需要进行签名的文件系统.
4.开始签名
./build/tools/releasetools/sign_target_files_apks -d key_directory/ out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip
通过sign_target_files_apks 脚本,完成android系统的签名工作.
key_directory/ 表示key所在的目录。
out/dist/proct_mol-target_files.zip 源文件。
out/dist/signed_target_files.zip 生成签名的目标文件。
可能会出现:
ERROR: no key specified for:
CalendarWidget.apk
Contacts_yellowpage.apk
SnsAppMain.apk
这表示,签名并没有成功,原因是由于有些apk程序已经签过名了或者找不到对应的key. 这需要我们对apk设置过滤,不对上面的应用进行签名.方法如下:
通过参数"-e <apkname>=" 来过滤这些应用.
./build/tools/releasetools/sign_target_files_apks -d key_directory/ -e CalendarWidget.apk= -e Contacts_yellowpage.apk= -e SnsAppMain.apk= -e out/dist/proct_mol-target_files.zip out/dist/signed_target_files.zip
输入该命令时会提示输入key的密码,会出现四次密码输入提示。分别为四种类型的key的密码。
5.生成image文件
./build/tools/releasetools/img_from_target_files out/dist/signed-target-files.zip signed-img.zip
用img_from_target_files 命令对生成的igned-target-files.zip文件进行打包,signed-img.zip包含了boot.img,userdate.img,system.img文件等.
6.通过fastboot下载signed-img.zip文件
fastboot update signed-img.zip
通过fastboot就可以把签了名的系统文件烧到手机上了。
‘伍’ 如何生成Android的签名证书
cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名。现在还是讲讲在cmd怎么操作生成签名证书。
1、dos下进入JDK的bin目录
运行如下命令:keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
(-validity 20000代表有效期天数),命令完成后,bin目录中会生成android.keystore
示例:
C:\Program Files (x86)\Java\jdk1.8.0_25\bin>
keytool -genkey -alias test.keystore -keyalg RSA -validity 20000 -keystore d:\test.keystore
ps:-alias test 生成的keystore别名,-keyalg RSA 加密和数字签名的算法,-validity 20000 有效天数
输入密钥库口令:123456
再次输入新口令:123456
您的名字与姓氏是什么?
[Unknown]: rob
您的组织单位名称是什么?
[Unknown]: abc
您的组织名称是什么?
[Unknown]: abc
您所在的城市或区域名称是什么?
[Unknown]: guangzhou
您所在的省/市/自治区名称是什么?
[Unknown]: guangzhou
该单位的双字母国家/地区代码是什么?
[Unknown]: cn
CN=rob, OU=abc, O=abc, L=guangzhou, ST=guangzhou, C=cn是否正确?
[否]: y
输入 <test> 的密钥口令
(如果和密钥库口令相同, 按回车):
如果没有错误则回去查看D盘根目录下,多了test.keystore
所以第一次输入的是,密钥库的密码。
最后输入时密钥别名的密码。到这里生成签名就搞定啦。
2、查看md5指纹验证
输入keytool -list -v -alias androiddebugkey -keystore 再加上刚刚从红色框中复制出来的内容
我这里的就是keytool -list -v -alias androiddebugkey -keystore C:\Users\ZLQ\.android\debug.keystore了,回车
-alias androiddebugkey 这个是别名
-keystore C:\Users\ZLQ\.android\debug.keystore 具体位置的密钥库
要求输入密码,密码是android,至此就可以拿到MD5认证指纹了
‘陆’ 如何对android的apk签名进行验证
方法/步骤
1
菜单菜单键,键入cmd命令进入命令模式。如图:
2
命令模式中,进入JDK的安装目录的Bin子目录下。(我的JDK安装在E盘,所以先进入E盘,然后再进入JDK安装目录)
3
通过keytool.exe 工具来创建keystore库.
输入以下命令:
keytool -genkeypair -alias - mydemo.keystore -keyalg RSA -validity 100
-keystore mydemo.keystore
命令说明如下:
-genkeypair :指定生成数字证实
-alias :指定生成数字证书的别名
-keyalg:指定生成数字证书的算法 这里如RSA算法
-validity:指定生成数字证书的有效期
-keystore :指定生成数字证书的存储路径。 (这里默认在keytool.exe 目录下)
回车 出现如图交互式界面 输入数字证书费密码 作者 公司等详细信息
如图 :
4
完成后,keystore库创建完成,你可以在指定的保存目录下找到 如图:
5
使用jarsigner命令对未签名的APK安装包进行签名。使用JDK安装目录下bin子目录下的jarsigner.exe工具来进行签名。
然后把未签名的apk也拷贝到此目录。如图:
6
使用如下命令进行签名:
jarsigner -verbose -keystore mydemo.keystore -signedjar
-Note.apk Notes.apk mydemo.keystore
以上命令的说明:
-verbose:指定生成详细输出
-keystore:指定数字证书存储路径
-signedjar:该选项的三个参数为 签名后的apk包 未签名的apk包 数字证书别名
注意有效期哦。
7
签名后的apk 如图:
8
sdk目录下tool目录下使用zipalign.exe工具优化APK安装包。
将已经签名的apk包放在zipalign.exe同目录下 如图:
9
使用如下命令:
zipalign -f -v 4 -Note.apk -Notes.apk
命令说明:
-f :指定强制覆盖已有文件
-v 指定生成详细输出
4:指定档案整理基于的字节数 一般是4 也有基于32位的。
-Note.apk :优化前APK
-Notes.apk 优化后的APK
10
运行命令后,在该目录下生成一个-Notes.apk,这个就是优化过的APK安装包
,该安装包可以对外发布。
如图:
如果能对你有帮助,希望你能收藏和支持。
http://jingyan..com/article/3c48dd3491d91fe10be358f4.html
‘柒’ android 打包使用之前的keystore再签名为什么不显示alias
一般是不会显示的
首先当然是先复制一份正式证书出来作为要修改为的临时调试证书。
2. 修改keystore密码的命令(keytool为JDK带的命令行工具):
keytool -storepasswd -keystore my.keystore
其中,my.keystore是复制出来的证书文件,执行后会提示输入证书的当前密码,和新密码以及重复新密码确认。这一步需要将密码改为android。
3. 修改keystore的alias:
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
这一步中,my_name是证书中当前的alias,-destalias指定的是要修改为的alias,这里按规矩来,改为androiddebugkey!这个命令会先后提示输入keystore的密码和当前alias的密码。
4. 修改alias的密码:
keytool -keypasswd -keystore my.keystore -alias androiddebugkey
这一步执行后会提示输入keyst
‘捌’ 如何获取android app的签名
方法/步骤
1
1 win7,开始菜单,搜索cmd
2
2 打开cmd
3
3 进入.android
4
4 使用命令keytool -list -v -keystore debug.keystore
5
5 需要安装keytool,办法是安装jdk,网络搜索jdk并下载安装;具体平台按实际情况选择
6 安装完毕,进入到jdk安装bin目录,并复制地址
7 回到cmd命令窗口,输入cd + 空格,并在标题栏右侧点击粘贴
8 回车,进入到这个目录
9 再次输入keytool -list -v -keystore debug.keystore命令并回车,出现错误
10 先执行以下命令keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
11 按提示输入密码(自己定),密保答案等;到后来需要重新再输入密码,生成完成
12 到keytool目录下,看到debug.keystore已经生成成功
13 将这个文件复制到.android文件夹下
14 现在再次键入生成android签名的命令:keytool -list -v -keystore debug.keystore,按提示输入密码,即可成功生成签名
步骤阅读
15 在标题栏右键选择标记复制其中的SHA1的值,即为android的签名
‘玖’ android签名的别名怎么查
1打Eclipse完工程单击右键|Android Tools|Export Signed Application package…
2框已经自填要导工程TestTestExport,点击next
3第导应用程序前没用签名密钥所选择Create new keystore
4选择密钥保存位置并输入密码重复密码点击next
5接要输入构建密钥些基本信息包括
Alias:密钥别名
Password:步输入密码
Confirm:确认密码
Validity(years):密钥效期至少25
First and Last Name:名字
Organizational Unit:组织单位
Organizational:组织
City of Locality:城市
State or Province:州或省
Country Code(XX):家编码
6填写点击next
7点击 Browse选择apk文件保存位置
8点击Finish等待apk
9apk文件保存目标文件看相应Android应用程序安装文件
现apk文件发布网络应用等市场
END
使用已签名密钥
打Eclipse完工程单击右键|Android Tools|Export Signed Application package…
框已经自填要导工程TestTestExport,点击next
使用步骤密钥工程进行签名选Use existing keystore点击Browse选择该密钥
输入密码点击next
步骤设置密钥别名再输入密码点击next
选择apk文件保存位置点击Finish完
‘拾’ 如何将android应用生成签名
1.签名的步骤
a.创建key
b.使用步骤a中产生的key对apk签名
2.具体操作
方法一: 命令行下对apk签名(原理)
创建key,需要用到keytool.exe (位于jdk1.6.0_24jrein目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24in目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明:-genkey 产生密钥
-alias demo.keystore 别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
-keystore demo.keystore 密钥库位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。
方法二:使用Eclipse导出带签名的apk
Eclipse直接能导出带签名的最终apk,非常方便,推荐使用,步骤如下:
第一步:导出。
第二步:创建密钥库keystore,输入密钥库导出位置和密码,记住密码,下次Use existing keystore会用到。
第三步:填写密钥库信息,填写一些apk文件的密码,使用期限和组织单位的信息。
第四步:生成带签名的apk文件,到此就结束了。
第五步:如果下次发布版本的时候,使用前面生成的keystore再签名。
第六步:Next,Next,结束!
方法三:使用IntelliJ IDEA导出带签名的apk
方法步骤基本和Eclipse相同,大概操作路径是:菜单Tools->Andrdoid->Export signed apk。