【问题标题】:Cannot install .apk on phone无法在手机上安装 .apk
【发布时间】:2010-08-31 09:55:51
【问题描述】:

我刚刚完成了我的第一个应用程序,已发布并签署它并转移到我的手机上,但无法将其安装到我的手机上 - 在通过屏幕显示“你想安装此应用程序”之后,并且单击安装,我只收到一条消息“未安装应用程序”,没有进一步的解释。我使用jarsigner -verify检查了签名。

我已将 .apk 上传到http://ubuntuone.com/p/ESB/,并使用手机上的 LogCollector 应用程序获取了日志。相关摘录转载如下。

Log Collector version: 1.1.0
Device model: HTC Desire
Firmware version: 2.2
Kernel version: 2.6.32.15-gf9c0527
htc-kernel@and18-2 )
#1 PREEMPT Fri Jul 23 17:26:53 CST 2010
Build number: FRF91

08-31 10:18:21.289 I/ActivityManager(   93): Starting activity: Intent { act=android.intent.action.VIEW dat=file:///sdcard/blanket.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity }
08-31 10:18:21.359 I/PackageParser(20453): uk.co.oketchup.blanketsquare: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE
08-31 10:18:21.379 D/skia    (20453): --- decoder->decode returned false
08-31 10:18:21.669 I/ActivityManager(   93): Displayed activity com.android.packageinstaller/.PackageInstallerActivity: 331 ms (total 331 ms)
08-31 10:18:22.059 D/PowerManagerService(   93): New lightsensor value:640, lcdValue:192
08-31 10:18:22.390 D/SynchronizationService(20285): Checking preferences
08-31 10:18:22.769 I/ActivityManager(   93): Starting activity: Intent { dat=file:///sdcard/blanket.apk cmp=com.android.packageinstaller/.InstallAppProgress (has extras) }
08-31 10:18:22.849 D/skia    (20453): --- decoder->decode returned false
08-31 10:18:22.999 D/dalvikvm(20459): GC_EXPLICIT freed 419 objects / 23968 bytes in 74ms
08-31 10:18:23.089 D/PackageParser(   93): Scanning package: /data/app/vmdl73677.tmp
08-31 10:18:23.099 I/PackageParser(   93): uk.co.oketchup.blanketsquare: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE
08-31 10:18:23.129 I/ActivityManager(   93): Displayed activity com.android.packageinstaller/.InstallAppProgress: 320 ms (total 320 ms)
08-31 10:18:23.139 W/PackageParser(   93): Exception reading res/layout/main.xml in /data/app/vmdl73677.tmp
08-31 10:18:23.139 W/PackageParser(   93): java.io.IOException
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:207)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.ZipFile$ZipInflaterInputStream.read(ZipFile.java:432)
08-31 10:18:23.139 W/PackageParser(   93): at java.io.FilterInputStream.read(FilterInputStream.java:130)
08-31 10:18:23.139 W/PackageParser(   93): at org.apache.harmony.luni.util.InputStreamHelper.readFullyAndClose(InputStreamHelper.java:174)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.jar.JarFile.getManifest(JarFile.java:307)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.jar.JarFile.getInputStream(JarFile.java:385)
08-31 10:18:23.139 W/PackageParser(   93): at android.content.pm.PackageParser.loadCertificates(PackageParser.java:338)
08-31 10:18:23.139 W/PackageParser(   93): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:509)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5961)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:138)
08-31 10:18:23.139 W/PackageParser(   93): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4819)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Handler.handleCallback(Handler.java:587)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Handler.dispatchMessage(Handler.java:92)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.Looper.loop(Looper.java:144)
08-31 10:18:23.139 W/PackageParser(   93): at android.os.HandlerThread.run(HandlerThread.java:60)
08-31 10:18:23.139 W/PackageParser(   93): Caused by: java.util.zip.DataFormatException: data error
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.Inflater.inflateImpl(Native Method)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.Inflater.inflate(Inflater.java:255)
08-31 10:18:23.139 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:188)
08-31 10:18:23.139 W/PackageParser(   93): ... 14 more
08-31 10:18:23.149 E/PackageParser(   93): Package uk.co.oketchup.blanketsquare has no certificates at entry res/layout/main.xml; ignoring!
08-31 10:18:23.269 D/dalvikvm(   93): GC_EXPLICIT freed 5970 objects / 337960 bytes in 107ms
08-31 10:18:24.729 I/InstallAppProgress(20453): Finished installing uk.co.oketchup.blanketsquare

非常感谢您的帮助。


