如何签署一个 android apk 文件

我正在试着签署我的 apk 文件。我不知道该怎么做。我找不到深入的方向。我几乎没有编程经验,所以如果有任何帮助,我将不胜感激。

202875 次浏览

手册已经写得很清楚了。请说明你在完成后遇到了什么问题,我建议:

Https://developer.android.com/studio/publish/app-signing.html

好的,一个小的概述,没有参考或日食周围,所以留出一些空间,为错误,但它是这样工作的

  • 在 Eclipse 中打开项目
  • 按右键-鼠标-> 工具(android tools?)-> 导出签名应用程序(apk?)
  • 通过向导:
  • 制作一个新的密钥存储。记住那个密码
  • Sign your app
  • 省省吧。

此外,从这个链接可以看出:

用 Eclipse ADT 编译和签名

If you are using Eclipse with the ADT 插件,您可以使用导出向导 输出一个签名的.apk (甚至 如果需要,创建一个新的密钥存储库)。 导出向导执行所有 与 Keytool 的互动 Jarsigner 给你,这样你就可以 使用 GUI 为包签名 执行手工程序,以 如前所述,编译、签名和对齐 一旦向导编译了 并在你的包裹上签名 与包装对齐 因为导出向导 同时使用 Keytool 和 Jarsigner 应确保这些资料可供查阅 在您的计算机上,如上所述 在签名的基本设置中。

中创建有符号和对齐的.apk 日食:

  1. 在 PackageExplorer 中选择项目并选择 File > Export.
  2. 打开 Android 文件夹,选择 ExportAndroidApplication,然后单击 Next.

    现在启动 ExportAndroid 应用程序向导,它将指导 you through the process of signing 你的申请,包括申请的步骤 选择私钥 签署.apk (或创建一个新的 密钥存储库和私有密钥)

  3. Complete the Export Wizard and your application will be compiled, 签名,对齐,准备好 分配。

我遇到了这个问题,通过检查清单中的 min sdk 版本解决了这个问题。 它被设置为15(ICS) ,但我的手机运行10(姜饼)

对于 IntelliJ IDEA 或 Android Studio 的用户,请执行以下步骤:
* 从菜单 Build/Generate signed APK
你需要创建一个密钥存储路径 * 。从对话框中单击 Create new。您将创建一个包含密钥的 jks 文件。选择文件夹,定义密码。所以你的钥匙店没问题。
* Create new key by for your application by using alias, key password, your name etc.
* 点击下一步。
* 从对话框中选择 前卫或不选择。

您签名的 APK 文件已准备好。

帮助文件: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html

别担心!按照以下步骤,你将得到你的签名。Apk 文件。我也很担心这一点,但这些步骤让我从挫折中走出来。 签署申请的步骤:

  1. 导出未签名的包:

右键单击 Eclipse-> Android Tools-> Export Unsigned Application Package (比如这里我们将 GoogleDriveApp.apk 导出到桌面)中的项目

使用密钥库和 jarsigner 工具对应用程序进行签名(按照下面的步骤) :

Open cmd-->change directory where your "jarsigner.exe" exist (like here in my system it exist at "C:\Program Files\Java\jdk1.6.0_17\bin"

现在在 cmd 中输入 belwo 命令:

jarsigner -verbose -keystore c:\users\android\debug.keystore C: 用户 pir fahim 桌面 GoogleDriveApp.apk my _ keystore _ alias

It will ask you to provide your password: 为 keystore 输入密码: It will sign your apk.To verify that the signing is successful you can run:

Jarsigner 验证 c: 用户 pir fahim 桌面 GoogleDriveApp.apk

它应该会带来: 罐子已确认。

方法2

如果您在 ADT 中使用 eclipse,那么编译、签名、对齐和准备发布文件都很简单。

  • 文件 > 出口。
  • 导出 Android 应用程序
  • 浏览-> 选择您的项目
  • 下一个—— > 下一个

These steps will compiled, signed and zip aligned your project and now you are ready to distribute your project or upload at Google Play store.

这里有一个关于如何手动签署 APK 的指南。它包括了关于 build-tools 24.0.3 (10/2016)中引入的新 apk-signer的信息

自动处理:

Use this tool (uses the new apksigner from Google):

Https://github.com/patrickfav/uber-apk-signer

Disclaimer: Im the developer :)

手工处理:

步骤1: 生成 Keystore (只生成一次)

You need to generate a keystore once and use it to sign your unsigned apk. 使用在 %JAVA_HOME%/bin/中找到的 keytool 由 JDK 提供

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

