[英]Unable to open 'android-release-unsigned.apk' as zip archive (zipalign error)
我正在使用 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的那一刻。
當未簽名的 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
嘗試
ionic cordova plugin rm cordova-plugin-console
然后重新運行構建、keytool 和 jarsigner
我有同樣的問題,我嘗試使用以下命令
zipalign -v 4 /User/ionictutes/myioncApp/app-release-unsigned.apk appname.apk
你必須先用 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
今天我在我的 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 成功生成。
希望它將來對某人有所幫助。
我有同樣的問題,它使用完整的路徑工作。
例如:
zipalign -v 4 /Users/rafaelsantiago/app/platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk app.apk
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.