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 并进行签名发布构建。

【讨论】:

keystorekeystoreType 变量中应包含哪些内容? 制作您的密钥库文件并在 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:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章

appium 识别toast找不到zipalign.exe

如何为 mac 获取 zipalign?

ubuntu20.04找不到start命令

ubuntu20netplan命令找不到

sudo xx 找不到命令

python命令找不到 pip 命令找不到解决方案