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

AMc*_*McI 5 sdk android cordova ionic-framework zipalign

我正在使用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
Run Code Online (Sandbox Code Playgroud)

看来我可以很好地运行,并且可以正常运行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的那一刻。

MJ *_*tes 7

当未签名的 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
Run Code Online (Sandbox Code Playgroud)


Xel*_*lom 1

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

\n\n

快速解释:

\n\n
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
zipalign -v 4 HelloWorld-release-unsigned.apk HelloWorld.apk\n
Run Code Online (Sandbox Code Playgroud)\n