2015-12-17 4 views
3

У меня есть приложение на базе Linux, и теперь я хочу его портировать на Android. Я понял, что я могу извлечь toolchain из Android NDK и создать свое приложение, но как сделать APK таким, что я могу установить его на устройства Android без необходимости доступа root.Портирование приложения на базе Linux на платформе Android

В Linux, я использовал, чтобы установить его с помощью Баш скрипт, который используется, чтобы положить мои файлы, связанные приложения в разных папках, как /opt, /etc (файлы совместно с другими приложениями) и /var. Как мы можем справиться с этим в Android. Есть ли папка, похожая на /etc на Android, где я могу помещать файлы, которые могут читать другие приложения.

Благодаря

ответ

0

Прежде всего, вам повезет, если проект скомпилирован «как есть» НДК автономного набора инструментов. Часто bionic недостаточно, и людям нужно настроить среду сборки (от libpthread до полномасштабной buildroot альтернативной инструментальной цепочки со статической C-сценой).

Что касается местоположения общих файлов, на Android это имя "external storage". Для вашего приложения и другого приложения могут потребоваться специальные разрешения , чтобы написать и прочитать это место. Каталог /opt здесь не существует. У вас нет доступа для записи к /etc, но для чтения доступны файлы, такие как /etc/hosts.

Относительно APK. Вы правы, это отличный способ распространять и устанавливать приложения на Android. Но вы можете, даже без root, локально установить и запустить исполняемый файл командной строки. Обычно это делается с включенными опциями разработчиков и включает отладку USB. Теперь вы можете открыть adb shell, установить и запустить вашу программу. Фокус в том, что внешнее хранилище (см. Выше) отмечено как «неисполнение». Поэтому вы должны найти другое место для своего двоичного кода. Обычно /data/local/tmp будет хорошим выбором.

Вместо adb вы можете использовать эмулятор терминала на устройстве.

Если вы решили построить APK, вы, вероятно, предпочтете преобразовать свое приложение в общую библиотеку, которая будет выполнять действия для Java через JNI. Но также можно упаковать двоичный файл командной строки в составе APK и использовать Java Runtime.exec().