我签署并打包了Xamarin申请书 所以使用Visual Studio创建了apk文件。
如何在Windows中压缩此文件?
答案 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
答案 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 选项:
右键单击 Android 项目,选择存档...
找到密钥库。我在:
C:\Users\<user>\AppData\Local\Xamarin\Mono for Android\Keystore\<keystore alias name above?>\<or this might be the alias>.keystore
现在停止,您需要使用 google 设置 oauth。
在谷歌开发者控制台中创建 oauth:
查看指纹:
这将显示指纹。将其插入开发者控制台中的 Oath 2 屏幕。 现在在 OAuth 2.0 客户端 ID 中,您有一个客户端 ID!
返回 Visual Studio,选择您在上面创建的签名标识(密钥库),然后单击继续。 这会调出 Google Play 帐户屏幕。点击绿色+符号
提供帐户描述(我使用了应用名称)
从 oauth 2 工作中在上面的谷歌控制台中提供客户端 id
似乎不再有客户端机密了,放些垃圾(警告:这是最不确定的一步 - 似乎我读了一些关于谷歌放弃客户端机密的信息,但我找不到那个信息. 但是,我从来没有在这里输入任何有用的东西,而且一切似乎都在起作用)
点击注册。 现在奇怪的事情发生了:一个网络浏览器出现,你登录你的谷歌开发者帐户,它说一切都很好,你可以关闭窗口。回到 Visual Studio,您可能会遇到错误,而对我而言,实际上没有任何内容上传到 google。但是,如果众神对你微笑,你可能有一个已签名的 APK:
C:\Users
你赢了!你已经跳过了所有的铁环,冲破了他们为阻止你而设置的所有障碍!呜呼! 另一方面,如果你没有签名的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