Как создать исполняемый файл Android для запуска из оболочки?

Я использую Eclipse с NDK для переноса моего приложения C ++ на Android. В Linux это приложение, которое вы вызываете с аргументами в оболочке для выполнения задачи, графический интерфейс не предоставляется, это просто интерфейс командной строки. В настоящее время я добавил очень простую оболочку графического интерфейса пользователя в java, которая инкапсулирует спецификацию аргумента, которая передается портированному коду C ++ в NDK, однако я хотел бы также иметь приложение, которое можно вызывать, когда я ssh вставляю в свой телефон Android ,

На Android я вижу, что некоторые приложения могут запускаться из оболочки. Например, SSH Droid Устанавливается из Google Play Store, имеет в дополнение к своему графическому интерфейсу версию, вызываемую оболочкой. Я вижу это под путем /data/data/berserker.android.apps.sshdroid/dropbear/ssh тогда как его APK находится в /data/app/berserker.android.apps.sshdroid-1.apk, Для моего APK я не нахожу исполняемых файлов в /data/data/com.mydomain.myapp-37.apkтолько каталоги cache, files, а также lib,

Используя Eclipse, как я могу упаковать исполняемые файлы в собственном формате в архив APK моего приложения? Когда я присутствую в моем APK, как я могу при установке автоматизировать извлечение и установку разрешений на выполнение, чтобы я мог запустить его через оболочку? Похоже, что SSH Droid сделал обе эти вещи, я хотел бы сделать аналогичным образом. Есть простой пример, который показывает, как это делается?

Мне даже нужен apk, могу ли я как-то просто создать исполняемый файл интерфейса командной строки, более соответствующий моей существующей версии порта Linux?

Как указываются аргументы для командной строки оболочки? Ты используешь argc а также argv как в приложениях C ++?

0

Решение

Для меня мне не нужно было затмение, ни Java-код в моем приложении. В моем приложении, портированном из Linux, уже был набор make-файлов. Я смог использовать свою существующую систему make-файлов с помощью автономной цепочки инструментов NDK.

Этот ответ заставил меня пойти с автономной цепочкой инструментов. В моем случае, вот как я вызвал его, когда я кросс-компилирую со своего Macintosh, уже установив NDK в /Users/me/Development/android-ndk-r10d:

ANDROID_NDK=/Users/me/Development/android-ndk-r10d
SYSROOT=$(ANDROID_NDK)/platforms/android-19/arch-arm
${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh --platform=android-19 --install-dir=${ANDROID_NDK}/myapp-android-toolchain --ndk-dir=/Users/me/Development/android-ndk-r10d --toolchain=arm-linux-androideabi-4.8 --system=darwin-x86_64

С этой настройкой я запустил мою сборку так:

cd ~/base/of/myapp/src/
ANDROID_NDK=/Users/me/Development/android-ndk-r10d PATH=${ANDROID_NDK}/myapp-android-toolchain/bin:$PATH make

После того, как я исправил некоторые проблемы с config для моей кросс-компиляции в некоторых сторонних библиотеках, у меня была рабочая сборка. Далее я хотел установить его на свой телефон:

# Push to a location with write permission (sdcard):
cd ~/base/of/myapp/bin/ # My build puts the executable here.
adb push myapp /sdcard/
# Go into phone and complete the install manually:
adb shell
su
mount -oremount,rw rootfs /system  # /vendor/bin is in /system mount.
# One time creation of /vendor/bin (that is in the PATH by default):
mkdir /vendor/bin
# Copy the myapp executable over
cp /sdcard/myapp /vendor/bin/myapp

Теперь я могу вызвать myapp из оболочки на моем телефоне, как обычное приложение Linux с интерфейсом командной строки. argc а также argv из моего оригинального кода Linux, работающего так, как написано в сборке Android этим процессом.

0

Другие решения