背景

到目前为止,我可以通过以下代码使用root(在应用程序内)安装APK文件:

pm install -t -f fullPathToApkFile

并且如果我想(尝试)安装到sd-card:

pm install -t -s fullPathToApkFile

问题

最近,不确定从哪个Android版本开始(至少在Android P beta中存在该问题),上述方法失败,向我显示此消息:

avc: denied { read } for scontext=u:r:system_server:s0 tcontext=u:object_r:sdcardfs:s0 tclass=file permissive=0

System server has no access to read file context u:object_r:sdcardfs:s0 (from path /storage/emulated/0/Download/FDroid.apk, context u:r:system_server:s0)

Error: Unable to open file: /storage/emulated/0/Download/FDroid.apk

Consider using a file under /data/local/tmp/

Error: Can't open file: /storage/emulated/0/Download/FDroid.apk

Exception occurred while executing:

java.lang.IllegalArgumentException: Error: Can't open file: /storage/emulated/0/Download/FDroid.apk

at com.android.server.pm.PackageManagerShellCommand.setParamsSize(PackageManagerShellCommand.java:306)

at com.android.server.pm.PackageManagerShellCommand.runInstall(PackageManagerShellCommand.java:884)

at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:138)

at android.os.ShellCommand.exec(ShellCommand.java:103)

at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21125)

at android.os.Binder.shellCommand(Binder.java:634)

at android.os.Binder.onTransact(Binder.java:532)

at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2806)

at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3841)

at android.os.Binder.execTransact(Binder.java:731)

这似乎也影响了流行的应用程序,例如“ Titanium backup (pro)”,该应用程序无法还原应用程序。

我尝试过的

查看所写内容,似乎无权安装/data/local/tmp/中不存在的APK文件。

因此,我尝试了接下来的事情,看是否可以克服:

设置对文件的访问( chmod 777 )-并没有帮助。

创建一个指向文件的符号链接,以便使用官方API将其放置在/data/local/tmp/ :Os.symlink(fullPathToApkFile, symLinkFilePath)

这什么也没做。

使用以下命令创建一个符号链接:ln -sf $fullPathToApkFile $symLinkFilePath

这部分起作用。 该文件在那里,正如我在Total Commander应用程序中看到的那样,但是当我尝试检查它是否存在时,以及当我尝试从那里安装APK时,它都失败了。

将文件复制/移动(使用cp或mv )到/data/local/tmp/路径,然后从那里安装。 这行得通,但有缺点:移动是有风险的,因为它会暂时隐藏原始文件,并且会更改原始文件的时间戳。 复制是不好的,因为仅用于安装(甚至是临时安装)就需要额外的空间,并且这样做会浪费时间。

使用以下命令(从此处获取)复制APK文件,告知其避免实际复制(意味着硬链接):cp -p -r -l $fullPathToApkFile $tempFileParentPath"

这没用。 它给了我这个错误:cp: /data/local/tmp/test.apk: Cross-device link

检查在安装应用程序的其他情况下会发生什么。 通过IDE安装时,实际上会在此特殊路径中创建APK文件,但如果通过Play商店安装,简单的APK安装(通过Intent)或adb(通过PC)安装,则不会。

问题

有什么方法可以克服在此特殊路径上使用root用户安装APK的缺点? 甚至根本避免处理此路径?

为什么OS突然需要使用此路径? 与其他安装应用程序的方法一样,为什么不使用原始路径呢? 通过某种方式避免使用空间路径的其他安装应用程序的方法有什么作用?

