导航:首页 > 程序命令 > android命令签名

android命令签名

发布时间:2023-07-31 18:17:37

① 如何对android的APP进行签名

签名方法:
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)等。
Keytool的详细参数请参考:
http://www.android123.com.cn/androidkaifa/173.html
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的位置

② 安卓签名是什么 安卓签名是sha1吗

Android签名有什么作用?

平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以Debug面试进行编译的,因此ADT根据会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk文件就不会得到自动签名,这样就需要进行手工签名。给apk签名可以带来以下好处:1.、应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求纳漏山你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!2、应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块3、代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。

apk签名是什么意思?

apk签名相当于程序的身份识别代码。

1、apk签名用于程序编译打包之后,手机在运行程序之前会先去验证程序的签名(可以看作类似于我们电脑上常搜运说的md5)是否合法,只有通过了验证的文件才会被运行,所以签名软件的作用的让文件通过手机的验证为合法,不同的手机、系统是对应不同的签名的。

2、可以用签名工具来更改。比如手机签名工具ZipSigner 2,可以对手机上的文件进行直接签名,支持apk、zip及jar格式,方便刷机或汉化的朋友。有些爱好修改安卓apk软件的用户有时候需要对apk文件进行修改,但是如果在电脑上操作的话,打包签名是十分复杂的,还必须安装java环境,可以说打包一个包是十分麻烦的,这款签名工具可以解决上述遇到的问题。

android中如何确认使用的是什么平台签名

一、判断Apk是否签名用命令:jarsigner -verify -verbose -certs 1、如果有Android Debug字样就是debug2、如果洞中已经签名: [证书的有效期为13-8-31 下午2:31至41-1-16 下午2:31]二、判断Apk签名是否一致jdk 需要安装;想查demo.apk所使用的签名的fingerprint,可以这样做:1、查找apk里的rsa文件 Windows 平台: > jar tf demo .apk findstr RSA linux 平台: $ jar tf demo .apk grep RSA META-INF/CERT.RSA 2、 从apk中解压rsa文件 jar xf demo .apk META-INF/CERT.RSA 3、获取签名的fingerprints keytool -printcert -file META-INF/CERT.RSA 证书指纹: MD5: 5A:5A:96:63:8E:EF:FC:66:9E:BC:1C:2A:A9:1E:E5:95 SHA1: 44:BD:33:2D:C5:21:AE:78:D5:04:92:1A:39:FD:AC:01:E2:32:3C:AB SHA256: 2F:C0:A3:8C:0D:42:84:70:48:78:44:A4:2E:64:5B:50:B3:B3:1E:33:94:62:A3:9F:2F:10:DD:EF:D7:CF:02:0B 签名算法名称: SHA1withRSA 版本: 3 两个apk是否同签名,比较签名的MD5码或SHA1码 ,一样就是相同的,反之,不是。

Android签名有什么作用-apk签名可以带来的好处 详细??

apk 签名可以带来的好处

所有的Android 应用程序都要求开发人员用一个证书进行数字签名,Android 系统不会

安装没有进行签名的应用程序。

平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以

Debug 面试进行编译的,因此ADT 根据会自动用默认的密钥和证书来进行签名,而在以发

布模式编译时,apk 文件就不会得到自动签名,这样就需要进行手工签名。

给apk 签名可以带来以下好处:

1.、应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进

行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。

如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情

况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!

2.、应用程序模块化:Android 系统可以允许同一个证书签名的多个应用程序在一个进

程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块

的方式进行部署,而用户可以独立的升级其中的一个模块

3.、代码或者数据共享:Android 提供了基于签名的权限机制,那么一个应用程序就可

以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行

签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。

4.不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程

中,而且要让他们用相同的证书签名。

标签:作文经典 上一篇:梦见自己做饭什么意思 梦见别人做饭什么意思 下一篇:成语接龙民凋 民什么凋什么成语接龙

android api 签名是什么意思

android api 签名是api调用的时候需要按照约定的参数生成一个字符串,对方接收到后校验参数,合法后接受请求并返回结果。

所有android端的API的有效访问URL包括以下三个部分:

1. 资源访问路径,如/v1/deal/find_deals;

