【发布时间】:2011-05-06 15:04:21
【问题描述】:
我正在使用带有ADT 10.0 插件和Android3.0 SDK 的Eclipse Ganymede 来构建我的应用程序。
当我尝试在手机上部署应用程序时,我的控制台上会显示以下内容:
[2011-05-06 10:35:38 - MyProject] Failed to install MyProject.apk on device
[2011-05-06 10:35:38 - MyProject] (null)
[2011-05-06 10:35:38 - MyProject] Launch canceled!
以下内容被写入adb logcat:
INFO/zipro(2499): Could not find end-of-central-directory in Zip
DEBUG/asset(2499): failed to open Zip archive '/data/local/tmp/MyProject.apk'
WARN/PackageParser(2499): Unable to read AndroidManifest.xml of /data/local/tmp/MyProject.apk
WARN/PackageParser(2499): java.io.FileNotFoundException: AndroidManifest.xml
WARN/PackageParser(2499): at android.content.res.AssetManager.openXmlAssetNative(Native Method)
WARN/PackageParser(2499): at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:523)
WARN/PackageParser(2499): at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:491)
WARN/PackageParser(2499): at android.content.pm.PackageParser.parsePackageLite(PackageParser.java:597)
WARN/PackageParser(2499): at com.android.defcontainer.DefaultContainerService$1.getMinimalPackageInfo(DefaultContainerService.java:126)
WARN/PackageParser(2499): at com.android.internal.app.IMediaContainerService$Stub.onTransact(IMediaContainerService.java:100)
WARN/PackageParser(2499): at android.os.Binder.execTransact(Binder.java:288)
WARN/PackageParser(2499): at dalvik.system.NativeStart.run(Native Method)
ERROR/PackageManager(1579): Failed to handle start copy. Giving up
ERROR/PackageManager(1579): java.lang.NullPointerException
ERROR/PackageManager(1579): at android.os.Parcel.readException(Parcel.java:1253)
ERROR/PackageManager(1579): at android.os.Parcel.readException(Parcel.java:1235)
ERROR/PackageManager(1579): at com.android.internal.app.IMediaContainerService$Stub$Proxy.getMinimalPackageInfo(IMediaContainerService.java:220)
ERROR/PackageManager(1579): at com.android.server.PackageManagerService$InstallParams.handleStartCopy(PackageManagerService.java:5065)
ERROR/PackageManager(1579): at com.android.server.PackageManagerService$HandlerParams.startCopy(PackageManagerService.java:4954)
ERROR/PackageManager(1579): at com.android.server.PackageManagerService$PackageHandler.doHandleMessage(PackageManagerService.java:476)
ERROR/PackageManager(1579): at com.android.server.PackageManagerService$PackageHandler.handleMessage(PackageManagerService.java:421)
ERROR/PackageManager(1579): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/PackageManager(1579): at android.os.Looper.loop(Looper.java:143)
ERROR/PackageManager(1579): at android.os.HandlerThread.run(HandlerThread.java:60)
当我尝试在 cmd 提示符下使用 adb shell 安装它时,我得到:
EOCD not found, not Zip
file 'D:\Workspace\MyProject\bin\MyProject.apk' is not a valid zip file
我已尝试清理项目/删除gen 文件夹/删除调试密钥库。没有任何效果;
请指教。
【问题讨论】:
-
某些东西明显损坏了您的 .apk 文件。您是否尝试过
ant clean并从头开始重建? -
Eclipse 为我构建;我不使用蚂蚁。构建工具无法将所有内容打包到有效的 apk 存档中。除了这个,其他项目都可以编译。我尝试通过复制源代码来重新创建一个新的 Android 项目,但这也不起作用。
-
我收到同样的错误(“无法读取 AndroidManifest.xml”),但 apk 绝对是一个有效的 zip 文件,并且来自 adb install 的错误消息不同:“失败 [INSTALL_FAILED_ALREADY_EXISTS]”- - 奇怪,以前在现有副本上安装从来没有困难过。从 Android UI(设置 => 应用程序)卸载后,它最终可以重新安装。