Java サービスがネイティブ サービスを呼び出す

WMS はクライアントとして機能し、そのコード パスは次のとおりです。

android/frameworks/base/services/core/java/com/android/server/wm

 

ネイティブ レイヤー CustomizeManagerService はサーバー側として使用され、そのコード パスは次のとおりです。

android/frameworks/native/services/customizemanagerservice

目次

1. まず、aidl ファイルを定義します。このファイルは次のディレクトリに追加できます。

2. ネイティブ層サービスについては、通常のネイティブ サービスの作成プロセスを参照してください。

参照できる

3. ただし、次の箇所を変更する必要があります。


 

1. まず、aidl ファイルを定義します。このファイルは次のディレクトリに追加できます。

android/frameworks/base/core/java/android/ipd/ICustomizeManagerService.aidl

パッケージ android.customize;
/**
 * インターフェースをカスタマイズします。
 * {@hide}
 */
インターフェース ICustomizeManagerService {     int getcustomize(); }

Aidl から Java ファイルを生成し、その内容を確認したい場合は、次のコマンドを使用できます。このコマンドは Java ディレクトリに生成されます。-o は生成パスを指定します。

$ aidl -o ./java --lang=java フレームワーク/base/core/java/android/ipd/ICustomizeManagerService.aidl

 

android.ipd.ICustomizeManagerService をインポートします。

 

プライベート ICustomizeManagerService ipdService;

 

IBinder バインダー = ServiceManager.getService("customizemanagerservice");

if (バインダー != null) {

    CustomizeService = ICustomizeManagerService.Stub.asInterface(binder);

}

int getcustomize =customizeService.getcustomize();

2. ネイティブ層サービスについては、通常のネイティブ サービスの作成プロセスを参照してください。

参照できる

https://blog.csdn.net/weixin_41028555/article/details/130322366?spm=1001.2014.3001.5502

3. ただし、次の箇所を変更する必要があります。

#define NATIVESERVICE_NAME " android.customize.ICustomizeManagerService "
IMPLEMENT_META_INTERFACE(CustomizeManagerService, NATIVESERVICE_NAME);

ここでの NATIVESERVICE_NAME は、ICustomizeManagerService.aidl のパッケージ名と一致している必要があります。

 

おすすめ

転載: blog.csdn.net/weixin_41028555/article/details/131211398