2. 请求参数:即API对应所需的参数名和参数值param=value,多个请求参数间用&连接

如deal_id=1-85462&appkey=00000;

3. 签名串,由签名算法生成

签名算法如下:

1. 对除appkey以外的所有请求参数进行字典升序排列;

2. 将以上排序后的参数表进行字符串连接,如...keyNvalueN;

3. 将app key作为前缀,将app secret作为后缀,对该字符串进行SHA-1计算,并转换成16进制编码;

4. 转换为全大写形式后即获得签名串

签名串获得后,将其作为sign参数附加到对应的URL中,即可正常访问API。

注意:请保证HTTP请求数据编码务必为UTF-8格式,URL也务必为UTF-8编码格式。

参考代码:

// 定义申请获得的appKey和appSecret

String appkey = "XXXXXXXX";

String secret = "";

String apiUrl = "[api.dianping]";

// 创建参数表

Map paramMap = new HashMap ;

paramMap.put("format", "json");

paramMap.put("city", "上海");

paramMap.put("latitude", "31.21524");

paramMap.put("longitude", "121.420033");

paramMap.put("category", "美食");

paramMap.put("region", "长宁区");

paramMap.put("limit", "20");

paramMap.put("radius", "2000");

paramMap.put("offset_type", "0");

paramMap.put("has_coupon", "1");

paramMap.put("has_deal", "1");

paramMap.put("keyword", "泰国菜");

paramMap.put("sort", "7");

// 对参数名进行字典排序

String[] keyArray = paramMap.keySet.toArray(new String[0]);

Arrays.sort(keyArray);

// 拼接有序的参数名-值串

StringBuilder stringBuilder = new StringBuilder;

stringBuilder.append(appkey);

for (String key : keyArray)

{

stringBuilder.append(key).append(paramMap.get(key));

}

stringBuilder.append(secret);

String codes = stringBuilder.toString;

// 字符串连接示例

// XXXXXXXXcategory美食city上海formatjsonhas_coupon1has_deal1keyword泰国菜latitude31.21524limit20longitude121.420033offset_type0radius2000region长宁区sort7

// SHA-1编码, 这里使用的是Apache codec,即可获得签名(shaHex会首先将中文转换为UTF8编码然后进行sha1计算,使用其他的工具包请注意UTF8编码转换)

/*

* 以下sha1签名代码效果等同

* byte[] sha = .apachemons.codec.digest.DigestUtils.sha(.apachemons.codec.binary.StringUtils.getBytesUtf8(codes));

* String sign = .apachemons.codec.binary.Hex.encodeHexString(sha).toUpperCase;

*/

String sign = .apachemons.codec.digest.DigestUtils.shaHex(codes).toUpperCase;

//签名示例

//

android 应用签名怎么获取

1、

下载签名应用,在手机中运行,根据提示输入程序的包名获得一个apk签名字符串,最后将这个字符串填到第一步的应用签名栏处。保存即可正常调试应用了。

2、

选择程序-右键——android tools——签名发布,按步骤生成一个签名keystore和一个经过签名的apk,安装该APK到手机。

3、

选择自己的程序,右键运行到手机。

4、

android 应用签名查看方法如下:

(1) debug的apk通过Eclipse查看,如下图:

(2) 某个keystore签名的应用,通过

Javakeytool-list-keystoreE:Trineakeystoreappsearch.keystore查看,会要求输入签名密码,默认为android。

Android APK签名有什么用呢?

平时我们的程序可以在模拟器上安装并运行,是因为在应用程序开发期间,由于是以 Debug 面试进行编译的,因此ADT 根据会自动用默认的密钥和证书来进行签名,而在以发布模式编译时,apk 文件就不会得到自动签名,这样就需要进行手工签名。 给apk 签名可以带来以下好处: 1.、应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。 如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同! 2.、应用程序模块化:Android 系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块 3.、代码或者数据共享:Android 提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 4.不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。

什么 是 android系统 签名

签名后才可以正常安装,可以保证软件的唯一性,可以检验软件是否他人盗用;

安卓开发的过程中签名在什么情况下会变更

