adb push ... Отказано в доступе

Я пытаюсь поместить файл в каталог на физическом устройстве Android, но сталкиваюсь со следующей ошибкой.

>adb push data.db /data/data/com.me.app/databases
failed to copy 'data.db' to '/data/data/com.me.app/databases/data.db': Permission denied

Я считаю, что adb имеет достаточные привилегии.

>adb root
adbd is already running as root

Вот сведения о разрешении для пути: /data/data/com.me.app/databases

drwxrwxrwx system   system            2014-01-14 10:31 data
drwxrwxrwx system   system            2015-05-23 16:06 data
drwxrwxrwx u0_a224  u0_a224           2015-05-23 15:26 com.me.app
drwxrwxrwx u0_a224  u0_a224           2015-05-23 15:30 databases

Я не уверен, что делать здесь. Возможно, я делаю это неправильно, но я просто хочу поместить файл data.db в каталог /data/data/com.me.app/databases на устройстве.

Кто-нибудь знает, что я делаю неправильно или что я должен учитывать? Спасибо.

Поместите свой обходной путь в качестве ответа здесь и примите свой собственный ответ, чтобы люди, ищущие подобную проблему, увидели ответ, когда будут искать ее.

Ответы (3)

Редактировать: я нашел обходной путь: AirDroid позволяет мне загрузить файл, но права доступа к файлу установлены следующим образом:

-rw-------

Выполнение следующих команд решает эту проблему (из командной строки Windows 7).

>adb shell
# su
# chmod 777 /data/data/com.me.app/databases/data.db

У меня был вариант этой проблемы, поэтому я оставлю его здесь на случай, если кто-то еще погуглит:

./adb push update.zip /sdcard
[  0%] C:/Users/Alex/AppData/Local/Programs/Git/sdcard
adb: error: failed to copy 'update.zip' to 'C:/Users/Alex/AppData/Local/Programs/Git/sdcard':
remote secure_mkdirs failed: No such file or directory
update.zip: 0 files pushed. 41.6 MB/s (131072 bytes in 0.003s)

Однако в моем случае проблема была запущена adbиз оболочки Git bash (MinGW64). Запуск его из обычной оболочки Windows работал нормально.

Обычный подход, не требующий дополнительных приложений:

  1. Нажмите на /data/tmp/;

  2. Скопируйте на устройство с помощью adb shell, используя , cpесли он доступен на вашем устройстве или catнет.

     > adb push data.db /data/tmp/data.db
     > adb shell
     # su # or run-as com.me.app
     # cp /data/tmp/data.db /data/data/com.me.app/databases/data.db
    

Не забудьте изменить com.me.appимя пакета на правильное для вашего приложения.

Этот подход работал для меня. Для полноты картины я на самом деле отправил файл obb, /sdcard/а затем использовал adb shellбез прав root, чтобы скопировать этот файл в правильную папку пакета для этого файла ( там, /sdcard/Android/obb/packagename/где packagenameнеобходимо изменить, чтобы он соответствовал папке вашего приложения для Android.
Я должен был сначала создать его:adb shell mkdir /data/tmp/ ; adb shell chmod 777 /data/tmp/ ; adb push file /data/tmp/