【问题标题】:Issues in publishing unsigned .apk file?发布未签名的 .apk 文件时出现问题?
【发布时间】:2014-03-04 13:06:43
【问题描述】:

关于签名和未签名的 .apk 文件有很多问题。为了测试和调试,我们可以使用 bin 文件夹中生成的未签名的 .apk 文件。此 apk 文件使用虚拟密钥库文件生成。我的问题是为什么我们需要使用签名的 apk。我们不能发布未签名的 apk 吗?这有什么问题?

【问题讨论】:

    标签: android apk keystore android-keystore


    【解决方案1】:

    您想要发布签名应用程序的原因有很多。甚至还有一个关于它的great article。这里有几个原因:

    1. 这是一种最终用户可以验证应用是否确实由同一作者发布的方法。
    2. 发布过程允许 Android 使用附加功能,例如应用内购买。没有它,Google 就无法验证该应用确实是您的。
    3. 这是一种表示受信任的人发布了该应用程序的方式。
    4. 这是一个两步验证过程来验证您的应用是否属于您。这提供了额外的安全层,这是通过其他方式无法实现的。
    5. 允许使用相同密钥签名的应用程序共享资源。调试证书由所有人共享,您可能不希望所有应用都拥有该级别的访问权限。

    基本上,它使黑客的生活更加困难,这总是一件好事。

    例如,有人可能会向人们授予 Google Play 帐户的访问权限以修改说明,但您不希望他们上传新应用。没有密钥,他们无法上传应用程序。此外,如果您的谷歌密码被破解,您仍然无法上传应用程序。破解它需要你的私钥文件和密钥。

    【讨论】:

    • 以场景为例,我正在为公司的员工开发一个安卓应用程序(不要在 playStore 中发布)。我可以给一个未签名的 apk 版本吗?
    • 事实上,您可以,尽管我仍然会在实践中签名。签名证明该应用已准备好用于非开发/测试环境。
    • 你解释得很好...TnQ
    • @PearsonArtPhoto 你不能给任何人一个未签名的应用程序,它不能安装在设备/模拟器上
    • @TGMCians:我经常安装未签名的应用程序,但总是通过 Eclipse。我假设您可以以类似的方式安装它们。我想签名会更容易。嗯...将适当地编辑。
    【解决方案2】:

    @Pearson 几乎涵盖了所有内容,但我喜欢介绍一件事。

    在 Android 中,您不能以任何方式在开发者手机/模拟器上安装未签名的应用程序。您必须通过调试或您自己的证书签署您的应用程序。

    安装后,Android SDK 会在名为 debug.keystore 的密钥库中为您生成一个“调试”签名证书。调试证书的有效期只有 365 天。

    因此,当您通过任何 IDE Eclipse/Android Studio 安装应用程序时,IDE 也会使用调试证书对应用程序进行签名。

    更新

    我的问题是为什么我们需要使用签名的 apk。我们不能发布一个未签名的 apk 吗?这有什么问题?

    您需要使用自己的发布密钥库证书对应用进行签名,因为您无法发布使用调试证书签名的应用,因为

    一个原因是您的调试证书在一年内到期,因此在此之后您无法发布您的应用程序的更新一旦您的调试证书过期,为什么还有谷歌不允许的原因以及一些更主要的安全问题。

    第二个原因是android系统使用证书作为识别应用程序作者和建立应用程序之间信任关系的手段。

    【讨论】:

      【解决方案3】:

      只有在开发者选项中启用了调试功能的人才能运行它。人们需要知道如何启用开发者选项(通过在手机设置中点击“内部版本号”七次)。 Google 不会让您发布调试 apk,因此人们将不得不旁加载它。

      【讨论】:

        【解决方案4】:

        带有调试密钥库的 Apk 是签名的 apk。未签名的 apk 无法上传到设备。对于生产,您必须创建一个不同的密钥库来进行签名。此外,一旦发布,未来的更新必须使用相同的密钥库完成。如果密钥库丢失,则无法更新应用程序。

        【讨论】:

          【解决方案5】:

          未签名的 APK 更难追踪到原始作者。尽管原则上这并没有什么问题,但 Google 会强制您在发布到 Google Play 之前对您的 APK 进行签名。因此,当开发人员滥用 Google Play 发布软件时,Google 有权撤销证书,即。恶意软件。

          另外,因为你必须向谷歌支付证书,谷歌希望恶意开发者不会一遍又一遍地付费发布应用程序。

          【讨论】:

          • 您实际上不需要为证书付费。
          • 我一直以为你做到了。对不起,我的错。
          • 不,您为帐户付费,而不是证书。
          【解决方案6】:

          来自 Android 开发者:

          “Android 系统要求所有已安装的应用程序都使用证书进行数字签名,证书的私钥由应用程序的开发者持有。Android 系统使用证书作为识别应用程序作者和建立应用程序之间信任关系的手段“...

          阅读所有相关信息here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-31
            • 2018-06-06
            • 2019-06-19
            • 2016-04-05
            • 2023-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多