• 对Android应用签名


      Android使用包名作为唯一标识,当在同一台手机安装两个包名相同的应用,后安装的应用就会覆盖前面的应用(签名相同的情况下)。

      签名有两个主要作用:

        1.确定发布者身份。由于应用开发者可以通过使用相同的包名来替换已经安装的程序,因此使用签名可以避免发生这种情况。

        2.确保应用的完整性。签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。

      **在开发、调试阶段,AS会自动生成调试证书进行签名。当应用发布时,必须使用合适的数字证书对应用进行签名。

    ⒈使用AS对Android应用进行签名

      1.单击AS主菜单中的Build  =>  “Generate Signed Bundle / APK”

      2.此时系统会提示你生成"Android App Bundel",还是生成“APK”,其中Android App Bundel时Google新推出的动态发布方案,这种发布方式的App更小、安装更快,但目前最大的问题时仅支持Google Play(Google应用商店),国内由于“谷歌服务不给力”的原因经常404,因此我们选择“APK”。

      3.选择已有的还是新建,我们选择新建,“Create new ”

      4.填写完成后选择“OK”后在新窗口中选择刚刚创建的数字证书。

      5.单击“Next”按钮,在新的对话框中选择APK安装包的存储路径及签名版本,V1版本只对JAR包签名,V2版本对整个APK签名,建议选择V2版本。

      6.选择“Finish”后签名完成。

    ⒉使用Android命令对APK签名

      如果不想借助AS对Android应用进行签名或有时候需要对一个“未签名”的APK进行签名,则可通过"命令"对Android应用进行手动签名。

      1.创建Key store库,使用JDK bin目录下的keytool.exe工具来生成数字证书。

    keytool -genkeypair -alias Coreqi -keyalg RSA -validity 400 -keystore fanqi.jks

      选项说明:

        -genkeypair:指定生成数字证书

        -alias:指定生成数字证书的别名

        -keyalg:指定生成数字证书的算法。使用RSA算法

        -validity:指定生成数字证书的有效期

        -keystore:指定生成数字证书的存储路径

      之后,输入证书的详细信息即可。

      2.使用Android的apksigner.bat命令对未签名的APK安装包进行签名,apksigner.bat位于Android SDK的build-tools目录下。apksigner命令就是V2版本的签名(API29为V3)。

    ****

      可以通过AS的Build  =》  Build Bundle(s) / APK(s)  =》 Build APK(s)来生成未签名的APK

    在命令行窗口输入以下命令:

    apksigner sign --ks C:Usersfanqifanqi.jks --ks-key-alias Coreqi --out C:Usersfanqiapp_sign.apk C:UsersfanqiAndroidStudioProjectsMyApplicationappuildoutputsapkdebugapp-debug.apk

      选项说明:

        sign:指定使用apksigner命令执行签名

        --ks:指定数字证书的存储路径

        --ks-key-alias:指定数字证书的别名

        --out 文件路径:指定签名后的APK文件路径及文件名

        最后一个参数则代表未签名的APK文件

    输入命令后回车输入数字证书的密码,如果签名成功,该命令不会有任何提示。

    apksigner还提供了verify子命令来验证签名是否有效。

    在命令行窗口输入以下命令对APK安装包的签名状态执行检查

    apksigner verify -v C:Usersfanqiapp_sign.apk

    上面的输出提示用户,签名检查已经得到确定,其中V1版本的签名为false,V2版本的签名为false,V3版本的签名为true。

      

  • 相关阅读:
    [转]SQL Server中的执行引擎入门
    [转]C# 导入导出Excel通用类(SamWang)
    【转】TSQL查询进阶—理解SQL Server中的锁
    [转载]使用分页方式读取超大文件的性能试验
    【总结】读《WEB三层架构的束缚》后的感想
    【转】jQuery使用 $.post提交json数据
    【原创】关于索引的总结
    【转】.net 匿名函数的变化
    【转】List<T>的Sort,Find,Exists等的使用
    【转】Http中Get/Post请求区别
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/11005245.html
Copyright © 2020-2023  润新知