LINUX.ORG.RU

как установить execute для файла в android?

 ,


2

2

Возможно ли такое? Для примера скомпилирую такой код.

#include <stdio.h>

int main()
{
  printf ( "hello \n" );
}
arm-linux-gnueabi-gcc-5 main.c -o tt Я наверное и не тем компилирую даже. В общем отправляю на android.
adb push tt /sdcard/

Захожу в консоль на sdcard, а там прав на исполнение нет. chmod не помогает.

дык sdcard небось с noexec смонтировано. Посмотри adb shell cat /proc/mounts Попробуй положить в /data если оно смонтировано без noexec. Ну или

adb remount
adb push tt /system/bin

Но это сработает если рут есть на девайсе.

Вообще, штатно ты должен .apk делать с обвесом на java, если обычный софт девелопишь без рута. А такие извращения - с рутом.

slapin ★★★★★
()
Последнее исправление: slapin (всего исправлений: 1)
Ответ на: комментарий от slapin

да и компилять нужно статически (или андроидным тулчейном).

slapin ★★★★★
()

Если у тебя на sd карте какой-то vfat вместо ФС, то chmod тебе не поможет. Копируй свой бинарник куда-то в /tmp (или какой там аналог в android ?).

joy4eg ★★★★★
()

/sdcard/

Обычно там fat32. Откуда на ней unix-like атрибуты файла?

p.s. В соседней теме вы утверждали что исходники игры закрыты и там нет ничего опасного. Что совсем не вяжется с вашим вопросом в этом топике.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

В соседней теме вы утверждали что исходники игры закрыты и там нет ничего опасного.

Я не насчет игры. Я хотел проверить, можно ли скомпилировать программу и запустить в консоли android.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Возможно, но не в /sdcard
Если через adb - то /data/local/tmp
Если в приложении - /data/data/имя.пакета/files (получить из явы путь как getFilesDir)
для android<5.0 бинарь должен быть не pie, иначе - pie

mittorn ★★★★★
()
Ответ на: комментарий от u0atgKIRznY5

Я хотел проверить, можно ли скомпилировать программу и запустить в консоли android.

Да, можно.

andreyu ★★★★★
()
Ответ на: комментарий от Dendy

Я знаю что это можно. Только запустить без терминала никто не даст. Я для этого делал свой launcher, но оно работало почему-то не на всех устройствах. Когда сделал .so и дёргал через jni - заработало везде. В терминале везде работало.

slapin ★★★★★
()
Ответ на: комментарий от slapin

Я знаю что это можно. Только запустить без терминала никто не даст.

Не так. Установка с модами +x от самой программы, компилятора, тулчейна, NDK, SDK, терминала и тому подобного никак не зависит. Вам надо уже иметь возможность писать на раздел, где поддерживается установка режима выполнения и в каталог, где вам разрешена запись. Потом думать насчёт запуска не из PATH.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Ты перепутал меня и ТС.

Я не первый год уже. Я писал о том, что бинарь запустить можно, но не стоит это использовать как штатный способ, так как есть нюансы. Даже если бинарь в APK и в этом же APK есть java launcher для бинаря. При этом вариант с jni работает везде.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.