签名,是开发者对apk文件的加密,防止程序被盗版,因为Android系统是linux内核,程序的区分是通过包名package来区分的,那别人也可能开发一个同包名的应用,这时安桌系统就会判断一下,如果签名相同则替换,如果签名不同则不允许安装重复包名的应用。至于你说什么时候变更,通常开发者是不能变更签名的,你改了签名程序就不能更新安装了

运行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=pany/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 =" 来过滤这些应用.

./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 源码生成APK签名文件

我们很多应用需要用到系统签名,可以通过生成系统签名文件,在生成apk时使用这个签名,然后可以安装到机器中,不需要放在源码里编译,重新刷系统。

先附上 50和 20机器人通用的debugkey(图已经省略)

在Linux环境中,以Android源码目录为根目录。

其中的platform.pk8是制作系统签名需要的文件。

1、在这个目录下,执行

生成临时文件platform.pem

2、接着执行以下命令,将在目录下生成platform.p12文件,它本质上应该就是一个数字证书

3、然后再执行以下命令出现以下信息,表示成功生成platform.jks

这个名字可以改成debug.keystore. 它的后缀本身是没有关系,eclipse和AS都识别 platform.jks

4、然后在打包 apk 的时候选择platform.jks文件,就可以直接用adb命令安装apk到机器中了。

xxxx表示需要安装的apk路径
5、签名的 Key store password和Key password都是android

④ Android使用apksigner轮转签名的小整理

这篇文章主要是分析 apksigner rotate ,从字面意思理解,这是签名轮转。但是我们不讲原理,我们直接旋转,签名。
我们先贴两个链接,如果一看就明白就不用往后看了。

1. 具有密钥轮转的 APK 签名方案
相应的图如下:

工具的存放位置(apksigner在哪里):
apksigner是Google官方提供的针对Android apk签名及验证的专用工具,
位于Android SDK/build-tools/SDK版本/apksigner.bat

我们来一张详情图:

打开命令行进入D:\Sdk\build-tools\29.0.0-rc2输入apksigner,得到下面的结果:

在其他的文件夹下面运行上面的命令得到的结果是不同的。比如:

详细的结果如下:

我这里只是粘取了部分信息。这算是对我们的apk一个简单的验证。

开始执行轮转:

输入release.jks的密码,输入release2.jks的密码然后就导出了path文件,这个path文件是一个什么呢??其实就是一个二进制的文件。
但是就是找不到path的路径,其实path文件的位置是在 D:\ ,就在我电脑的D盘根目录。

从上面可以看到第8条就是我们今天的主角了。
下面开始签名:

执行完成上面的步骤,我们的签名就算是完成了。

先安装一个支持V2签名的apk到手机。然后看支持V3签名的apk能否覆盖安装。如果可以表示安装成功。

今天主要就是学习一下轮转签名和apksigner的一些使用,算是一个小技能的提升。

⑤ 如何对Android的APP进行签名

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。

⑥ Android Studio 之签名

通过签名可以确保数据来源的可靠性和数据的不可篡改性

对 Apk 进行签名,也就是在 Apk 中写入一个指纹,写入指纹后,Apk 中有任何修改,都会导致这个指纹无效,Android 系统在安装 Apk 进行签名校验时就会不通过,进而无法安装该 Apk

如上图:

通常的签名验签过程中,接收方收到消息后,会先向 CA 机构验证证书的合法性,再进行签名校验。但 Apk 的证书通常由开发者自己制作,没有向 CA 机构申请,Android 系统在安装 Apk 时也并没有校验证书本身的合法性,只是从证书中提取公钥和加密算法,因此,如果对第三方 Apk 重新签名,也能安装到没有安装过这个 Apk 的系统中

keystore 文件包含私钥、公钥和数字证书,分为很多种,Android 使用的是 Java 标准 keystore 格式 JKS(Java Key Storage)

Android App Bundle:用于通过 Google Play 发布的应用,需要升级到AS 3.2 以上版本才支持App Bundle 格式;
APK:用于创建可部署到设备上的签名 APK

点击 Finish 就会生成签名文件与签名后的 Apk

当我们需要升级 Apk 版本的时候,需要再次对 Apk 文件进行签名,可以通过配置 build.gradle 让其自动生成签名后的 Apk

如果你的项目是开源的,需要把你的签名信息写在 local.properties 中,然后在 .gitignore 配置文件中加入 local.properties ,这样 local.properties 就不会提交到开源项目中,签名信息也就不会被人获取

