如何推送我的应用程序包 到Android模拟器“/ system / app”文件夹?
我已经尝试过使用:
“adb push myApk.apk / system / app”
它给了我这个:
"failed to copy: ... No space left on device"
虽然来自设置 - > sdCard&手机存储, 我获得了37Mb的内部可用空间。
这种需要的全部意义在于 与权限相关。
我需要拥有INSTALL_PACKAGES权限
我知道通过把我的申请放在那里,
在/ system / app中,我获得了许可。
答案 0 :(得分:53)
我可以通过以下步骤将APK安装到/system/app
。
将APK推送到SD卡。
$ adb push SecureSetting.apk /sdcard/
进入控制台并获取shell
$ adb shell
切换到超级用户。如果您的设备未植根,请先将其设置为root。 (如果你不知道如何做到这一点,那就是谷歌。)
$ su
使用WRITE权限重新安装系统分区。
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
将您的APK从/sdcard/
发送到/system/
,由于不支持cp
,有些人因cp
命令而失败。所以请改用cat
。
$ cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk
将/system
分区重新调回READ-ONLY,然后退出
$ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
$ exit
然后重新启动您的设备,APK应该已安装在/system/app
。
答案 1 :(得分:6)
通常,访问“/ system /”目录的唯一方法是使设备生根。我不知道是否需要模拟器。这可能是你的问题。
答案 2 :(得分:3)
如果您要为Android 5.0或更高版本的设备安装系统apk,请执行以下步骤。对于旧版本,请使用posaidong的答案
将您的apk文件重命名为base.apk
$ adb push base.apk /sdcard/
进入控制台并获取shell
$ adb shell
切换到超级用户。如果您的设备未植根,请先将其设置为root。 (如果你不知道如何做到这一点,那就是谷歌。)
$ su
使用WRITE权限重新安装系统分区。
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
在/ system / app文件夹中创建一个Test目录。 (或者也可以使用/ system / priv-app)。理想情况下,此文件夹名称应为应用程序名称现在,让我们使用Test
$ mkdir /system/app/Test
此目录需要755权限
$ chmod 755 /system/app/Test
将你的base.apk复制到
中$ cat /sdcard/base.apk > /system/app/Test/Base.apk
将Remout /系统分区返回READ-ONLY,然后退出
$chmod 644 /system/app/Test/Base.apk
此目录需要644权限
$ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system
$ exit
重新启动您的设备。启动完成后,您应该看到系统消息,如Android更新...
答案 3 :(得分:2)
设置 - > sdCard&手机存储说关于/ data文件夹。
/ system是单独安装的,我想除非你自己制作Android版本,否则无法写入。
通过运行
查看安装adb shell
# df
答案 4 :(得分:1)
您需要先运行adb remount
,然后才能让adb push
转到/system
个文件夹
答案 5 :(得分:1)
以下批处理文件会将文件夹中的任何apk文件安装到/ system / app目录。它将系统驱动器安装为rw,然后将文件复制过来。
要使用它,请将以下代码放入文本编辑器中,并将其作为install.bat保存在Windows计算机上。然后双击批处理文件以安装与批处理文件位于同一文件夹中的任何APK文件。
注意:除非设备上有root,否则无法重新安装系统分区。我主要在仿真器上使用它,默认为root(并且是原始问题),但概念在物理设备上应该是相同的。
@ECHO OFF %~d0 CD %~dp0 adb root adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system adb shell rm /system/app/SdkSetup.apk for /f %%a IN ('dir /b *.apk') do adb push %%a /system/app/.
答案 6 :(得分:1)
使用超级用户ADB shell的以下命令。将您的APP的APK复制到SD卡或内部存储中。
$ adb shell
$ su
$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
$ cp /sdcard/<Your_APK_PATH> /system/app/file_name_comes_here.apk
$ chmod 644 /system/app/<YourAPK>.apk
然后重启设备
答案 7 :(得分:0)
您必须以读/写方式挂载系统,然后推送应用程序。
在这个问题中回答了这个问题:Push .apk to /system/app/ in HTC HERO
答案 8 :(得分:0)
即使在adb remount
之前,您也应该更改adb shell中/ system的权限。
您可以使用chmod
更改权限。
答案 9 :(得分:0)
如果你的apk足够小,可以推进,那么再试一次。我遇到了同样的问题并尝试了两次将apks推送到/ system / app /
答案 10 :(得分:0)
显然,“/ system”mount中的应用程序空间不足。您可以使用“adb shell df”命令检查它。
要解决此问题,您需要在启动AVD时充分设置partition-size参数,如下所示:
emulator.exe -avd <your avd name> -partition-size 512
答案 11 :(得分:0)
检查你是否有足够的inode,你可能有足够的内存但没有足够的inode,即文件占位符。
答案 12 :(得分:0)
我在将apk文件复制到/system
分区时多次遇到过这种情况,最终可以使用以下步骤解决它:
使用 adb shell 中的 df 检查/system
分区中的免费空间。很可能自由空间小于apk文件的大小。
Filesystem Size Used Free Blksize
/dev 1.3G 80.0K 1.3G 4.0K
/sys/fs/cgroup 1.3G 12.0K 1.3G 4.0K
/mnt/secure 1.3G 0.0K 1.3G 4.0K
/mnt/asec 1.3G 0.0K 1.3G 4.0K
/mnt/obb 1.3G 0.0K 1.3G 4.0K
/system 3.5G 3.5G 10.0M 4.0K
/efs 15.7M 2.8M 12.9M 4.0K
/cache 192.8M 736.0K 192.1M 4.0K
/data 25.5G 12.7G 12.8G 4.0K
/persdata/absolute 4.9M 120.0K 4.8M 4.0K
/sbfs 10.8M 8.0K 10.7M 4.0K
/mnt/shell/knox-emulated 25.5G 12.7G 12.8G 4.0K
/mnt/shell/privatemode 25.4G 12.7G 12.7G 4.0K
/mnt/shell/emulated 25.4G 12.7G 12.7G 4.0K
/preload 5.8M 3.3M 2.5M 4.0K
使用 du / system 获取每个文件夹的大小&amp; /system
分区中的文件。按照大小的降序排列输出以获得(类似的东西):
4091840 /system/
1199416 /system/app
964064 /system/priv-app
558616 /system/lib64
373320 /system/lib
206624 /system/vendor
170952 /system/app/WebViewGoogle
148824 /system/app/WebViewGoogle/lib
125488 /system/voice
125480 /system/voice/embedded
122880 /system/app/Chrome
106520 /system/framework
102224 /system/priv-app/Velvet
96552 /system/app/SBrowser_3.0.38
93936 /system/vendor/lib64
93792 /system/vendor/lib64/egl
92552 /system/tts
92512 /system/tts/lang_SMT
...
从/system/voice/embedded
,/system/tts/lang_SMT
(用于语言/语言环境支持)和/或其他文件夹中删除不必要的文件,以释放/system
分区中足够的空间以容纳新的apk文件。删除/system
以外的分区中的文件可能无助于此方案。 ( NB :此步骤可能需要ROOT权限并使用 mount -o rw,remount / system 在读写模式下重新安装/system
分区
答案 13 :(得分:-3)
如果您只想安装它,可以随时执行:adb install myApk.apk
。