如何签署一个android apk文件

我正在尝试签署我的apk文件。 我无法弄清楚如何去做。 我找不到好的深入方向。 我有很less的编程经验,所以任何帮助,将不胜感激。

手册很清楚。 请详细说明在完成工作之后你会遇到什么问题,我build议:

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

好吧,一个小的概述没有参考或日蚀,所以留下一些空间的错误,但它是这样的

  • 在eclipse中打开你的项目
  • 按右键 – >工具(android工具?) – >导出签名的应用程序(apk?)
  • 通过向导:
  • 做一个新的钥匙店。 记住那个密码
  • 签署您的应用程序
  • 保存等

另外,从链接:

用Eclipse ADT编译并签名

如果您将Eclipse与ADT插件一起使用,则可以使用“导出向导”导出已签名的.apk文件(甚至可以根据需要创build新的密钥存储库)。 导出向导为您执行与Keytool和Jarsigner的所有交互,这允许您使用GUI对程序包进行签名,而不是像上面讨论的那样执行手动程序来编译,签名和alignment。 一旦向导已经编译并签名你的包,它也将执行与zipalignment的包alignment。 由于导出向导同时使用Keytool和Jarsigner,因此应确保可以在计算机上访问它们,如上面的“签名基本设置”中所述。

在Eclipse中创build一个签名和alignment的.apk:

  1. 在包资源pipe理器中select项目,然后select文件>导出。
  2. 打开Android文件夹,select导出Android应用程序,然后点击下一步。

    导出Android应用程序向导现在开始,它将引导您完成对应用程序进行签名的过程,包括select签名.apk(或创build新的密钥库和私钥)的私钥的步骤。

  3. 完成导出向导,您的应用程序将被编译,签名,alignment,并准备分发。

以下是如何手动签名APK的指南。 它包含有关在build-tools 24.0.3 (10/2016)中引入的新的apk-signer signer的信息。

自动化过程:

使用这个工具(使用Google的新apksigner):

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

免责声明:我的开发者:)

手动过程:

步骤1:生成密钥库(仅一次)

您需要一次生成密钥库并使用它来签署unsigned apk。 使用在%JAVA_HOME%/bin/find的JDK提供的keytool

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

步骤2或4:Zipalign

在例如%ANDROID_HOME%/sdk/build-tools/24.0.2/find的Android SDK提供 %ANDROID_HOME%/sdk/build-tools/24.0.2/是一个强制性的优化步骤,如果你想上传apk到Play商店。

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

注意:在使用旧的jarsigner您需要在签名进行zipalign。 当使用新的apksigner方法时,您可以签名之前进行 (困惑,我知道)。 在apksigner工作正常之前调用zipalign,因为apksigner保留APKalignment和压缩(不像jarsigner)。

你可以validationalignment

 zipalign -c 4 my-aligned.apk 

第3步:签名和validation

使用构build工具24.0.2及更高版本

使用jarsigner ,像keytool一样,在%JAVA_HOME%/bin/findJDK发行版 ,并像这样使用它:

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

并可以用来validation

 jarsigner -verify -verbose my_application.apk 

使用构build工具24.0.3和更新

Android 7.0引入了APK签名schemev2,这是一种新的应用签名scheme,可提供更快的应用安装时间,并可防止对APK文件进行未经授权的更改(请参阅此处和此处了解更多详细信息)。 因此,Google实施了自己的apk签名器,名为apksigner (duh!)。脚本文件可以在%ANDROID_HOME%/sdk/build-tools/24.0.3/ (.jar位于/lib子文件夹中)。 像这样使用它

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

并可以用来validation

 apksigner verify my-app.apk 

官方文档可以在这里find。

对于IntelliJ IDEA或Android Studio的用户,请执行以下步骤:
*从菜单Build/Generate signed APK
*您需要创build一个密钥库path。 在对话框中点击Create new 。 您将创build一个包含您的密钥的jks文件。 select文件夹,定义一个密码。 所以你的密钥库确定。
*通过使用别名,密码密码,您的姓名等,为您的应用程序创build新的密钥。
* 点击下一步。
*从对话框中selectProguard或不。

您签名的APK文件已准备就绪。

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

别担心…! 按照下面的步骤,你会得到你的签名的.apk文件。 我也担心这一点,但这一步让我从沮丧中摆脱出来。 签署申请的步骤:

  1. 导出未签名的包:

右键单击Eclipse中的项目 – > Android工具 – >导出未签名的应用程序包(就像我们将GoogleDriveApp.apk导出到桌面一样)

使用密钥库和jarsigner工具签署应用程序(请按照以下步骤操作):

打开cmd – >改变你的“jarsigner.exe”所在的目录(就像在我的系统中一样,它存在于“C:\ Program Files \ Java \ jdk1.6.0_17 \ bin”

现在在cmd中inputbelwo命令:

jarsigner -verbose -keystore c:\ users \ android \ debug.keystore c:\ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias

它会要求你提供你的密码:为密钥库input密码:它会签名你的apk。 要validation签名是否成功,您可以运行:

jarsigner -verify c:\ users \ pir fahim \ Desktops \ GoogleDriveApp.apk

它应该回来:jar子validation。

方法2

如果您使用ADT的eclipse,那么编译,签名,alignment和准备分发文件很简单,只需按照这个步骤操作即可。

  • 文件>导出。
  • 导出android应用程序
  • 浏览 – >select你的项目
  • 下一步 – >下一步

这些步骤将对您的项目进行编译,签名和压缩,现在您已准备好分发项目或在Google Play商店上传。

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

APK Signing Process


要手动签署Android APK文件,我们需要以下三个命令

1 生成密钥库文件

 keytool -genkey -v -keystore <_YOUR_KEYSTORE_NAME>.keystore -alias <_ALIAS_NAME> -keyalg RSA -keysize 2048 -validity 10000 

2 使用Jarsigner签署APK文件

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <_KEYSTORE_FILE_PATH> <_UNSIGNED_APK_PATH> <_ALIAS_NAME> 

3 使用zipalign工具alignment签名的APK

 zipalign -v 4 <_jarsigned_APK_FILE_PATH> <_ZIPALIGNED_SIGNED_APK_FILE_PATH> 

#STEP-1#

Generate Keystore file


F:\ ru \ ru_doc \ Signed_apk \ MySignedApp> keytool -genkey -v -keystore <_YOUR_KEYSTORE_NAME> .keystore -alias <_ALIAS_NAME> -keyalg RSA -keysize 2048 -validity 10000

例_

 F:\ru\ru_doc\Signed_apk\MySignedApp>keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000 

密钥库密码: yourApp @ 123密码: 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: They don't match. Try again Enter key password for <MySignedApp> (RETURN if same as keystore password): Re-enter new password: [Storing id.keystore] D:\ru\SignedBuilds\MySignedApp> 

#STEP-2#

Sign your app with your private keystore using jarsigner

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <_KEYSTORE_FILE_PATH> <_UNSIGNED_APK_PATH> <_ALIAS_NAME>

例_

 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 -verify -verbose -certs <_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> 

#STEP 3#

使用zipalignalignment最终的APK包

zipalign -v 4 <_jarsigned_APK_FILE_PATH> <_ZIPALIGNED_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 succesfully


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> 

注意:

Verify命令只是检查是否正确构build和签名APK!

参考

签署,手动

androidapk代码签名过程

我希望这将有助于电子和所有:)