由于无效的APK文件,安装失败!- Android

3

关于这个问题有几篇帖子,但是我的日志记录完全不同。不确定出了什么问题。当我尝试在设备上运行时,会得到控制台日志:

[2012-07-17 14:50:56 - zrox] Uploading zrox.apk onto device '3134F748F94100EC'
[2012-07-17 14:50:56 - zrox] Installing zrox.apk...
[2012-07-17 14:50:57 - zrox] Installation failed due to invalid APK file!
[2012-07-17 14:50:57 - zrox] Please check logcat output for more details.
[2012-07-17 14:50:57 - zrox] Launch canceled!

并且,Logcat:

07-17 19:50:56.043: W/zipro(4533): Unable to open zip '/data/local/tmp/zrox.apk': Permission denied
07-17 19:50:56.043: D/asset(4533): failed to open Zip archive '/data/local/tmp/zrox.apk'
07-17 19:50:56.047: D/dalvikvm(252): WAIT_FOR_CONCURRENT_GC blocked 0ms
07-17 19:50:56.047: W/PackageParser(4533): Unable to read AndroidManifest.xml of /data/local/tmp/zrox.apk
07-17 19:50:56.047: W/PackageParser(4533): java.io.FileNotFoundException: AndroidManifest.xml
07-17 19:50:56.047: W/PackageParser(4533):  at android.content.res.AssetManager.openXmlAssetNative(Native Method)
07-17 19:50:56.047: W/PackageParser(4533):  at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:487)
07-17 19:50:56.047: W/PackageParser(4533):  at android.content.res.AssetManager.openXmlResourceParser(AssetManager.java:455)
07-17 19:50:56.047: W/PackageParser(4533):  at android.content.pm.PackageParser.parsePackageLite(PackageParser.java:722)
07-17 19:50:56.047: W/PackageParser(4533):  at com.android.defcontainer.DefaultContainerService$1.getMinimalPackageInfo(DefaultContainerService.java:169)
07-17 19:50:56.047: W/PackageParser(4533):  at com.android.internal.app.IMediaContainerService$Stub.onTransact(IMediaContainerService.java:110)
07-17 19:50:56.047: W/PackageParser(4533):  at android.os.Binder.execTransact(Binder.java:367)
07-17 19:50:56.047: W/PackageParser(4533):  at dalvik.system.NativeStart.run(Native Method)
07-17 19:50:56.047: W/DefContainer(4533): Failed to parse package
07-17 19:50:56.047: W/ActivityManager(252): No content provider found for permission revoke: file:///data/local/tmp/zrox.apk
07-17 19:50:56.117: D/dalvikvm(252): GC_EXPLICIT freed 380K, 18% free 14176K/17159K, paused 4ms+6ms, total 70ms

我刚在我的Nexus S上安装了一个Android 4.1的ROM。昨天我还用的是4.0.3,那时它是可以工作的。我在Eclipse中已经安装了4.1的SDK,并且android:targetSdkVersion设置为16。我也尝试过对项目进行清理,但仍然无法解决问题。有什么想法吗?


你在模拟器中运行了它吗?那么你得到了什么错误? - Anirudh Ramanathan
你能安装其他的APK吗?这听起来像是ROM中的一个bug,昨天也有人说了类似的话。愚蠢的问题是要看看/data/local/tmp是否存在——它应该存在,并且由shell拥有,但根据升级路径的不同,可能不存在,因为在ICS之前使用的是/data/local。 - Chris Stratton
是的,刚刚检查了一下。它在那里。我给了它777以防万一。但还是没有任何变化。 - kousun12
也可以在模拟器上正常运行。 - kousun12
似乎无法从Eclipse启动任何其他APK。:/真的很希望在真正的JB设备上开发。 - kousun12
@kousun12:可能不是解决方案,但您是否确保已启用所有允许从“未知”来源(即非Play Store应用程序)安装应用程序的设置?还要允许USB调试等等。 - Squonk
8个回答

6

如果你正在运行最新的Siyah内核并且是JB系统,你可以安装Extweaks->转到其他设置-> ADB二进制模式,将其设置为DEVELOPMENT ADB..


我曾遇到同样的问题,并通过使用你提到的 ADB 设置进行了修复。因此,如果你正在运行支持 ExTwaeks 的内核,则@itsmewajid 的解决方案将适用于你。 - Khurram Majeed
谢谢,这救了我的一天 :) 另外,对于任何遇到此问题的人来说,需要在使用 ExTweaks 后重新启动才能使 ADB 正常工作。 - Ivan Bartsov
太好了,谢谢!我的不需要重新启动,但对于不同版本的内核可能会有所不同。 - Danation

1

是的,那只是一个ROM的问题。我为我的Nexus S安装了OTA JB ROM,现在一切都很好。 - kousun12

0

看着相关的代码行:

07-17 19:50:56.047: W/PackageParser(4533): Unable to read AndroidManifest.xml of /data/local/tmp/zrox.apk
07-17 19:50:56.047: W/PackageParser(4533): java.io.FileNotFoundException: AndroidManifest.xml

听起来Eclipse出了点问题,可以尝试增加Eclipse.ini文件的内存占用或清理项目并重新构建。

我知道你可能已经尝试过这个方法,但还是值得一试!

检查Eclipse本身以及Android开发插件软件的更新情况,目前最新版本为20。


0

由于您没有使用模拟器,请使用adb将所有内容推送到您的设备上。这与通过USB、蓝牙或存储到云端并使用设备下载相同。尝试以此方式安装它。如果可以正常工作,请检查您的adb工具。如果无法正常工作,则使用apksignerjarsigner验证您的apk。例如;

apksigner verify <path to apk>

这应该能让你了解情况。或者使用_apkanalyzer将失败的apk与正常版本进行比较。无论哪种方式,你都会开始理解为什么它失败了!

祝一切顺利。


0

0

删除您的AVD并创建另一个。


7
欢迎来到Stack Overflow。这个问题有一个被采纳的答案,原贴有评论确认问题与"rom"有关。我不清楚你的回答如何帮助任何人。表面上看,你似乎在诊断另一个问题。当你回答一个类似这样的问题时,最好确保你的回答添加了新的内容。如果你相当确信被采纳的答案是错误的(尽管得到采纳),那么你应该说出来,解释原因,并能够提供有用的参考资料来支持你的观点。 - Jonathan Leffler

0

问题似乎与权限有关。它无法打开归档文件,因此问题不在清单文件内。

因此,使用adb push位置将其推送到设备上,进入设备中的位置,更改其可执行权限,chmod 666 name.apk

然后安装,pm install name.apk。


-1
我遇到了同样的问题。看起来eclipse没有改变apk的权限。你可以使用以下解决方法:使用adb push将你的apk安装到设备上,然后登录shell并对apk执行chmod 755命令。

你为什么想要对apk执行chmod 755操作呢?它不是二进制可执行文件。但是你可以通过adb shell执行以下操作:pm install name_of_apk.apk... - t0mm13b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接