2016-11-13 59 views
1

我想構建一個android應用程序的小應用程序,我可以從android命令行運行,同時通過ssh遠程連接到android設備。我不想要任何形式的按鈕/啓動器/圖標或GUI界面。我該如何構建一個android的命令行應用程序?

如果可能的話,我寧願在golang中這樣做。

我嘗試使用gomobilegolang.org/x/mobile),但是當我把我的APK設備上,並嘗試運行它,我得到的錯誤:

[email protected]:/data/data/berserker.android.apps.sshdroid/home $ am start gserv.apk           
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=gserv.apk } 
java.lang.SecurityException: Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL 
    at android.os.Parcel.readException(Parcel.java:1546) 
    at android.os.Parcel.readException(Parcel.java:1499) 
    at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2504) 
    at com.android.commands.am.Am.runStart(Am.java:770) 
    at com.android.commands.am.Am.onRun(Am.java:307) 
    at com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 
    at com.android.commands.am.Am.main(Am.java:98) 
    at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 
    at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) 

該應用程序只是一個小的hello world HTTP服務器。如何安裝和的方式,允許我使用它就像內置到不需要GUI(lscatcd等)Android其它命令行程序運行它。

+1

'am start'不會將APK作爲參數。它是通過一個「Intent」(你沒有的)開始一個Android活動(你沒有)。 APK沒有像您正在尋找的命令行界面。歡迎您編譯本機二進制文件,將其上傳到設備,將其標記爲可執行文件,並嘗試從命令行運行它。 – CommonsWare

+0

是的,我不是很聰明。我能夠通過安裝Android的NDK,並運行'CC = 「$ NDK_ROOT /斌/ ARM-Linux的androideabi-gcc的」 全球海洋觀測系統的Linux = = GOARCH手臂GOARM = 7 CGO_ENABLED = 0要建立-v -o來構建它goserv main.go' – hermancain

回答

5

出現由系統版本有所不同,但我需要得到從這裏的Android NDK:

https://developer.android.com/ndk/downloads/index.html

和安裝其它工具

./android-ndk-r10c/build/tools/make-standalone-toolchain.sh --platform=android-21 --install-dir=$NDK_ROOT

,然後生成二進制用

CC="$NDK_ROOT/bin/arm-linux-androideabi-gcc" GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build -v -o goserv main.go

我最該信息從這裏:https://github.com/golang/go/issues/9412

但需要改變改變一些路徑,改變CC_FOR_TARGET只是CCGOOS=androidGOOS=linux,並設置CGO_ENABLED=0需要。

這是Linux上的Fedora 25 Beta 1.7.4