步骤2或4: Zipalign

zipalign 这是 Android SDK 提供的一个工具 found in e.g. %ANDROID_HOME%/sdk/build-tools/24.0.2/ is a mandatory optimzation step if you want to upload the apk to the Play Store.

zipalign -p 4 my.apk my-aligned.apk

注意: 使用旧的 jarsigner时需要 zipalign 之后签名。当使用新的 apksigner方法时,您使用 之前签名(我知道这很令人困惑)。因为 apksigner 保留了 APK 对齐和压缩(与 jarsigner 不同)。

可以将 核实

zipalign -c 4 my-aligned.apk

第三步: 签名和验证

使用 build-tools 24.0.2及以上版本

使用 jarsigner,就像键盘工具一样,在 %JAVA_HOME%/bin/中找到 附带 JDK 发行版,并像这样使用它:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

并且可以通过

jarsigner -verify -verbose my_application.apk

使用 build-tools 24.0.3和更新的版本

Android 7.0引入了 APK 签名方案 v2,一个新的应用程序签名方案,提供更快的应用程序安装时间和更多的保护,以防止未经授权的修改 APK 文件(见 给你here了解更多细节)。因此谷歌实现了他们的 自己的名为 apksigner的 APK 签名者(废话!) The script file can be found in %ANDROID_HOME%/sdk/build-tools/24.0.3/ (the .jar is in the /lib subfolder). Use it like this

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

and can be verified with

apksigner verify my-app.apk

The official documentation can be found here.

签署程序

To manually sign an Android APK file run these three commands:

  1. 生成 Keystore 文件

    keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
    
  2. Sign Your APK file using jarsigner

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
    
  3. Align Signed APK using zipalign tool

    zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
    

STEP 1


Generate Keystore file

keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000

Example:

keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000

密钥存储库密码: < strong > yourApp@123 密码: < strong > yourApp@123

CMD O/P

D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
-alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]:  MySignedApp Sample
What is the name of your organizational unit?
[Unknown]:  Information Technology
What is the name of your organization?
[Unknown]:  MySignedApp Demo
What is the name of your City or Locality?
[Unknown]:  Mumbai
What is the name of your State or Province?
[Unknown]:  Maharashtra
What is the two-letter country code for this unit?
[Unknown]:  IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
[no]:  y


Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
C=IN
Enter key password for <MySignedApp>
(RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]


D:\ru\SignedBuilds\MySignedApp>

步骤2


Sign your app with your private keystore using jarsigner

Jarsigner-verose-sigalg SHA1 with RSA-digestalg SHA1-keystore KEYSTORE _ FILE _ PATH UNSIGNED _ APK _ PATH 别名

例子

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id

CMD O/P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
adding: META-INF/MANIFEST.MF
adding: META-INF/---.SF
adding: META-INF/---.RSA
signing: AndroidManifest.xml
.....
signing: classes.dex
signing: lib/commons-codec-1.6.jar
signing: lib/armeabi/libkonyjsvm.so
jar signed.


Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.


D:\ru\SignedBuilds\MySignedApp>

Verify that your APK is signed

Jarsigner-validy- 详细证书 JARSIGNED _ APK _ FILE _ PATH

例子

jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk

CMD O/P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope


jar verified.


Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
future revocation date.


D:\ru\SignedBuilds\MySignedApp>

步骤3


使用 zipalign 对齐最终的 APK 包

Zipalign-v4 JARSIGNED _ APK _ FILE _ PATH ZIPALINED _ SIGNED _ APK _ FILE _ PATH _ With _ NAME _ ofSignedAPK

例子

zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O/P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...


4528613 classes.dex (OK - compressed)
5656594 lib/commons-codec-1.6.jar (OK - compressed)
5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful


D:\Android\android-sdk\build-tools\19.1.0>

Verify that your APK is Aligned successfully

zipalign -c -v 4 YOUR_APK_PATH

例子

zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O/P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...


4453984 res/drawable/zoomout.png (OK)
4454772 res/layout/tabview.xml (OK - compressed)
4455243 res/layout/wheel_item.xml (OK - compressed)
4455608 resources.arsc (OK)
4470161 classes.dex (OK - compressed)
5597923 lib/commons-codec-1.6.jar (OK - compressed)
5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful


D:\Android\android-sdk\build-tools\19.1.0>

注:

验证命令只是检查是否正确地构建和签名了 APK!

参考文献

我希望这对大家都有帮助:)