zipalign:找不到命令
Posted
技术标签:
【中文标题】zipalign:找不到命令【英文标题】:zipalign: command not found 【发布时间】:2015-09-11 22:24:29 【问题描述】:我现在正在处理 Ionic 项目,我想 zipalign
android-release-unsigned.apk
文件。我关注了this guide by Ionic。
当我运行zipalign -v 4 /Users/zulhilmizainudin/Desktop/kl-parking/platforms/android/build/outputs/apk/android-release-unsigned.apk android-release.apk
命令时,我得到-bash: zipalign: command not found
错误。
这是 zipalign 在我的系统中的位置:
/Users/zulhilmizainudin/Library/Android/sdk/build-tools/21.1.2
我尝试将 zipalign 复制到其中并将其放入我的 Ionic 项目文件夹中,然后再次运行 zipalign 命令。但仍然找不到相同的命令。
我现在该怎么办?
【问题讨论】:
“我尝试将 zipalign 复制到其中,并将其放入我的 Ionic 项目文件夹中,然后再次运行 zipalign 命令。但仍然找不到相同的命令。”如果你运行./zipalign
?
zipalign
所在的目录不在你的PATH中,所以运行时必须指定zipalign
所在的位置。
如何在我的 PATH 中找到zipalign
?
要将 build-tools 目录添加到您的 PATH 中,您可以使用 export PATH=$PATH:/Users/zulhilmizainudin/Library/Android/sdk/build-tools/21.1.2
【参考方案1】:
解决了!
我将 zipalign 文件从我的 Library/Android/sdk/build-tools/21.1.2
复制到我的 Ionic 项目文件夹中
我像这样在 zipalign 命令前面添加./
- ./zipalign -v 4 /Users/zulhilmizainudin/Desktop/kl-parking/platforms/android/build/outputs/apk/android-release-unsigned.apk android-release.apk
完成。现在我在 Ionic 项目文件夹中获得了 android-release.apk。
感谢 Michael 的解决方案!
【讨论】:
一个小建议是使用符号链接,而不是复制二进制文件本身。 这是唯一的解决方案。我尝试了 10 000 个建议的解决方案,只有这 1 个有效。谢谢@Zulhilmi 在我的情况下,它没有抛出任何错误,但我没有得到任何新的 apk 文件。为什么?【参考方案2】:如果您使用的是 Windows,正确的方法是将 zipalign.exe 的路径添加为 PATH 环境变量。
-
查找 zipalign.exe 在您的 PC 中的位置,在我的例子中是
C:\Users\random-username\AppData\Local\Android\sdk1\build-tools\24.0.1
-
然后将此位置添加为您的PATH environment variable 中的条目之一。
【讨论】:
设置后重新打开命令窗口生效 如果您在 vscode 中使用 cli,请关闭它们全部,然后重新打开并再次运行命令【参考方案3】:为避免在每次打算构建发布版本时指定或导航到 sdk/build-tools/* 目录,您只需将路径添加到环境变量即可。
$ sudo nano ~/.bash_profile
复制并粘贴以下内容:
导出 PATH=$PATH:/Library/Android/sdk/build-tools/21.1.2
然后您可以保存并退出:
control + o // 保存到文件control + x // 关闭文件 $ source ~/.bash_profile
然后,您可以从项目 CLI 目录运行 zipalign
命令。
【讨论】:
这应该是公认的答案,因为它是解决问题的最简单方法。【参考方案4】:这在 Mac 上对我有用。安装并运行 Android Studio(启动一次很重要)。 然后找到zipalign:
find ~/Library/Android/sdk/build-tools -name "zipalign"
【讨论】:
【参考方案5】:Windows
正确的方法是将zipalign.exe的路径添加为PATH环境变量。
查找 zipalign.exe 在您的 PC 中的位置,在我的例子中是
C:\Users\username\AppData\Local\Android\sdk1\build-tools\29.0.2
然后将此位置添加为您的PATH environment variable 中的条目之一。
MAC
为避免在每次打算构建发布版本时指定或导航到 SDK/build-tools/* 目录,只需将路径添加到环境变量即可。
$ sudo nano ~/.bash_profile
复制并粘贴以下内容:
export PATH=$PATH:/Library/Android/sdk/build-tools/21.1.2
然后您可以保存并退出:
control + o // to save to file
control + x // to close the file
$ source ~/.bash_profile
然后您可以从项目 CLI 目录运行 zipalign 命令。
【讨论】:
【参考方案6】:如果您正在制作 ionic 发布版本,那么您可以使用下面给出的这些信息在应用的根文件夹中制作 build.json 文件
"android":
"release":
"keystore": "Your keystore",
"storePassword": "password",
"alias": "alias name",
"password" : "password",
"keystoreType": ""
确保您可以将密钥库放在应用的根文件夹中,或在密钥库对象中提供密钥库的完整路径
现在你可以像下面这样运行这个命令
ionic cordova build android --release
此命令会自动找到您的 build.json 并进行签名发布构建。
【讨论】:
keystore
和 keystoreType
变量中应包含哪些内容?
制作您的密钥库文件并在 build.json 中根据您的密钥库文件设置密钥库文件名和密钥库类型为 jks 或密钥库【参考方案7】:
解决了!
我按照 Michael Said 复制了 zipalign 文件 (从我的 Library/Android/SDK/build-tools/28.0.3 到我的 Ionic 项目文件夹)
但是当我跑步时
./zipalign -v 4 app-release-unsigned.apk botellamovil.apk
我明白了
./zipalign: ERROR while loading shared libraries: libc++.so: cannot open shared object file: **No such file or directory**
所以,我也复制了 lib & lib64 文件,然后就可以了!!
我希望它会有所帮助:)(对不起我的英语)
【讨论】:
【参考方案8】:自从我从 USB 实时安装程序安装 Kali 以来,我遇到了几个问题。
我发现我需要将此添加到我的 sources.list
文件中 /etc/apt
文件夹中。
只需将sources.list
的内容替换为:
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free
deb http://old.kali.org/kali sana main non-free contrib
deb http://ftp.de.debian.org/debian wheezy main
【讨论】:
【参考方案9】:您应该为 APK 执行(对齐、签名和验证)操作。 在mac中,您应该执行以下步骤:
A - 对齐 APK:
1- 您应该在 android SDK 中找到 zipalign 您的构建工具:
/Users/mina/Downloads/sdk/build-tools/29.0.3/zipalign
2- 您应该找到您的未签名 apk:
/Users/mina/Desktop/apks/app_unsigned.apk
3- 你应该运行的命令包含:
zipalign_path + -v -p 4 + unsigned_apk_path + output_aligned_apk_name
/Users/mina/Downloads/sdk/build-tools/29.0.3/zipalign -v -p 4
/Users/mina/Desktop/apks/app-unsigned.apk app_aligned.apk
4-输出验证成功
B - 签署 APK:
1- 您应该在 android SDK 中找到 apksigner 您的构建工具:
/Users/mina/Downloads/sdk/build-tools/29.0.3/apksigner
2- 你应该在你的电脑中找到你的发布密钥库:
/Users/mina/Desktop/keys/release-Keystore.jks
3- 你应该运行的命令包含:
apksigner_path + sign --ks + release-Keystore_path + --out + output_signed_apk_name + from_aligned_apk_name
/Users/mina/Downloads/sdk/build-tools/29.0.3/apksigner sign --ks
/Users/mina/Desktop/keys/release-keystore.jks
--out app_signed.apk app_aligned.apk
4- 输入您的密钥库密码
C- 验证 APK:
1- 运行以下命令:apksigner_path + verify + app_signed.apk
/Users/mina/Downloads/sdk/build-tools/29.0.3/apksigner verify
app_signed.apk
注意:您可能会发现一些警告:
WARNING: META-INF/....
这里有一些描述:
Apk Metainfo Warning
实际上,这些文件并不重要,它们主要是您所依赖的库的版本,因此即使有人修改了这些文件,也不会对您的应用产生任何影响。这就是为什么它只是一个警告:您的 APK 中的那些文件可以被其他人修改,同时仍然假装 APK 是由您签名的,但这些文件并不重要。
D- 找到您签名的 APK:
/Users/mina/app_signed.apk
【讨论】:
【参考方案10】:我通过将 zipalign 路径设置为环境变量解决了这个问题:
export ZIPALIGN_PATH=~/Library/Android/sdk/build-tools/30.0.3/zipalign
然后我在尝试运行的脚本中将zipalign
替换为$ZIPALIGN_PATH
【讨论】:
以上是关于zipalign:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章