发布应用时找不到 zip-align
Posted
技术标签:
【中文标题】发布应用时找不到 zip-align【英文标题】:cannot find zip-align when publishing app 【发布时间】:2014-08-17 23:54:54 【问题描述】:cannot.find.zip.align=The zipalign tool was not found in the SDK.
Please update to the latest SDK and re-export your application
or run zipalign manually.
Aligning applications allows android to use application resources
more efficiently.
这是我尝试发布应用时收到的消息。我正在使用最新版本的 Android SDK Tools(今天发布的 23 个)和 SDK Platform-tools(今天发布的 20 个)。我从中获得了一个 APK,但如果我尝试将其上传到 Google Play,我会收到一个错误,抱怨它不是 zip 对齐的。
运行 zipalign 手动修复了 apk,但有谁知道这是什么原因以及如何修复它?
【问题讨论】:
最新的sdk工具(23)未正确打包。此版本中的许多工具都面临问题。 【参考方案1】:我遇到了同样的问题。 为了修复它,我将 Zipalign 文件从 sdk/build-tools/android-4.4W 文件夹复制到 sdk/tools/
已编辑:由于 Google 更新了 Android SDK,新的构建工具确实解决了这个问题。所以我鼓励大家按照 Pang 在下面帖子中的建议更新到 Android SDK Build-tools 20。
【讨论】:
它必须是文件的副本,而不是 OSX 中的符号链接。我使用了符号链接(通常就足够了),但仍然找不到。 我在-sdk\build-tools\20.0.0下找到了 不要从其他目录复制 exe。使用 SDK Manager 安装 SDK Build tools v20 使用 ant build-release 时,需要在 project.properties 中添加 sdk.buildtools=19.1.0 或 =20.0.0。另请注意,ANT build.xml 中的 zipalign 属性集已更改为指向正确的工具链版本。 正如一些答案中提到的,您需要安装 Android SDK Build-tools Rev. 20。我做到了。但仍然得到同样的错误。然后我必须将 Zipalign 从“sdk/build-tools/20.0.0”复制到“sdk/tools/”【参考方案2】:我通过安装 Android SDK Build-tools 20 修复了它:
在Eclipse → 下拉菜单 → 窗口 → Android SDK Manager,勾选Android SDK Build-tools Rev. 20,然后点击Install n package(s)…按钮开始安装。
【讨论】:
完成此操作后我不得不重新启动 eclipse 修订版。 23.0.0 修复了这个问题...对最新版本很有用【参考方案3】:安装后就可以使用了
Android SDK Build-tools Rev.20
【讨论】:
【参考方案4】:我决定为此制作一个视频。我一直将它粘贴到工具中,但可惜这对我不起作用。我将其移至平台工具并立即发布..之后必须重新启动 Eclipse。
Tutorial for fixing missing zipalign
【讨论】:
很棒的视频,谢谢,对我来说,它通过将 zipalign 添加到工具而不是平台工具来工作 这个链接确实帮助了我,但我没有将 zipalign.exe 从构建工具移动到平台工具,而是将构建工具文件夹添加到 PATH env【参考方案5】:我使用了 zipalign 的完整路径。对于 mac,我在 Finder 中找到了可执行文件并单击它。然后,为了发布我运行的应用程序
/Users/username/development/sdk/tools/zipalign -v 4 HelloWorld-release-unsigned.apk HelloWorld.apk
而不是
zipalign -v 4 HelloWorld-release-unsigned.apk HelloWorld.apk
【讨论】:
对于 windows(我的 zipalign 路径):C:\Users\Machine\AppData\Local\Android\Sdk\build-tools\27.0.3\zipalign.exe
My Example cmd & 'C:\Users\Machine\AppData\Local\Android\Sdk\build-tools\27.0.3\zipalign.exe' -v 4 './platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk' './platforms/android/app/build/outputs/apk/release/app-release-signed.apk'
【参考方案6】:
Mac / Linux:
这对我有用(你可能想用你的构建工具版本替换 22.0.1):
编辑:~/.bashrc
export ANDROID_HOME=~/Android/Sdk/
export ANDROID_TOOLS=~/Android/Sdk/tools/
export ANDROID_BUILD_TOOLS=~/Android/Sdk/build-tools/22.0.1/
export ANDROID_PLATFORM_TOOLS=~/Android/Sdk/platform-tools/
PATH=$PATH:$ANDROID_HOME:$ANDROID_TOOLS:$ANDROID_PLATFORM_TOOLS:$ANDROID_BUILD_TOOLS
然后运行:
source ~/.bashrc
或者只是关闭终端并重新启动它。
【讨论】:
只有一次编辑:您错过了最后一行的“导出”。 :-)【参考方案7】:在 Mac 上,我执行了以下操作:
在 o/s 上找到(我已经下载了 19 和 20 的构建工具)
按 Ctrl-Open 以允许来自 Internet 的应用程序
将其从 sdk/build-tools/android-4.4W 文件夹移动到 sdk/tools/。呼。
【讨论】:
【参考方案8】:随着 SDK 更新到 20、版本 20 的构建和平台工具以及 23 的 sdk 费用,Google 已经移动了很多东西。
Gradle(如果您使用的是 Android Studio)尚未更新以反映这些更改,正如其他答案中所述,将 zipalign
二进制文件复制到 /sdk/tools/
现在应该可以解决问题。
更新:自从 Android Studio 0.8.1 发布以来,这个问题现在似乎已经解决了……
你只需要更新你的build.gradle
,它应该会再次正常工作
compileSdkVersion 20
buildToolsVersion "20.0.0"
targetSdkVersion 20
如果您使用任何兼容或支持库
compile 'com.android.support:appcompat-v7:20.+'
compile 'com.android.support:support-v4:20.+'
【讨论】:
澄清一点,将二进制文件从您的 android sdk 文件夹移动到 android studio 的 sdk 文件夹。比如:C:\Program Files (x86)\Android\android-sdk\tools\zipalign.exe 到 C:\Program Files (x86)\Android\android-studio\sdk\tools\zipalign.exe google 已更新 android studio (0.8.1) 并且此新版本不再出现问题【参考方案9】:检查 SDK 管理器,它已安装“构建工具”。我的默认状态下,没有这样做。
【讨论】:
【参考方案10】:如果您使用的是 gradle,只需更新 ypur gradle 插件!
将 build.gradle 中的行从:
classpath 'com.android.tools.build:gradle:0.9.+'
到:
classpath 'com.android.tools.build:gradle:0.11.+'
它对我有用。
请注意,变量 buildToolsVersion(对我来说是“20.0.0”)必须与您的构建工具版本匹配。
祝你好运:)
【讨论】:
【参考方案11】:对于 Android Studio 1.0,您必须使用 zipAlignEnabled true
【讨论】:
【参考方案12】:我的修复工作是将 zipalign.exe 从 sdk\build-tools\android-4.4W 复制到 sdk\platform-tools,如 digiboomz 链接的视频所示,并且无法在 sdk\tools 中复制它
【讨论】:
【参考方案13】:如果在命令行中找不到 zipalign 命令,请将 zipalign 的文件路径添加到环境变量中。如上所述,更改 exe 文件位置永远不会好。
对于 Windows 用户:
添加到User->PATH->"path to zipalign folder"
在我的例子中,路径是C:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
。
在那个文件夹中是 zipalign.exe
此链接可以帮助您设置路径并理解它http://www.voidspace.org.uk/python/articles/command_line.shtml#path
【讨论】:
【参考方案14】:我使用 Eclipse,但在更新过程中出现了问题。这对我有用,因为上面的答案没有。 我检查了 ant 的 build.xml 应该在哪里找到 zipalign.exe。
在:C:\Development\Android\android-sdk\tools\ant\build.xml
zipalign 定义为:
<property name="zipalign" location="$android.build.tools.dir/zipalign$exe" />
表示其预期在:
C:\Development\Android\android-sdk\build-tools\18.0.1
该目录对应于“Android SDK 管理器”中安装的“Android SDK Build-tools”的最高版本。所以,这就是我复制 zipalign.exe(我从 Android Studio 安装中获得!)的地方,并且签名的应用现在会自动再次进行 zipalign!
【讨论】:
【参考方案15】:我以管理员身份运行@您的 SDK Manager.exe 在 C:\Program Files\Android SDK 目录中解决了
之后,您将在任何存储库中获得更新的构建工具
【讨论】:
【参考方案16】:解决此问题的步骤,
-
安装最新版本的 Android SDK Build-Tools
检查 zipalign.exe 在文件夹 android-sdk\build-tools\ 中是否可用,例如android-sdk\build-tools\21.1.0\
在某些旧版本的 android 中,您可能找不到 zipalign.exe。不要惊慌,检查 zipalign 可用的任何其他版本。
打开您的 project.properties 文件并配置构建工具以指向 zipalign.exe 所在的位置。例如sdk.buildtools=21.1.0.
重新启动 Eclipse 并再次尝试导出。它应该可以工作。
【讨论】:
【参考方案17】:在装有 OSX 10.10.5、Android Studio 和 SDK 的 Mac 上,路径为
/Users/mles/Library/Android/sdk/build-tools/23.0.1/zipalign
【讨论】:
【参考方案18】:自 Android Plugin for Gradle,修订版 2.2.0(2016 年 9 月)以来,Zipalign gradle 任务已被弃用。
如果您想继续使用它,请将 android.useOldPackaging=true 添加到您的 gradle.properties 文件中。
详细解释点击here。
通过采用新的默认打包管道来提高构建性能,该管道在一项任务中处理压缩、签名和压缩对齐。您可以通过将 android.useOldPackaging=true 添加到 gradle.properties 文件来恢复使用旧的打包工具。使用新的打包工具时,zipalignDebug 任务不可用。但是,您可以通过调用 createZipAlignTask(String taskName, File inputFile, File outputFile) 方法自己创建一个。 除了传统的 JAR 签名之外,APK 签名现在还使用 APK 签名方案 v2。所有 Android 平台都接受生成的 APK。签名后对这些 APK 的任何修改都会使其 v2 签名无效并阻止在设备上安装。 块引用
【讨论】:
【参考方案19】:zipalign
已移至 build-tools\19.1.0
和 build-tools\20.0.0
,我认为您应该根据目标 SDK 使用其中之一
【讨论】:
【参考方案20】:我通过卸载 Android SDK Platform (4.4W) 然后重新安装来修复它。 安装后我也重启了 Eclipse。
【讨论】:
【参考方案21】:在我的例子中,SDK Build Tools 20 已经安装好了。 我将 zipalign.exe 复制到 Tools 文件夹中,但没有成功。
之后我注意到我更新了 Eclipse 并没有删除或重命名旧文件夹。
所以我做到了:
1) 重命名旧的 Eclipse 文件夹 2) 重启Eclipse
Eclipse 要求更正 Android 首选项,因为问题是 Eclipse,它仍在尝试使用旧文件夹
【讨论】:
【参考方案22】:Google 使用构建工具版本修复了这个错误:23.0.3 现在 zipalign 已正确打包,一切正常。
【讨论】:
【参考方案23】:通常 zipalign.exe 靠近“Android 管理器”(也称为“Android”、“Android SDK”等),因此您可以搜索“Android 管理器” 在 Windows 搜索中并在命令上方右击和打开文件位置。 您可能在:某物\Android\android-sdk\tools。然后只需返回一个文件夹并转到 Android\android-sdk\build-tools\23.0.3。 zipalign 在那里,你可能无法通过双击使用它,所以你必须复制 zipalign 文件的所有路径以在 中使用CMD,您必须输入的最终代码将类似于:
C:\Users\heitor\AppData\Local\Android\android-sdk\build-tools\23.0.1\zipalign.exe -v 4 android.apk android2.apk
【讨论】:
【参考方案24】:当我完全绝望时,我做了以下操作,这让我找到了official zipalign.exe。简短的回答是使用网站官方(但不公开:-)部分的链接:
https://dl.google.com/android/repository/build-tools_r28-rc1-windows.zip
如果你在 2018 年之后使用这个接收器,你可能需要完整的解释:
打开Android Studio
Android Studio->Tools->Android->SDK Manager->Android SDK->SDK update site
在文本编辑器中写入链接并在浏览器中打开。就我而言,第一个链接对我有用:
https://dl.google.com/android/repository/repository2-1.xml
寻找最新的软件包构建工具。在我的例子中,它是 build-tools_r28-rc1-windows.zip,但你可以在你的时间找到最新的
Ctrl+F build-tools_
像我一样用找到的包名替换 URL 的最后一部分:
https://dl.google.com/android/repository/build-tools_r28-rc1-windows.zip
下载包,解压,幸运找到官方文件:
zipalign.exe
如果对您有帮助,欢迎您的反馈。
【讨论】:
Android Studio->Tools->Android->SDK Manager->Android SDK ->SDK Tools -> 勾选“Android SDK Build-Tools 28-rc1”,然后申请,安装构建工具,安装后可以在SDK\build-tools\28.0.0-rc1中找到zipalign.exe。 你是对的,应该安装它,但在我的情况下没有安装。我检查了。这个食谱是为那些在尝试之后没有这个文件的人准备的。【参考方案25】:我已经解决了这个问题:
打开 Android Studio > Preferences > SDK Tools 并检查“Android SDK Build-Tools”
【讨论】:
以上是关于发布应用时找不到 zip-align的主要内容,如果未能解决你的问题,请参考以下文章