推我的apk到/ system / app

我怎样才能推我的应用程序包到Android模拟器“/系统/应用程序”文件夹?

我已经尝试使用:
“adb push myApk.apk / system / app”
它给了我这个:

"failed to copy: ... No space left on device" 

虽然从设置 – > SD卡和手机存储,我得到37Mb的内部可用空间。

这个需要的全部点是
与权限有关。

我需要有INSTALL_PACKAGES权限
我知道通过把我的应用程序放在那里,
在/系统/应用程序,我得到的权限。

Solutions Collecting From Web of "推我的apk到/ system / app"

通常情况下,访问“/ system /”目录的唯一方法是让设备生根。 但是我不完全知道这是否是模拟器所需要的。 这可能是你的问题。

我可以通过以下步骤将APK安装到/system/app

  1. 将APK推送到SD卡。

     $ adb push SecureSetting.apk /sdcard/ 
  2. 进入控制台并获取shell

     $ adb shell 
  3. 切换到超级用户。 如果你的设备没有植根,请先植根。 (如果你不知道怎么做,只需要Google。)

     $ su 
  4. 用WRITE权限重新安装系统分区。

     $ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 
  5. /sdcard/ to /system/ /sdcard/你的APK /sdcard/ ,由于cp不被支持,有些人会因为cp命令而失败。 所以用cat

     $ cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk 
  6. Remout /system分区恢复为READ-ONLY,然后退出

     $ mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system $ exit 

然后重新启动你的设备,APK应该已经安装在/system/app

设置 – > SD卡和手机存储说有关/数据文件夹。

/系统是分开安装的,我想没有办法写在那里,除非你自己做Android构build。

请参阅通过运行挂载

 adb shell # df 

如果您正在为Android 5.0或更高版本的设备安装系统apk,则这些是步骤。 对于旧版本使用posaidong的答案

将你的apk文件重命名为base.apk

 $ adb push base.apk /sdcard/ 

进入控制台并获取shell

 $ adb shell 

切换到超级用户。 如果你的设备没有植根,请先植根。 (如果你不知道怎么做,只需要Google。)

 $ su 

用WRITE权限重新安装系统分区。

 $ mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 

在/ system / app文件夹中创build一个Test目录。 (或者也可以使用/ system / priv-app)。 理想情况下,该文件夹名称应该是应用程序名 现在,让我们使用testing

 $ 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更新…

你需要先运行adb remount ,然后它应该让你adb push/system文件夹

下面的batch file会将文件夹中的任何apk文件安装到/ system / app目录。 它将系统驱动器挂载为rw,然后复制文件。

要使用它,请将下面的代码放到文本编辑器中,并将其保存为Windows机器上的install.bat。 然后双击batch file以安装与batch file位于同一文件夹中的任何APK文件。

注:除非设备上有root用户,否则无法重新挂载系统分区。 我主要在模拟器上使用这个默认为根(这是原来的问题),但在物理设备上的概念应该是相同的。

 @ECHOclosures
 %〜D0
 CD%〜dp0
 adb根
 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')做adb push %% a / system / app /。

使用下面的超级用户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 

然后重新启动设备

您必须将系统装载为读/写,然后推送应用程序。

这个问题在这个问题上得到了回答: 在HTC HERO中将.apk push到/ system / app /中

即使在adb remount之前,您应该更改adb shell中/系统的权限。 你可以使用chmod来改变权限。

如果你的apk小到可以推入,那么再试一次。 我遇到了同样的问题,并尝试了两次将apks推到/ system / app /

显然,在“/ system”mount下你的应用程序没有足够的空间。 你可以用“adb shell df”命令来检查。

为了解决这个问题,你需要在启动你的AVD的时候充分的设置分区大小参数:

 emulator.exe -avd <your avd name> -partition-size 512 

检查你有足够的inode,你可能有足够的内存,但没有足够的inode即文件占位符。

我在将apk文件复制到/system分区时遇到过这种情况,最终可以使用以下步骤来解决它:

  • 使用dfadb shell检查/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来获取每个文件夹和文件的大小/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以外的分区中的文件在这种情况下可能没有帮助。 ( 注意 :使用mount -o rw,remount / system这个步骤可能需要读写模式下的root权限和重新挂载/system分区)

如果你只是想安装它,你可以随时做: adb install myApk.apk