Push my apk to /system/app

前端 未结 14 2024
清酒与你
清酒与你 2020-12-02 07:16

How can I push my application package to Android emulator \"/system/app\" folder?

I\'ve already tried to use:
\"adb push myApk.apk /system/app\"
and it giv

相关标签:
14条回答
  • 2020-12-02 07:33

    I have come across this situation multiple times while copying apk files to /system partition and could finally resolve it using the following steps:

    • Check the Free space in /system partition using df from adb shell. Most probably the Free space would be less than size of apk file.

      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
      
    • Use du /system to get sizes of each folder & file in /system partition. Arrange the output in descending order of size(s) to get (something similar):

      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
      ...
      
    • Delete unnecessary files from /system/voice/embedded, /system/tts/lang_SMT (for language/locale support) and/or other folders to free enough space in /system partition to accommodate the new apk file. Deleting files in partitions other than /system may not help in this scenario. (N.B.: This step may require ROOT privileges and remounting /system partition in read-write mode using mount -o rw,remount /system)

    0 讨论(0)
  • 2020-12-02 07:36

    These are the steps if you are installing a system apk for Android 5.0 or later devices. For older versions use posaidong's answer

    Rename your apk file to base.apk

    $ adb push base.apk /sdcard/  
    

    Enter the console and get the shell

    $ adb shell
    

    Switch to superuser. If your device is not rooted, get it rooted first. (If you don't know how to do that, just Google.)

    $ su 
    

    Remount the system partition with WRITE permission.

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

    Create a Test directory inside /system/app folder. (or can use /system/priv-app as well). Ideally this folder name should be application name. For now, lets use Test

    $ mkdir /system/app/Test 
    

    Requires 755 permission for this dir

    $ chmod 755 /system/app/Test 
    

    Copy your base.apk inside

    $ cat /sdcard/base.apk > /system/app/Test/Base.apk 
    

    Remout /system partition back to READ-ONLY, and exit

    $chmod 644 /system/app/Test/Base.apk 
    

    Requires 644 permission for this dir

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

    Reboot your device. When boot completes you should see a system message like Android updating ...

    0 讨论(0)
  • 2020-12-02 07:39

    Check that you have enough inodes, you may have enough memory but not enough inode i.e. file placeholder.

    0 讨论(0)
  • 2020-12-02 07:44

    The following batch file will install any apk files in the folder to the /system/app directory. It mounts the system drive as rw, then copies the files over.

    To use it, put the following code into a text editor and save it as install.bat on a Windows machine. Then double-click on the batch file to install any APK files that are in the same folder as the batch file.

    NOTE: You can't remount the system partition unless you have root on the device. I've mostly used this on the emulator which defaults to root (And was the original question), but the concept should be the same on a physical device.

    @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/.
    

    0 讨论(0)
  • 2020-12-02 07:46

    Normally, the only way to get access to the "/system/" directory is to have a device rooted. I don't exactly know if that is required for the emulator though. That could be your issue.

    0 讨论(0)
  • 2020-12-02 07:46

    Even before adb remount you should change the permissions for the /system in the adb shell. you can use chmod to change the permissions.

    0 讨论(0)
提交回复
热议问题