如何在Windows

时间:2016-04-28 13:40:12

标签: android xamarin apk

我签署并打包了Xamarin申请书 所以使用Visual Studio创建了apk文件。

如何在Windows中压缩此文件?

7 个答案:

答案 0 :(得分:23)

确保您已安装 Android SDK build-Tools ,然后检查您的SDK安装位置C:\Program Files(x86)\Android\android-sdk\build-tools\23.0.1\zipalign您将在android构建工具中找到zipAlign,然后像这样使用它:

C:\Program Files(x86)\Android\android-sdk\build-tools\23.0.1\zipalign -v 4 infile.apk outfile.apk

  

用法

     

将infile.apk对齐并保存为outfile.apk:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

  

确认existing.apk的对齐方式:

zipalign -c -v <alignment> existing.apk

  

对齐是一个定义字节对齐边界的整数。这必须始终为4(提供32位对齐),否则它实际上什么都不做。

     

标志:

     

-f:覆盖现有的outfile.zip

     

-v:详细输出

     

-c:确认给定文件的对齐

从Windows输出(额外的参数不在Docs:O中):

Zip alignment utility
Copyright (C) 2009 The Android Open Source Project

Usage: zipalign [-f] [-p] [-v] [-z] <align> infile.zip outfile.zip
       zipalign -c [-v] <align> infile.zip

<align>: alignment in bytes, e.g. '4' provides 32-bit alignment
-c: check alignment only (does not modify file)
-f: overwrite existing outfile.zip
-p: page align stored shared object files
-v: verbose output
-z: recompress using Zopfli

ZipAlign Docs

答案 1 :(得分:4)

我花了很长时间搜索Android命令行构建工具。在任何Program Files目录中都找不到它们。显然,在我的系统上,这些工具位于以下位置:

C:\Users\{username}\AppData\Local\Android\Sdk

我通过转到文件>项目结构> SDK位置在Android Studio中找到了该位置。

编辑:显然,“我的系统”是Windows,尤其是Windows 10。

答案 2 :(得分:2)

for win10在c:\ Users中,例如:C:\ Users \\ Android \ sdk \ build-tools \

答案 3 :(得分:1)

对于Windows 10,将PATH变量设置为

C:\Users\<NAME>\AppData\Local\Android\Sdk\build-tools\<version>

然后从存在应用程序的位置运行命令

zipalign -v 4 <YOUR_APP_NAME> app-release-final.apk

答案 4 :(得分:0)

最后,路径完全不同,我安装了android studio,它创建了以下路径:

C:\Users\<Username>\AppData\Local\Android\Sdk\build-tools\<VERSION>\zipalign.exe

只需直接指向该路径并运行命令,请确保使用文件所在位置的完整路径...

希望有帮助。

答案 5 :(得分:0)

这不是关于如何手动 zipalign 的问题的直接答案。但是经过几天的努力使事情顺利进行后,我希望这可以帮助某人避免掉头发。最后发现我的apk没有正确签名。似乎(推测)Xamarin 在签名后会进行 zip 对齐。所以当我遇到 zipalign 错误时,我使用了 zipalign,结果发现下一个错误是它没有正确签名。以下是我获取可用于在 Play 商店中创建发行版的 apk 所采取的步骤。很明显,我并不精通整个签名过程,如果我的步骤看起来很尴尬,但可以通过更简单的方式完成,我深表歉意。

我的环境是:Windows 10、Visual Studio 2019、Xamarin Forms 5 应用程序。

首先,创建一个用于发布的apk: 在 Visual Studio 解决方案资源管理器中,右键单击您的 Android 项目,Android 选项:

  1. 取消选中使用共享运行时、生成一个包、启用多 dex。
  2. 检查使用增量... aapt2
  3. 包格式:apk
  4. dex 编译器 d8
  5. 代码压缩器 r8

右键单击 Android 项目,选择存档...

  1. 这将创建一个 apk 并打开存档管理器。
  2. 在档案管理器中,点击分发...,选择 Google Play 商店
  3. 调出签名标识,单击绿色 + 按钮 3.1)填写别名(我认为这将成为您的密钥库文件的名称) 3.2) 密码 3.3)全名(我用的是app的名字) 3.4) 组织

找到密钥库。我在:

C:\Users\<user>\AppData\Local\Xamarin\Mono for Android\Keystore\<keystore alias name above?>\<or this might be the alias>.keystore

现在停止,您需要使用 google 设置 oauth。

在谷歌开发者控制台中创建 oauth:

  1. 设置、API 访问、创建 OAuth 客户端(会将您转至谷歌云平台、API 和服务)
  2. 创建凭据
  3. 应用类型:安卓
  4. 包名:在Visual Studio中右键android项目,选择Android Manifest,显示包名
  5. SHA-1 证书指纹

查看指纹:

  1. 打开命令提示符,转到上面的密钥库文件夹。
  2. 找到您的 jdk 文件夹。这取决于您安装的版本。我的如下所示:
  3. 运行密钥工具:c:\progra~1\Java\jdk1.8.0_112\bin\keytool.exe -list -keystore ..keystore

这将显示指纹。将其插入开发者控制台中的 Oath 2 屏幕。 现在在 OAuth 2.0 客户端 ID 中,您有一个客户端 ID!

返回 Visual Studio,选择您在上面创建的签名标识(密钥库),然后单击继续。 这会调出 Google Play 帐户屏幕。点击绿色+符号

  1. 提供帐户描述(我使用了应用名称)

  2. 从 oauth 2 工作中在上面的谷歌控制台中提供客户端 id

  3. 似乎不再有客户端机密了,放些垃圾(警告:这是最不确定的一步 - 似乎我读了一些关于谷歌放弃客户端机密的信息,但我找不到那个信息. 但是,我从来没有在这里输入任何有用的东西,而且一切似乎都在起作用)

  4. 点击注册。 现在奇怪的事情发生了:一个网络浏览器出现,你登录你的谷歌开发者帐户,它说一切都很好,你可以关闭窗口。回到 Visual Studio,您可能会遇到错误,而对我而言,实际上没有任何内容上传到 google。但是,如果众神对你微笑,你可能有一个已签名的 APK:

    C:\Users\AppData\Local\Xamarin\Mono for Android\Archives.Android .apkarchive\signed-apks

你赢了!你已经跳过了所有的铁环,冲破了他们为阻止你而设置的所有障碍!呜呼! 另一方面,如果你没有签名的apk,那么......回到谷歌搜索其他解决方案,抱歉:(

手头有签名的 apk(此时也是 zip 对齐的 - 您没有运行 zipalign 工具),现在您可以返回到 google pay 控制台,并创建一个版本(例如内部测试)。将这个已签名的 apk 放入,你应该很高兴。

答案 6 :(得分:0)

如果您使用与 Unity 一起安装的 Android SDK:

C:\Program Files\Unity\Hub\Editor<UnityVersion>\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools<SDKVersion>\zipalign.exe