编辑 02/09/2010 我通过删除几乎所有的空格再次修改了 main.xml 文件。它仍然没有安装,但不是完全相同的错误:它声称存在 zip 文件错误,尽管我注意到证书确实出现在列表的下方。如果这不是我明显做错的事情,如果我在 android 开发者邮件列表中提出会更好吗?

09-02 17:33:32.819 W/PackageParser(   93): Exception reading /data/app/vmdl73692.tmp
09-02 17:33:32.819 W/PackageParser(   93): java.io.IOException
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:207)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.ZipFile$ZipInflaterInputStream.read(ZipFile.java:432)
09-02 17:33:32.819 W/PackageParser(   93): at java.io.FilterInputStream.read(FilterInputStream.java:130)
09-02 17:33:32.819 W/PackageParser(   93): at org.apache.harmony.luni.util.InputStreamHelper.readFullyAndClose(InputStreamHelper.java:174)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.readMetaEntries(JarFile.java:360)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.<init>(JarFile.java:237)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.jar.JarFile.<init>(JarFile.java:218)
09-02 17:33:32.819 W/PackageParser(   93): at android.content.pm.PackageParser.collectCertificates(PackageParser.java:471)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService.installPackageLI(PackageManagerService.java:5961)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService.access$2100(PackageManagerService.java:138)
09-02 17:33:32.819 W/PackageParser(   93): at com.android.server.PackageManagerService$5.run(PackageManagerService.java:4819)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Handler.handleCallback(Handler.java:587)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Handler.dispatchMessage(Handler.java:92)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.Looper.loop(Looper.java:144)
09-02 17:33:32.819 W/PackageParser(   93): at android.os.HandlerThread.run(HandlerThread.java:60)
09-02 17:33:32.819 W/PackageParser(   93): Caused by: java.util.zip.DataFormatException: data error
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.Inflater.inflateImpl(Native Method)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.Inflater.inflate(Inflater.java:255)
09-02 17:33:32.819 W/PackageParser(   93): at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:188)
09-02 17:33:32.819 W/PackageParser(   93): ... 14 more

【问题讨论】:

    标签: android installation


    【解决方案1】:

    我看到了无法在设备上加载的损坏的 .apks,并带有奇怪的 IOExceptions。在 Eclipse 中执行这些步骤似乎可以防止我看到的问题:

    1. 确保 Project -> Build Automatically 已关闭(即未选中)
    2. Project -> Clean...,选择“Clean All Projects”,确保“Start a Build Automatically”复选框未选中,然后单击“OK”。
    3. 使用文件 -> 导出 -> Android -> 导出 Android 应用程序来创建 APK

    【讨论】:

      【解决方案2】:

      原因是您的 apk 未签名。

      如果您使用的是 eclipse,则需要在构建时对应用程序进行签名。您可以使用您的密钥对应用程序进行签名(如果有),或者您可以使用 eclipse 提供的调试密钥创建一个 apk。

      程序:

      Rtclick on project> Android tools> Export Signed application package” > 指定keystore位置(debug keystore看你电脑的home目录,debug key的密码是android)。

      【讨论】:

      • 问题是“我使用jarsigner -verify检查了签名”。如何确定 apk 没有签名?
      【解决方案3】:

      尝试签署名为 main.xml 的文件时引发了一些异常

      读取 /data/app/vmdl73677.tmp 中的 res/layout/main.xml 时出现异常

      尝试删除或重新创建该文件,然后编译/签名并运行应用程序

      http://www.google.com/support/forum/p/Android%20Market/thread?tid=11b65a3c2807848a&hl=en

      【讨论】:

      • 我对文件做了一些小改动并重新编译/签名。但是我得到完全相同的错误。我认为我不能删除该文件,因为布局需要它。
      • 你可以尝试保留文件并检查是否在同一个文件上引发了异常
      • 我尝试将其重命名为 main2.xml 并将引用更改为 setContentView。我现在收到一条略有不同的消息 Exception reading res/layout/main2.xml in /data/app/vmdl73684.tmp java.io.IOException: Invalid attribute 61 at java.util.jar.InitManifest.readName(InitManifest.java: 150) 在 java.util.jar.InitManifest.readHeader(InitManifest.java:115) 在 java.util.jar.InitManifest.initEntries(InitManifest.java:75) 在 java.util.jar.Manifest.read(Manifest.java :234) 在 java.util.jar.Manifest.(Manifest.java:116) [etc]
      • 到目前为止,错误仍然指向同一个 xml 文件。此时它指向 main2.xml,我无法为您提供更好的帮助。您可以尝试直接从 Eclipse 签署 apk 的另一种方法(使用 android 插件)
      • 使用 eclipse 签名器。只需将您的应用导出为 android 应用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      相关资源
      最近更新 更多