android tmp目录权限不够,android - 使用root用户安装APK,处理“ / data / local / tmp /”文件夹的新限制 - 堆栈内存溢出...相关推荐

  1. Android免Root执行脚本,无Root可以修改权限的目录 :/data/local/tmp

    在Android中,访问data目录是需要root权限,但是有个例外那就是/data/local/tmp目录,这个目录通过使用ADB来打开就会拥有读写权限! 注意: (1)这个目录不能一级一级的打开, ...

  2. haxe android,android - 具有Android目标的Haxe NME项目无法部署:Activity类不存在 - 堆栈内存溢出...

    我在FlashDevelop中创建了一个NME项目,在Main.hx中加载了位图,然后单击以android为目标的build按钮. 构建成功完成,但是随后出现以下错误: Running process ...

  3. android 输入法 sd卡,关于安卓手机内置或外置SD卡中各文件夹的名称和作用

    1..android_secure 是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了. 2..Bluetooth 顾名思义,用蓝牙之后就会有这个. 3..mobo 顾名思义,Mobop ...

  4. Linux修改权限的弊端,linux root用户修改权限说是只读文件系统,怎么办?

    因为当来前用户对那个文件没有相应源的权2113限,你可以在那个目录执5261行命4102令 ls -l查看当前文件以1653及相应的所有者和对应的权限,drwxrwxrwx应该是这样的,每一个字母都有 ...

  5. android 清理 卡顿,手机卡顿还在乱清理?只需删除这3个“文件夹”,立刻腾出8G内存...

    如今咱们老百姓使用的手机大部分都是安卓手机,哪怕像是华为这样的高端品牌使用的也是安卓系统.安卓系统好用归好用,但是有一个非常大的弊端,就是系统使用时会产生很多的垃圾.所以很多人的手机在使用上一段时间之 ...

  6. linux 非root tomcat,Linux非root用户安装jdk和tomcat

    创建一个用户 sgmm,并在其用户目录里面安装 jdk和tomcat,安装过程如下. 一.增加 sgmm 用户和 sgmm 组 [root@lnx_test ~]# groupadd sgmm [ro ...

  7. 手机安装python3.5_zzw_非root用户安装python3.5

    目的:不想改变linux 自带的python,只想要用特定的非root用户运行特定版本的python 1.进入非root用户 2.新建一个python3.5的安装目录 [a4_csbdc@bdc816 ...

  8. linux 搜索文件名中非,Linux服务器中非 root 用户安装(多版本) CUDA 和 cuDNN

    为什么是非root用户安装cuda和cudnn? 共用服务器时,系统公共环境中安装的cuda和cudnn的版本往往与项目需求不符合.而且你一般没有root权限,没办法更改系统公共环境中的cuda和cu ...

  9. Linux下软件安装 非root用户安装软件的一般流程

    Linux下的软件安装 Linux下的软件安装,实质上有如下四种,"正规"程度依次递减: 使用标准的yum/apt/yast包管理程序安装 比如:sudo apt-get inst ...

最新文章

  1. (7)Zabbix分布式监控proxy实现
  2. 万物根源-一分钟教你发布npm包
  3. 《数据库系统实训》实验报告——单表查询
  4. 3.通道 Channel
  5. 前端笔记-JavaScript中放json数组要注意的地方(构造灵活的echarts)
  6. Bing Maps进阶系列八:在Bing Maps中集成OpenStreetMap地图
  7. java 泛型参数_[基础]-Java泛型
  8. c语言聊天程序代码,今天打的代码。基于TCP的聊天程序。
  9. 【UOJ#450】【集训队作业2018】复读机(生成函数,单位根反演)
  10. 从头开始复习css之选择器(中)
  11. 29.FFmpeg+OpenGLES+OpenSLES播放器实现(三.FFmpeg配置和编译脚本)
  12. 如何学习数字通信FPGA设计
  13. python中的aliasing
  14. 7-1 到底是不是太胖了
  15. 你了解区块链资产吗?新手要如何投资区块链资产?
  16. EXCEL添加一个目录并超链接到每张sheet
  17. css设置了超出隐藏省略号无效解决
  18. 爬虫---国家食品药品监督管理总局
  19. 《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花 (下)(遗憾告终)
  20. 戴着 Google 眼镜去跟妹纸约会的杯具

热门文章

  1. NBoot EBoot
  2. AI 将完全取代前端开发吗?
  3. 世界最昂贵的十大军用飞机
  4. 计算机美术试题及答案,计算机二级 -小学艺术教育试题及答案(2006年10月) -我要模考网...
  5. JavaScript中绑定事件监听函数的通用方法[ addEvent() ]
  6. Maven项目中的pom.xml各种标签的具体作用
  7. 龙芯7A2000 CAN调试
  8. 保送研究生有什么要求吗?
  9. Microbiome杂志和主编简介
  10. doraemon的python 模块