安装错误:INSTALL_FAILED_UID_CHANGED没有root

时间:2014-01-05 11:10:32

标签: android eclipse adb

我已经检查了StackOverflow中所有其他问题的所有解决方案,评论和答案。

我已经运行,编译和调试我的应用程序好几个月了。但突然间,当我使用Nexus玩它时,它开始在我的Eclipse中出现这条消息。

MOBILE:

  • 我没有根!!! (这是一个Nexus,我没有root,其他Stackoverflow的问题中的所有答案都需要root才能执行)
  • 已卸载应用程序,“应用程序”中没有任何跟踪
  • 由于我没有超级用户权限,我无法访问/ data / data文件夹,或/ data / local,或/ data
  • 知道问题将解决重置手机到出厂设置,但是,真诚的,我不能。

ECLIPSE:

  • 我已多次清理项目,重新启动Eclipse甚至更新它
  • 我无法更改项目名称(正如一个解决方案所示),因为这是一个很长时间的项目,我无法改变它
  • 控制台说:

    • 安装错误:INSTALL_FAILED_UID_CHANGED
    • 请查看logcat输出以获取更多详细信息。
    • 发布已取消!
  • Logcat说:

    • 01-05 12:18:19.265:W / ActivityManager(761):未找到许可内容提供者撤销:file:///data/local/tmp/MyApp.apk
    • 01-05 12:18:20.855:W / PackageManager(761):无法在/data/app/com.myapp-1.apk中安装软件包
  • 我可以安装,卸载其他APK /应用程序,没有任何问题。所以它不是关于/ data文件夹/子文件夹中的权限

CONSOLE:

  • 如果我尝试卸载(使用-d或任何其他参数)应用程序,它会说:“失败”(因为adb在手机中找不到应用程序)

所以,我没有使用虚拟机/模拟器进行调试。我有一个没有根的应用程序的Nexus,我无法从Eclipse构建应用程序的设备。

谢谢

20 个答案:

答案 0 :(得分:10)

我在非root Nexus 5 中遇到了同样的问题。我设法解决了没有root访问权限,也没有恢复出厂设置

对于这个设备,我设法通过转到Settings -> Storage -> Misc并尝试删除与故障应用程序相关的任何文件(在我的情况下,从Android Studio推送的.apk和.db文件)来解决它)。我还点击了Cached data来擦除所有应用的缓存。

我不确切地知道这两件事中的哪一件触发了解决方案。您可能希望在擦除缓存数据之前尝试删除Misc中的某些文件,因为它看起来不那么过分了。

似乎以前的安装中有一些剩余的文件没有被卸载(可能是an issue in the Android installation system)。这些文件在没有root访问权限的情况下无法访问,因为它们位于/ data / local /文件夹下。显然,Nexus 5的存储工具有权删除该文件夹下的文件。

我不知道其他设备是否有类似的存储工具集。

答案 1 :(得分:3)

第一次发生这种情况我尝试从eclipse,命令行等安装.... 一切都失败了所以我进行了工厂重置,然后工作。

24小时后再次发生。

不想再进行一次工厂重置,我再次尝试所有相同的事情都无济于事。

最后,我尝试从appstore下载我们当前的应用程序,奇迹般地工作。

然后我使用adb重新安装。

因此,如果您在应用商店中有自己的应用版本,请尝试安装该应用以在手机上获取内容,然后重新安装" adb -d install -r $ PACKAGE.apk

希望这有助于某人。

答案 2 :(得分:3)

这可能看起来很奇怪,但我尖尖的老板只是遇到了这个问题并尝试了我们能想到的一切。由于INSTALL_FAILED_UID_CHANGED错误,不会安装。

他卸载了其他一些应用程序(游戏),然后突然安装了。也许这是内部卡上的磁盘空间问题? Dunno,但是当别人碰到它时值得一试。

答案 3 :(得分:2)

这(或其他一些魔法)帮助了我:

adb shell pm clear MY_PACKAGE_NAME

答案 4 :(得分:1)

我可以像下面这样解决这个问题,而不会依赖我的Nexus 5.

  • 将您的应用推送到/ sdcard /
  • adb push test.apk / sdcard /
  • adb shell
  • adb shell pm install -l /sdcard/test.apk

-l选项表示 - pm install:将软件包安装到系统中。选项:     -l:使用FORWARD_LOCK安装包。

答案 5 :(得分:1)

