Offiziellen Weg um eine APP in das System Verzeichnis zu installieren.

  • Antworten:12
Patrick Wessolowski
  • Forum-Beiträge: 12

12.11.2015, 23:44:00 via Website

Hallo zusammen,

ich habe schon in dem Android developers Forum nachgefragt. Leider habe ich keine Antwort bekommen.
Ich hoffe daher das ich hier mehr Glück habe.

Da ich leider keinen Link Posten kann, muss ich den Text nochmal hier her kopieren.

Da ich auch recht viel an meinem Auto bastel, habe ich mir als Projekt einen CarPc genommen. Die Hardwarekomponennten (Eigenentwicklung und teils auch fertige Loesungen) habe ich alles fertig sowie die Software die darauf laufen soll.
Momentaner Stand ist, das das System locker mit den aktuellen Systemen in Namenhaften Autos mithalten kann etc.
Darum geht es hier aber nicht. War nur als kurze Abholung gedacht.

Mir geht es darum, das ich bis jetzt keine Moeglichkeit gefunden habe, wie ich mein Android per remote steuern kann. Ich muss das selber entwickeln und keine fertige App etc nehmen, da diese nicht in mein Konzept passt.
Grund fuer das steuern ist, das ich dann alle Funktionen vom Android nutzen kann. Somit muss ich diese nicht eigens nachprogrammieren.
Ein weiterer Punkt ist, da dieses System recht bald (Nach der Testphase ca. 1 Jahr) Kaeuflich erworben werden kann. Da aktuelle Systeme auch Remote anbieten, darf das bei mir natuerlich nicht fehlen.

Eine Idee die ich hatte war ueber ADB zu gehen, was sehr unschoen ist....

Dann hatte ich die Idee einfach einen eigenen Terminal emu zu schreiben, was ja im grunde genommen das gleiche ist wie ADB. Leider kann ich das nicht so ohne weiteres machen, da die Sicherheitsrichtlinen sehr streng sind.

Frage ist, gibt es eine offiziellen Weg um Apps zu injekten. Muessen die Apps evtl speziell signiert sein? Welche wege muss man gehen?
Wichtig ist, es soll kein hack sein!!!!

Vielen Dank!

Gruß
Patrick

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 12:48:50 via App

Wie jetzt?
Laut deinem Title wilst die App als system app speicher. das geht (mit root).

In deinem Text beschreibst du aber eine Remotesteuerung.
Was soll die denn können?
Da gibt es mehere Möglichkeite möglichkeiten
aber was ist voraussetzung?
Entfente Remote oder über wlan?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

13.11.2015, 12:58:43 via Website

Das System-verzeichnis ist normalerweise nicht R/W gemounted. Um das machen zu können, brauchst Du Root. Dann kannst Du per adb push alles auf die Partition schieben.

Ich verstehe Dein Problem aber auch nicht. Wozu eine App auf die System-Partition schieben? Warum nicht, wie alle anderen auch, auf die Data-Partition?

Und was willst Du remote steuern?
Ein Inject ohne Hack? Entweder gibt es offizielle APIs oder es ist ein hack, der aber nur solange funktioniert, bis die Lücke dazu geschlossen wird.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 14:16:10 via App

@Aries stimmt nicht ganz. Wenn man die App so programmiert dass sie Remote gesteuert werden kann ist es keine Lücke

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

13.11.2015, 14:22:24 via Website

Er hat aber von Android remote steuern und nicht von App remote steuern geschrieben. Also gehe ich favon aus, dass seine sich in andere Prozesse oder Apps einklinken soll.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 15:12:00 via Website

Dann müsste er eine Art Teamviewer für Android bauen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Patrick Wessolowski
  • Forum-Beiträge: 12

13.11.2015, 20:39:43 via Website

Evlt. Habe ich mich ein bisschen missverständlich ausgedrückt.

Ja ich will eine Art Team viewer.

Ich will aus dem WLAN heraus das Android steuern.

Was ich bisher ausprobiert habe:

Ich habe mich über ADB verbunden und konnte dort Key events und touchevents anfeuern.

Damit konnte ich dann das Android steuern.leider nur wenn das display an war, aber immerhin.

Dann habe ich das gleiche mal im terminal Emulator auf dem Android ausprobiert. Dort konnte ich aber nur in diesem Fenster eine Aktion hervorrufen.