local.properties:

app/build.gradle:

有时候我们的 apk 中某些功能需要系统签名,例如静默安装。测试系统签名的 apk,需要 root 权限,而带 Google APIs 的模拟器不能 root,因此要注意不能选择带 Google APIs 的模拟器

下面执行的操作都是在 Linux 中,如果 apk 是 window 中生成的,需要拷贝到 linux 操作,再将生成的系统签名过得 apk 再拷贝到 window,比较麻烦,可以考虑后面的自动系统签名,还是需要在 linux 操作一次,不过之后就可以只在 window 操作了

这两个文件在目录 aosp/build/target/proct/security 下,如下图

在目录 aosp/prebuilts/sdk/tools/lib 下,如下图

将前面获取的 platform.pk8 、 platform.x509.pem 和 signapk.jar 文件放到需要签名的 apk 同一个目录,执行以下命令

如果出现上面的错误:Failed to load any of the given libraries: [conscrypt_openjdk_jni-linux-x86_64, conscrypt_openjdk_jni-linux-x86_64-fedora, conscrypt_openjdk_jni]

解决方法:

到目录 aosp/prebuilts/sdk/tools/linux/lib64 下,复制 libconscrypt_openjdk_jni.so 文件到需要签名 apk 的同一个目录,并将命令改为

自动进行系统签名的原理是:先生成一个 system.jks 文件,使用 keytool-importkeypair 对 system.jks 文件进行系统签名,再 build.gradle 和 local.properties 进行配置,直接使用带有系统签名的 system.jks 对 apk 进行签名,这样编译生成的apk文件就自带系统签名了

按照前面的方法,生成一个 system.jks 文件,此时是在 window 系统中操作的

进入 keytool-importkeypair 目录,将 system.jks、platform.pk8、platform.x509.pem 文件拷贝进来,拷贝之后的目录结构为

使用 linux 中修改过的带有系统签名的 system.jks 文件将 window 中最开始生成的 system.jks 覆盖掉,再像前面的自动签名部分一样,修改 build.gradle 和 local.properties 的配置,之后生成的 apk 就是系统签名过的了

测试方法是,在 AndroidManifest.xml 中添加 android:sharedUserId="android.uid.system" 后安装到 非 Google APIs 的模拟器上 , Google APIs 的模拟器不能 root,无法安装

会发现只有使用 system.jks 文件签名后才能安装,否则安装失败,会报以下的错误:

⑦ Android开发对apk文件进行签名

对apk签名的步骤(适用于找回apk,对空包进行签名)

1.复制java的jdk,bin目录的绝对路径(如果是默认安装应该和我的路径差不多)C:\Program Files\Java\jdk1.8.0_111\bin

2.进入cmd窗口,进入bin目录(如果是新手,输入cd C:\Program Files\Java\jdk1.8.0_111\bin)

输入命令   jarsigner -verbose -keystore d:\project\360Wallpaper.keystore -signedjar d:\qihusign.apk d:\Qihuunsign.apk QIHU360

将签名修改成自己签名的路径 ,生成的apk文件的名字路径修改一下,再输入需要签名的apk文件路径,最后输入自己签名的别名就可以

(新手,欢迎指正)

阅读全文

与android命令签名相关的资料

热点内容
股市操练大全八册pdf 浏览:118
c传递指针到python 浏览:160
手动添加引导的命令 浏览:52
740服务器小蓝条是做什么的 浏览:520
linux文件操作命令 浏览:125
安卓手机图片文件夹加锁 浏览:778
steam提示音在哪个文件夹 浏览:337
项目开发全程实录pdf 浏览:530
单片机reset 浏览:595
pdf怎么是英文 浏览:969
旗云2压缩机保险 浏览:374
做程序员压力大吗表情包 浏览:312
pdf下拉 浏览:372
php去掉小数后面的0 浏览:954
阿里备案买什么服务器 浏览:261
网络驱动下载到哪个文件夹 浏览:482
达内程序员培训西安 浏览:505
人保送车主惠app上怎么年检 浏览:604
android手机开机密码 浏览:482
linux查看某个进程命令 浏览:530