以下是其他一些可以安全检查/尝试的事情:

  • 确保您的包裹名称是100%唯一且不会与之发生冲突 另一个应用。您可以暂时将其更改为测试。
  • 尝试关闭手机,然后重新开启以清除 数据缓存。
  • 尝试为您的设备进行软重置(可能是 与关机/开机相同。)

答案 6 :(得分:1)

从Play商店下载应用程序将解决此问题。 要在应用程序上继续开发,请卸载当前安装的应用程序,然后从eclipse启动应用程序。

工作正常。

答案 7 :(得分:1)

尝试删除Settings -> Storage下的缓存数据,这将立即清除所有缓存的应用数据,但它完成了工作(在我的情况下)

答案 8 :(得分:0)

  1. 转到运行/调试配置。
  2. 在Android App下删除" app"。
  3. 然后在模块下添加另一个配置:app
  4. enter image description here

答案 9 :(得分:0)

对于android studio,请转到文件 - > 项目结构 - > app - > 风味以及您的右侧,您会看到应用ID 字段,只需更改应用ID,您就可以开始...... :)

答案 10 :(得分:0)

在我的情况下,更改GCM签名的包名称有效。因为它卸载了完整的包。

For more detailed explination click here

<permission
        android:name="com.androidcodelab.sampleproject.permission.C2D_MESSAGE"
        android:protectionLevel="signature"/>
   <uses-permission android:name="com.androidcodelab.sampleproject.permission.C2D_MESSAGE"/>

项目的包名称已更改为:

<permission
        android:name="com.androidcodelab.xyz.permission.C2D_MESSAGE"
        android:protectionLevel="signature"/>

    <uses-permission android:name="com.androidcodelab.xyz.permission.C2D_MESSAGE"/>

然后我又回到了实际的包名

答案 11 :(得分:0)

对于无根设备,您需要从设备的应用列表中删除该应用:

  1. 转到“设置”
  2. 转到“存储”
  3. 在第三个标签“已下载的应用”上找到您的应用
  4. 你可以从那里删除它
  5. 适合我!

答案 12 :(得分:0)

这个解决方案对我有用:

  1. 将您的APK放入设备的存储/ SD卡

  2. adb shell pm install -l -r "/sdcard/<apk_filename>.apk"

  3. -l =前进锁定 -r =重新安装

答案 13 :(得分:0)

我尝试了以上所有和NADA!

它对我有用的唯一方式(非根设备)是:

1.-更改项目结构 [Ctrl + Alt + Shift + S] - &gt; Flavors 应用ID ,例: 'com.example.something'到'com.example.somethingxx'。 (与更改build.gradle文件相同)

项目的

2.- 重构程序包名称到您在应用程序ID上使用的同名新名称:'com.example.somethingxx'

这将确保您在设备上安装新的应用程序......请告诉我们!

答案 14 :(得分:0)

我使用的是仅用于测试的设备,所以我只是重置了整个设备。它对我有用。

答案 15 :(得分:0)

我有同样的问题。最终对我有用的是将applicationId中的build.gradle(您的包名称)更改为不同的内容,然后重建项目,并成功部署。

导致这种情况的原因是我将现有的Android Studio项目复制到一个新的项目中,并且正在使用新项目。问题是,我之前从未在我的设备上部署原始apk,并且只是尝试部署应用程序的新副本。

答案 16 :(得分:0)

这对我有用:

adb install -l -r&lt;'apk_name'&gt; .apk

-l =前进锁定

-r =重新安装

答案 17 :(得分:0)

我只能通过生根解决这个问题。我知道你不想这样做,但它对我有用。我下载了Titanium Backup,然后在Titanium Backup的列表中找到了我已卸载的应用程序。在我进入Batch Actions然后删除孤儿数据之前,我无法摆脱那个划掉的。这让我可以重新安装我的应用程序并且运行良好。

答案 18 :(得分:0)

这是因为如果您安装了具有相同包名称的应用程序。所以试着删除那个。

答案 19 :(得分:-1)

对我而言,唯一的方法是根电话并清除/ data / data /目录。以下是步骤:

1.在移动设备上打开Web浏览器
2.打开网站:https://towelroot.com/
3.单击lambda sign下载Towerl Root并在之后安装 4.打开Towel root app,然后单击“make it rain”按钮。如果它说:“设备不兼容”谷歌其他等待root设备。
5.从Play商店下载SuperSU应用程序 6.从Play商店下载终端模拟器应用程序 7.运行终端仿真器
8.在终端仿真器中键入以下命令:

    

9.允许超级用户访问终端仿真器
10.在终端仿真器中键入以下命令,将'package_name'替换为您的应用程序包名称:

     rm -r / data / data / package_name