Danach dachte ich mir, Okeee schreib dir eine APP welche das gleiche wie auf dem terminal ausführt

Nach dem ausführen bekomme ich aber eine exception .

Von daher denke ich, wenndie APP mehr rechte hat, dann sollte es gehen.

Dazu muss diese aber denke ich als system APP fungieren.

FATAL EXCEPTION IN SYSTEM PROCESS: main
11-13 20:35:14.455 25220 25220 E AndroidRuntime java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
11-13 20:35:14.455 25220 25220 E AndroidRuntime at android.os.Parcel.readException(Parcel.java:1546)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at android.os.Parcel.readException(Parcel.java:1499)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at android.hardware.input.IInputManager$Stub$Proxy.injectInputEvent(IInputManager.java:435)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at android.hardware.input.InputManager.injectInputEvent(InputManager.java:681)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.commands.input.Input.injectKeyEvent(Input.java:234)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.commands.input.Input.sendText(Input.java:179)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.commands.input.Input.run(Input.java:83)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.commands.input.Input.main(Input.java:60)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
11-13 20:35:14.455 25220 25220 E AndroidRuntime at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)
11-13 20:35:14.465 25220 25220 E AndroidRuntime Error reporting crash
11-13 20:35:14.465 25220 25220 E AndroidRuntime java.lang.RuntimeException: Bad file descriptor
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.os.BinderProxy.transactNative(Native Method)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.os.BinderProxy.transact(Binder.java:496)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.os.ServiceManagerProxy.getService(ServiceManagerNative.java:123)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.os.ServiceManager.getService(ServiceManager.java:55)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.app.ActivityManagerNative$1.create(ActivityManagerNative.java:2389)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.app.ActivityManagerNative$1.create(ActivityManagerNative.java:2387)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.util.Singleton.get(Singleton.java:34)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at android.app.ActivityManagerNative.getDefault(ActivityManagerNative.java:82)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
11-13 20:35:14.465 25220 25220 E AndroidRuntime at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 20:49:07 via Website

Ja entweder su schreibs das so oder du machst einen Service der auf einem TCP Port hört und nach dem Server-Client Prinzip andere Befehle akzeptiert. Mit Login etc. noch absichern und dann sollte es funktionieren.
Aber das ist nicht sowas was man schnell mal gemacht hat.

Wenn du das machen willst kannst dich ja mal hiervon Inspirieren lasen:
https://github.com/oNaiPs/droidVncServer

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Patrick Wessolowski
  • Forum-Beiträge: 12

13.11.2015, 22:30:40 via Website

Danke fuer deine Antwort.

Ich habe den Code mal ueberflogen und festgestellt, das schon in der MainActivity abgefragt wird ob das Handy gerootet ist. Wenn nicht wird nicht weiter gemacht und man wird aufgefordert das Handy zu rooten.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 22:33:26 via Website

Ja da ist halt root vorausgesetzt, anders gaht es kaum, nur so wie Teamviewer halt, aber da wirste nicht an den Code rankommen.
Ist halt ein Open Source Projekt mit vergleichbarer Technik.
Vlt. findest du ja noch was ohne Root.
Und sonst wäre ein erforderliches Root ein Hindernis?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Patrick Wessolowski
  • Forum-Beiträge: 12

13.11.2015, 22:40:58 via Website

Tjaa ich wuesste zu gerne wie TeamViewer das macht....

Ja Root ist ein Hinderniss da ich davon ausgehen muss, das meine "Potenziellen Kunden" Ihr Geraet nicht gerootet haben ;)

Schade ist, das Google keine Api fuer sowas hat.

Ich meine ich koennte es auch ueber ADB machen, nur finde ich das das nicht gerade der tolle Stil ist.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

13.11.2015, 22:43:18 via App

Ausserdem muss das Endgerät dann ADB über WiFi untertützen und das können erst die neueren.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Patrick Wessolowski
  • Forum-Beiträge: 12

13.11.2015, 23:29:59 via Website

Was ich mal ausprobieren koennte waere, ueber ADB die App so zu installieren das ich das Geraet nicht Rooten brauche.

Ich werde da mal ein bisschen rum spielen....

Danke schonmal fuer Eure Hilfe...

Gute Nacht zusammen...

Antworten