0

これで、telephony_DA というサードパーティ製の jar が既に作成されています。そして、私はすでにこの telephony_DA ライブラリをアプリケーション レベルで使用できます。(AndroidManifest.xml の変更と /etc/permissions へのアクセス許可の追加)

私の問題は、
「com.android.server」パッケージに TelephonyRegistry_DA.java という新しいサービスを作成し、telephony_DA ライブラリのクラスを使用したことです。Android.mk の telephony_DA ライブラリに注目した後、services ライブラリを正常にビルドできました。しかし、実行時には、次の理由でクラッシュしたように見えました

"java.lang.NoClassDefFoundError: com.android.server.TelephonyRegistry_DA"

私は問題を理解しようとしましたが、何かを見つけました。TelephonyRegistry_DA.java の telephony_DA ライブラリからクラスを削除すると、実行時に TelephonyRegistry_DA.java からサービスを作成および追加する際に問題は発生しません。systemserver は telephony_DA ライブラリとのリンクを認識していなかったようです。

では、サードパーティの jar を systemserver.java に追加するにはどうすればよいでしょうか?

ありがとう。

4

1 に答える 1

0

アプリケーション レベルでは、manifest.xml からサードパーティ ライブラリを inidcat できます。ただし、システム サーバーからのサービスでは、サード パーティのライブラリをデフォルトのリンク パスに追加する必要があります。そのため、以下のように init.rc (例: telephony_DA.jar) を変更してください。

export BOOTCLASSPATH /system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/ system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/filterfw.jar:/system/framework/telephony_DA.jar

于 2012-07-17T01:59:14.943 に答える