无法打开 'android-release-unsigned.apk' 作为 zip 存档(zipalign 错误)

Posted

技术标签:

【中文标题】无法打开 \'android-release-unsigned.apk\' 作为 zip 存档(zipalign 错误)【英文标题】:Unable to open 'android-release-unsigned.apk' as zip archive (zipalign error)无法打开 'android-release-unsigned.apk' 作为 zip 存档(zipalign 错误) 【发布时间】:2016-05-20 16:33:08 【问题描述】:

我正在使用 Ionic 构建一个混合应用程序。我最近尝试将 Ionic 应用程序构建到 android 应用程序中,但在连接设备的情况下运行 ionic run android 时出现以下错误:

Running command: /Users/USERNAME/Sites/PROJECT/egenius-client-application/hooks/after_prepare/010_add_platform_class.js /Users/USERNAME/Sites/PROJECT/egenius-client-    application
add to body class: platform-android
ANDROID_HOME=/Users/USERNAME/Library/Developer/android-sdk-macosx
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
No target specified, deploying to device 'F7NPFP131245'.
:preBuild UP-TO-DATE
:preDebugBuild UP-TO-DATE
:checkDebugManifest
:CordovaLib:preBuild UP-TO-DATE
:CordovaLib:preDebugBuild UP-TO-DATE
:CordovaLib:compileDebugNdk UP-TO-DATE
:CordovaLib:compileLint
:CordovaLib:copyDebugLint UP-TO-DATE
:CordovaLib:mergeDebugProguardFiles
:CordovaLib:packageDebugRenderscript UP-TO-DATE
:CordovaLib:checkDebugManifest
:CordovaLib:prepareDebugDependencies
:CordovaLib:compileDebugRenderscript
:CordovaLib:generateDebugResValues
:CordovaLib:generateDebugResources
:CordovaLib:packageDebugResources
:CordovaLib:compileDebugAidl
:CordovaLib:generateDebugBuildConfig
:CordovaLib:generateDebugAssets UP-TO-DATE
:CordovaLib:mergeDebugAssets
:CordovaLib:processDebugManifest
:CordovaLib:processDebugResources
:CordovaLib:generateDebugSources
:CordovaLib:compileDebugJavaWithJavacNote: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

:CordovaLib:processDebugJavaRes UP-TO-DATE
:CordovaLib:transformResourcesWithMergeJavaResForDebug
:CordovaLib:transformClassesAndResourcesWithSyncLibJarsForDebug
:CordovaLib:mergeDebugJniLibFolders
:CordovaLib:transformNative_libsWithMergeJniLibsForDebug
:CordovaLib:transformNative_libsWithSyncJniLibsForDebug
:CordovaLib:bundleDebug
:prepareAndroidCordovaLibUnspecifiedDebugLibrary
:prepareDebugDependencies
:compileDebugAidl
:compileDebugRenderscript
:generateDebugBuildConfig
:generateDebugAssets UP-TO-DATE
:mergeDebugAssets
:generateDebugResValues
:generateDebugResources
:mergeDebugResources
:processDebugManifest
:processDebugResourceszs
:generateDebugSources
:compileDebugJavaWithJavacNote: /Users/alexandermcintosh/Sites/eGenius/egenius-client-application/platforms/android/src/org/apache/cordova/splashscreen/SplashScreen.    java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

:compileDebugNdk UP-TO-DATE
:compileDebugSources
:transformClassesWithDexForDebug
:mergeDebugJniLibFolders
:transformNative_libsWithMergeJniLibsForDebug
:processDebugJavaRes UP-TO-DATE
:transformResourcesWithMergeJavaResForDebug
:validateDebugSigning
:packageDebug
:zipalignDebugUnable to open '/Users/USERNAME/Sites/PROJECT/egenius-client-application/platforms/android/build/outputs/apk/android-debug-unaligned.apk' as zip archive
 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':zipalignDebug'.
> Process 'command '/Users/USERNAME/Library/Developer/android-sdk-macosx/build-tools/23.0.2/zipalign'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2 mins 35.63 secs
ERROR running one or more of the platforms: Error code 1 for command: /Users/USERNAME/Sites/PROJECT/egenius-client-application/platforms/android/gradlew with args:     cdvBuildDebug,-b,/Users/USERNAME/Sites/PROJECT/egenius-client-application/platforms/android/build.gradle,-PcdvBuildArch=x86,-Dorg.gradle.daemon=true,-Pandroid.    useDeprecatedNdk=true
You may not have the required environment or OS to run this project

