安卓安装失败:无效的URI

14

最近我在通过Eclipse将一个Android应用程序安装到设备上时,出现了以下错误:

Installation failed due to invalid URI!
Please check logcat output for more details.
Launch canceled!

我也尝试了将bin文件夹中的APK和通过adb安装签名APK两种方式。但是当我这么做时,我会收到一个"INSTALL_FAILED_INVALID_URI"错误。

我没有改变任何关于我的设置的内容,之前它没问题的。

有什么想法?谢谢!

LogCat输出:

D/AndroidRuntime(32345): CheckJNI is OFF
D/dalvikvm(32345): Unable to stat classpath element '/system/framework/com.orange.authentication.simcard.jar'
D/AndroidRuntime(32345): Calling main entry com.android.commands.pm.Pm
V/Performance(32111): >>com.android.defcontainer.DefaultContainerService@40d944a8 onCreate
V/Performance(32111): <<com.android.defcontainer.DefaultContainerService@40d944a8 onCreate, 3ms
V/Performance(32111): >>com.android.defcontainer.DefaultContainerService@40d944a8 onBind
V/Performance(32111): <<com.android.defcontainer.DefaultContainerService@40d944a8 onBind, 1ms
W/asset   (32111): Asset path /data/local/tmp/CS2110Project.apk is neither a directory nor file (type=0).
W/DefContainer(32111): Failed to parse package
W/ActivityManager(  744): No content provider found for permission revoke: file:///data/local/tmp/CS2110Project.apk
D/dalvikvm(  744): GC_EXPLICIT freed 1196K, 36% free 20088K/31267K, paused 10ms+14ms
D/AndroidRuntime(32345): Shutting down VM
I/AndroidRuntime(32345): NOTE: attach of thread 'Binder Thread #3' failed
D/dalvikvm(32345): GC_CONCURRENT freed 135K, 72% free 578K/2048K, paused 1ms+1ms
D/dalvikvm(32345): Debugger has detached; object registry had 1 entries

此问题的另一个可能原因是项目名称中包含不受支持的字符(例如æøå或类似字符)。 - Warpzit
由于答案的广泛性和不相关性,很明显有半打或更多的可能根本原因,因此标记为“过于宽泛”。 - Nathan Tuggy
13个回答

16

对于ME,它需要完整的路径。

  • 安装joe.apk失败。
  • 安装./joe.apk失败。
  • 已经chmod所有文件,但仍然失败。
  • pm install /data/joe.apk成功。

1
有很多原因可能会导致OP中的行为。我在设备上使用终端模拟器,我还必须提供完整路径,否则pm会返回“无效uri”的错误。遗憾的是,系统日志中的错误消息并不是很有帮助。感谢FrankRizzo,这让我疯狂,因为当我使用adb shell时,我的体验是不同的。你使用哪个shell很重要! - JawguyChooser
它在真实设备上也发生了。根据答案,从/data/local/tmp安装可行。 - nmxprime

10

仅供记录:

对我而言,这是一个与项目名称中的umlaut (ä,ü,ö)有关的问题。

我采取了以下步骤来解决它:

  1. 重构 -> 重命名(替换掉umlauts)
  2. 进行工程 -> 清理

希望这能为其他人节省些时间...对我来说花费了相当长的一段时间。


8

原来是ROM问题。我刷了一个更新的ROM,现在一切都工作得很好了。实际上,这似乎是一个相当普遍的问题。


http://forum.aokp.co/topic/60-cant-install-apk-from-eclipse-or-adb/ 是问题所在,你需要更改 /data/local 目录的权限!Milestone 5 已经可以使用了!!!耶! - L7ColWinters
注:在原始ROM上但已Root的情况下,我收到了“由于无效的APK文件安装失败”的错误提示! - Shereef Marzouk

5

不要使用带有重音或不寻常字符的名称。我使用了带重音的名称,导致在安装时生成apk文件出现错误,去掉勾选框后问题得到解决。


5

对于我来说,我已经对我的设备进行了root,并且每次打开手机时都会重新更新Android。考虑到这一点,我不得不重置本地目录的chmod 777权限。因此,这更像是一个提醒,要检查您的权限,而不是一个答案,但它可能会帮助某些人。


1
将本地目录权限设置为777后,我摆脱了“INSTALL_FAILED_INVALID_URI”的问题,但随后我又遇到了“INSTALL_FAILED_INVALID_APK”,直到我也将apk权限设置为777。 - Josh Davis
将apk权限设置为777对我解决了这个问题。 - PrashanD

3

您的设备是否已设置为调试模式?如果尚未完成此操作,您可能需要转到“设置”->“应用程序”,并允许未知来源。 如果以上操作无效:请查看您的Logcat输出中有什么信息。


调试已开启。我将日志输出放在上面。 - Computerish
使用您的方法解决了我的问题。 - Frank Cheng
在Android 5中,它位于安全设置中。 - Guilherme Campos Hazan

1
由于我的设备的minSdkVersion低于您设备的Android SDK,所以出现了这种情况。

1
当您执行“adb install -r some_app.apk”时,它会将包名给出为“/data/local/tmp/some_app.apk Success”。如果您在错误的位置上使用-r选项,则它将把-pkg视为-r并返回上述错误。因此,在对数据、本地和临时目录进行chmod之后,请检查它是否能够正确解析pkg。

0
在我的情况下,这是一个控制台问题。我在 Mac 上使用了“终端”,但它没有起作用。 当我使用 AndroidStudio 的内置控制台时,它却可以工作。

0

你需要先运行以下命令:

readlink -f PATH_of_APK

或者

readlink -e PATH_of_APK

以获取 pm 命令所需的合法路径。

例如,在我的 Termux 上:

$readlink -f /data/data/com.termux/files/home/storage/downloads/

/storage/emulated/0/Download

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