【问题标题】:zipalign: command not foundzipalign:找不到命令
【发布时间】: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

标签: android bash ionic-framework ionic


【解决方案1】:

解决了!

  1. 我将 zipalign 文件从我的 Library/Android/sdk/build-tools/21.1.2 复制到我的 Ionic 项目文件夹中

  2. 我像这样在 zipalign 命令前面添加./ - ./zipalign -v 4 /Users/zulhilmizainudin/Desktop/kl-parking/platforms/android/build/outputs/apk/android-release-unsigned.apk android-release.apk

  3. 完成。现在我在 Ionic 项目文件夹中获得了 android-release.apk

感谢 Michael 的解决方案!

【讨论】:

  • 一个小建议是使用符号链接,而不是复制二进制文件本身。
  • 这是唯一的解决方案。我尝试了 10 000 个建议的解决方案,只有这 1 个有效。谢谢@Zulhilmi
  • 在我的情况下,它没有抛出任何错误,但我没有得到任何新的 apk 文件。为什么?
【解决方案2】:

如果您使用的是 Windows,正确的方法是将 zipalign.exe 的路径添加为 PATH 环境变量。

  1. 查找 zipalign.exe 在您的 PC 中的位置,在我的例子中是

C:\Users\random-username\AppData\Local\Android\sdk1\build-tools\24.0.1

  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

            【讨论】:

              猜你喜欢
              • 2014-09-11
              • 2011-07-16
              • 2021-02-10
              • 1970-01-01
              相关资源
              最近更新 更多