看来我可以很好地构建,运行ionic build android --release 可以毫无问题地工作,这时我必须使用 ZipAlign 工具。

像这样手动运行工具:~/Library/Developer/android-sdk-macosx/build-tools/23.0.2/zipalign -v 4 android-release-unsigned.apk egenius-app.apk 告诉我:Unable to open 'android-release-unsigned.apk' as zip archive

我已经尝试将我的 SDK 降级到不同的版本,卸载并重新安装插件,但我没有卡住,在线查找并没有提供太多帮助。

有人知道我错过了什么吗?

谢谢, 亚历克斯。

更新 在我删除依赖 Angular Material Design Icons 的那一刻,应用程序构建并成功签名。

【问题讨论】:

【参考方案1】:

当未签名的 apk 与 zipalign 文件不在同一目录时,我遇到了错误。

我通过放置未签名 apk 的文件路径来修复该问题

./zipalign -v 4 /Users/mj/Projects/Ionic/myApp/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk my-signed-release.apk

【讨论】:

【参考方案2】:

试试

ionic cordova plugin rm cordova-plugin-console 

然后重新运行构建、keytool 和 jarsigner

【讨论】:

【参考方案3】:

我遇到了同样的问题,我尝试使用以下命令

zipalign -v 4 /User/ionictutes/myioncApp/app-release-unsigned.apk appname.apk

【讨论】:

【参考方案4】:

你必须先用 jarsigner 签名。然后你就可以压缩它了。

快速解释:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

首先会提示您为密钥库创建密码。然后,回答好工具的其余问题,完成后,您应该在当前目录中创建了一个名为 my-release-key.keystore 的文件。

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name

完成此过程后,您应该能够:

zipalign -v 4 HelloWorld-release-unsigned.apk HelloWorld.apk

【讨论】:

您好 Xelom,感谢您的回复!我像你说的那样生成了一切正常,我得到了生成密钥的密钥工具并且签名工作正常,但是当我尝试压缩它时,我得到:Users/alexandermcintosh/Library/Developer/android-sdk-macosx/build-tools/23.0.2/zipalign -v 4 android-release-unsigned.apk green-running.apk Unable to open 'android-release-unsigned.apk' as zip archive 所以它仍然给出了同样的错误。 我还没有对这个解决方案进行 100% 的测试,但是在我删除了对 Angular Material 的凉亭依赖后,我可以正常完成这个过程。它甚至可以在设备上运行,只是很遗憾,因为大部分项目都依赖于 Angular Material。 看起来就是这种依赖:Angular Material Icons 您是在项目中添加图标还是尝试下载它们?在移动应用程序中下载它们不是一个好习惯。 我在项目中添加图标,我让应用程序尽可能少地需要活跃的互联网连接。从我的bower.json 中删除依赖关系material-design-icons 停止了迄今为止的所有错误。【参考方案5】:

今天我在我的 Mac OS 中遇到了同样的问题,我通过以下步骤解决了它。

    首先我从路径复制android-release-unsigned.apk

    /Applications/XAMPP/xamppfiles/htdocs/Old Projects/kcformulas-2020/mesh-formula/platforms/android/build/outputs/apk/release/android-release-unsigned.apk
    

    到我当前的 Ionic Project 文件夹,即

    /Applications/XAMPP/xamppfiles/htdocs/Old Projects/kcformulas-2020/mesh-formula 
    

    之后我运行以下命令:-

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk mesh_formula
    

    之后,我通过提供完整的 zipalign 路径来运行以下命令,如下所示:-

    /Users/amitgupta/Library/Android/sdk/build-tools/29.0.2/zipalign -v 4 android-release-unsigned.apk KCMeshFormula.apk
    

    执行上述步骤后,我的 APK 已成功生成。

希望将来能对某人有所帮助。

【讨论】:

【参考方案6】:

我遇到了同样的问题,并使用完整路径为我工作。

例如:

zipalign -v 4 /Users/rafaelsantiago/app/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk app.apk

【讨论】:

以上是关于无法打开 'android-release-unsigned.apk' 作为 zip 存档(zipalign 错误)的主要内容,如果未能解决你的问题,请参考以下文章

无法打开源文件怎么解决

无法打开.bat文件

chrome和ie无法打开网页,也无法连接WIFI

无法打开或查找PDB文件,怎么解决

Office无法打开的解决方法

TNT微端无法打开