Wie erstelle ich einen android-nativen Dienst und verwende den Binder, um mit ihm zu kommunizieren?

8

Meine grundlegende Aufgabe besteht darin, einen nativen Dienst in Android zu erstellen und dann ein einfaches natives Programm zu schreiben, um es zu testen. Nehmen wir an, ich möchte einen einfachen Dienst schreiben, der mir eine Summe von 2 ganzen Zahlen zurückgibt. Ich muss Binder benutzen, um mit ihm vom Programm zu sprechen, ich habe versucht, herum zu googeln, aber ich kann ein präzises Beispiel nicht finden. Ich muss wissen, wie man einen nativen Service schafft und ihn im Programm und bei Bedarf auch in Java findet.

    
VinayChoudhary99 08.01.2013, 12:57
quelle

3 Antworten

8

Die Lösung, die ich gefunden habe, ist die Verwendung der Bindemittel in nativen und verwenden Sie die

%Vor%

und dann Bindemittel verwenden und folgenden auf der Client-Seite verwenden.

%Vor%

Ich habe hier Beispiele gefunden, wie man das macht: Ссылка

    
VinayChoudhary99 11.01.2013, 11:21
quelle
8

Wenn Sie eine normale Android-Anwendung mit dem NDK erstellen, können Sie Binder nicht verwenden, da er nicht Teil der NDK-APIs ist.

In der NDK-Dokumentation / STABLE-APIS.html finden Sie die vollständige Liste der stabilen APIs und in diesem Thread einen expliziten Kommentar von David Turner (dem NDK-Betreuer), dass Binder keine unterstützte API ist.

Ссылка

Ihre Optionen sind:

  • Verwenden Sie eine andere Form von IPC in nativem Code - zum Beispiel einen UNIX-Domain-Socket
  • Tun Sie es in Java, indem Sie die normalen Funktionen Service und AIDL des Android SDK verwenden. Wenn Sie dies mit nativem Code kombinieren möchten, können Sie Java möglicherweise mithilfe von JNI aus nativem Code aufrufen.
  • (nicht empfohlen) Kopieren Sie die relevanten Bibliotheken und Header aus einem Android Open-Source-Projekt. bauen Sie in Ihr NDK-Projekt ein; und verwende die APIs. Dies wird jedoch nicht offiziell unterstützt und wird Ihre Anwendung in zukünftigen Versionen höchstwahrscheinlich beschädigen, da Google nicht verpflichtet ist, die Kompatibilität in solchen Bibliotheken aufrechtzuerhalten (und häufig nicht). Es ist auch sehr schwierig, da Sie eine Möglichkeit finden müssen, den Dienst so zu registrieren, dass der Client ihn finden kann.
Adrian Taylor 11.01.2013 10:31
quelle
3

Nach dem Studieren und Codieren von @ Android NDK habe ich festgestellt, dass die Binder-API NICHT in Android NDK verfügbar ist. Und selbst wenn Sie Android Open Source für den Aufruf der Binder API verwenden, erhalten Sie möglicherweise Berechtigung verweigert wegen der Binder-Sicherheitsprüfung.

Wenn ich dem Systemdienst einen Dienst hinzufügen möchte, benötige ich eine Benutzergruppe auf Systemebene. Die Detailcodes finden Sie Ссылка . Es enthält den Client und den Dienst von C und Java, Sie benötigen jedoch die Systemberechtigung.

    
QJGui 05.03.2014 03:43
quelle