こんにちは!
Android でPN7160 NFC チップをサポートするために必要な変更を統合するには、次のドキュメントに従っています。
https://www.nxp.com/docs/en/application-note/AN14608.pdf
私は現在、Android 15 r14タグに基づいたiMX8MPでAndroid 15 1.2.0を実行しています。
上記のドキュメントには、Android 15 r1 リリースに基づくソフトウェア パッケージへのリンクが含まれていますが、残念ながら、2 つのリリースの間に NFC Android スタックに何らかの変更が加えられ、2 つのリリースに互換性がなくなったようです。
たとえば、パッケージ/apps/Nfc リポジトリをビルドしようとすると、次のエラーが発生します。
packages/apps/Nfc/src/com/android/nfc/NfcService.java:1762: error: NfcService.NfcAdapterService is not abstract and does not override abstract method fetchActiveNfceeList() in INfcAdapter
final class NfcAdapterService extends INfcAdapter.Stub {
^
packages/apps/Nfc/src/com/android/nfc/NfcService.java:2164: error: method does not override or implement a method from a supertype
@Override
^
packages/apps/Nfc/src/com/android/nfc/NfcService.java:2260: error: method does not override or implement a method from a supertype
@Override
^
packages/apps/Nfc/src/com/android/nfc/NfcService.java:2544: error: method does not override or implement a method from a supertype
@Override
^
packages/apps/Nfc/src/com/android/nfc/NfcService.java:2608: error: method does not override or implement a method from a supertype
@Override
^
packages/apps/Nfc/src/com/android/nfc/cardemulation/CardEmulationManager.java:584: error: CardEmulationManager.CardEmulationInterface is not abstract and does not override abstract method isEuiccSupported() in INfcC
final class CardEmulationInterface extends INfcCardEmulation.Stub {
^
packages/apps/Nfc/src/com/android/nfc/cardemulation/CardEmulationManager.java:883: error: recoverRoutingTable(int) in CardEmulationManager.CardEmulationInterface cannot implement recoverRoutingTable(int) in INfcCard
public boolean recoverRoutingTable(int userHandle) {
^
return type boolean is not compatible with void
packages/apps/Nfc/src/com/android/nfc/cardemulation/CardEmulationManager.java:855: error: method does not override or implement a method from a supertype
@Override
^
packages/apps/Nfc/src/com/android/nfc/cardemulation/CardEmulationManager.java:882: error: method does not override or implement a method from a supertype
@Override最初のエラーは、Android 15 r1 リリースには存在しない API を導入するこのコミットによって発生します。
https://android.googlesource.com/platform/frameworks/base/+/9fa0481604f727087a7d752c32ff7789372fbb88
NXP の最新の BSP は、現在の NXP NFC ソフトウェア サポート パッケージではサポートされていないのですか?
よろしくお願いします!
ロベルト
NXP 公式パッチは Android 15 r1 AOSP 用です。新しいリリースでは r1 と比較して多くの変更が加えられているため、1 つずつ変更する必要がある場合があります。
たとえば、このエラーの場合、
パッケージ/apps/Nfc/src/com/android/nfc/NfcService.java:1762: エラー: NfcService.NfcAdapterService は抽象メソッドではなく、INfcAdapter の抽象メソッド fetchActiveNfceeList() をオーバーライドしていません
最終クラス NfcAdapterService は INfcAdapter.Stub を拡張します {
次の関数を、NfcAdapterService が INfcAdapter.Stub を拡張する最終クラスに配置します。
最終クラス NfcAdapterService は INfcAdapter.Stub を拡張します {
@オーバーライド
パブリック Map
Map map = 新しい HashMap();
if (isNfcEnabled()) {
マップ = mDeviceHost.dofetchActiveNfceeList();
}
マップを返します。
}
..
..
ご参考までに。NfcService.java - Android コード検索からコピーできます。
AOSP リリース間で異なるコードを比較して、それに応じてコードを変更できます。
別のエラー:
パッケージ/apps/Nfc/src/com/Android/nfc/NfcService.java:2164: エラー: 方法はスーパータイプの方法をオーバーライドまたは実装していません
@オーバーライド
このエラーは、 NfcService.java:2164 の関数が frameworks/base/nfc/java/android/nfc/INfcAdapter.aidl と一致していないことが原因です。
新しいリリース (例: r30) で同じ関数を見つけて、 NfcService.java 内の不一致の関数を置き換えることができます。
@jimmychanこのトピックに関する更新はありますか?フィードバックをいただければ幸いです。ありがとう。
AE は BSP をビルドして問題を再現しようとしています。何か更新があったらお知らせします。
このCASEについての最新情報。私のお客様の1人が、PN7160をAndroid OS 15に移植するときに同じ問題に遭遇しました。
以下はログです:
パッケージ/apps/Launcher3/src/com/Android/launcher3/responsive/HotseatSpecsProvider.kt:54:9: 警告: パラメータ 'dimensionType' は使用されません
ディメンションタイプ: ディメンションタイプ、
^
パッケージ/アプリ/Launcher3/src/com/Android/launcher3/util/LauncherLayoutBuilder.kt:170:13:警告: スーパータイプ 'ItemTarget' 内の対応するパラメータの名前は 'children' です。名前付き引数を使用してこの関数を呼び出すと、問題が発生する可能性があります。
childrenIgnored: List
^
[ 42% 55590/131966] //パッケージ/apps/Nfc:NfcNci javac [共通] (優先度: 22)
失敗: out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno.srcjar
rm -RF "out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/classes"「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno」"out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno.srcjar.tmp"「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars」「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.tmp」&& mkdir -p "out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/classes"「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno」「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars」&& out/host/Linux-x86/bin/zipsync -d out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars-l out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars/list-f "*.java"out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/app/pendingintent.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/content/component_name.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/content/intent.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/aid_group.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/apdu_service_info.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/card_emulation.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/ndef.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/nfc_fservice_info.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/nfc/nfc_service.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/os/patternmatcher.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/os/persistablebundle.srcjar out/soong/.intermediates/frameworks/base/framework-nfc-javastream-protos/gen/gensrcs/frameworks/base/core/proto/Android/プライバシー.srcjar out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/gen/Android/R.srcjar&& (if [ -s out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars/list] || [ -s out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.rsp ] ; 次に、out/host/Linux-x86/bin/soong_javac_wrapper prebuilts/jdk/jdk21/Linux-x86/bin/javac -J-Xmx4096M -J-XX:OnError="cat hs_err_pid%p.log"-J-XX:CICompilerCount=6 -J-XX:+UseDynamicNumberOfGCThreads -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -Xmaxerrs 9999999 -encoding UTF-8 -sourcepath "" -g -XDskipDuplicateBridges=true -XDstringConcat=inline -proc:none -Xlint:-dep-ann --system=out/soong/.intermediates/build/soong/java/core-libraries/stable-core-platform-api-stubs-system-modules/android_common/system -classpath out/soong/.intermediates/vendor/nxp/frameworks/nfc/com.nxp.nfc/android_common/turbine-combined/com.nxp.nfc.jar:out/soong/.intermediates/vendor/nxp/frameworks/nfc/com.nxp.nfc/android_common/repackaged-jarjar/turbine/com.nxp.nfc.jar:out/soong/.intermediates/vendor/nxp/frameworks/emvco/com.nxp.emvco/and roid_common/turbine-combined/com.nxp.emvco.jar:out/soong/.intermediates/vendor/nxp/frameworks/emvco/com.nxp.emvco/android_common/repackaged-jarjar/turbine/com.nxp.emvco.jar:out/soong/.intermediates/frameworks/base/nfc/framework-nfc.impl/android_common/jarjar/turbine/framework-nfc.jar:out/soong/.inter mediates/frameworks/base/framework/android_common/turbine-combined/framework.jar:out/soong/.intermediates/frameworks/base/framework/android_common/repackaged-jarjar/turbine/framework.jar:out/soong/.intermediates/frameworks/base/omapi/aidl/android.se.omapi-V1-java/android_common/turbine-combined/andro id.se.omapi-V1-java.jar:out/soong/.intermediates/prebuilts/sdk/current/androidx/m2repository/androidx/annotation/annotation-jvm/1.9.0-rc01/androidx.annotation_annotation/android_common/combined/androidx.annotation_annotation.jar:out/soong/.intermediates/prebuilts/sdk/current/androidx/m2repository/andr oidx/appcompat/appcompat/1.8.0-alpha01/androidx.appcompat_appcompat/android_common/turbine-combined/androidx.appcompat_appcompat.jar:out/soong/.intermediates/packages/apps/Nfc/bluetooth-protos-nfc-enums-java-gen/android_common/turbine-combined/bluetooth-protos-nfc-enums-java-gen.jar:out/soong/.interm ediates/prebuilts/sdk/current/extras/material-design-x/com.google.android.material_material/android_common/turbine-combined/com.google.android.material_material.jar:out/soong/.intermediates/frameworks/libs/modules-utils/java/com/android/internal/util/modules-utils-fastxmlserializer/android_common/turbine-combined/modules-utils-fastxmlserializer.jar:out/soong/.intermediates/frameworks/libs/modules-utils/java/com/android/modules/utils/modules-utils-shell-command-handler/android_common/turbine-combined/modules-utils-shell-command-handler.jar:out/soong/.intermediates/system/libsysprop/srcs/PlatformP roperties/android_common/turbine-combined/PlatformProperties.jar:out/soong/.intermediates/packages/apps/Nfc/proto/nfc-event-log-proto/android_common/turbine-combined/nfc-event-log-proto.jar:out/soong/.intermediates/packages/apps/Nfc/flags/nfc_flags_lib/android_common/turbine-combined/nfc_flags_lib.jar -source 17 -target 17 -d out/soong/.intermediates/packages/apps/Nfc/NfcNci/android_common/javac/classes-s out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno@out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.rsp @out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars/list; fi ) && out/host/Linux-x86/bin/soong_zip -jar -o out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno.srcjar.tmp -C out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno-D out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno&& out/host/Linux-x86/bin/soong_zip -jar -o out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.tmp -C out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/classes-D out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/classes&& if ! cmp -s "out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.tmp"「out/soong/.intermediates/packages/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar」と入力し、mv「out/soong/.intermediates/packages/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar.tmp」と入力します。「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/NfcNci.jar」;fi && if ! cmp -s "out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno.srcjar.tmp"「out/soong/.intermediates/packages/apps/Nfc/NfcNci/android_common/javac/anno.srcjar」と入力し、mv「out/soong/.intermediates/packages/apps/Nfc/NfcNci/android_common/javac/anno.srcjar.tmp」と入力します。「out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/anno.srcjar」;fi && rm -RF "out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/srcjars""out/soong/.intermediates/パッケージ/apps/Nfc/NfcNci/android_common/javac/classes"
パッケージ/アプリ/Nfc/src/com/android/nfc/NfcService.java:1762:エラー: NfcService.NfcAdapterService は抽象メソッドではなく、INfcAdapter の抽象方法 fetchActiveNfceeList() をオーバーライドしません
最終クラス NfcAdapterService は INfcAdapter.Stub を拡張します {
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/NfcService.java:2164:エラー: 方法はスーパータイプの方法をオーバーライドまたは実装していません
@オーバーライド
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/NfcService.java:2260:エラー: メソッドはスーパータイプのメソッドをオーバーライドまたは実装していません
@オーバーライド
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/NfcService.java:2544:エラー: 方法はスーパータイプの方法をオーバーライドまたは実装していません
@オーバーライド
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/NfcService.java:2608:エラー: 方法はスーパータイプのメソッドをオーバーライドまたは実装していません
@オーバーライド
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/cardemulation/CardEmulationManager.java:584:エラー: CardEmulationManager.CardEmulationInterface は抽象的ではなく、INfcCardEmulation の抽象メソッド isEuiccSupported() をオーバーライドしていません
最終クラス CardEmulationInterface は INfcCardEmulation.Stub を拡張します {
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/cardemulation/CardEmulationManager.java:883:エラー: CardEmulationManager.CardEmulationInterface の recoverRoutingTable(int) は INfcCardEmulation の recoverRoutingTable(int) を実装できません
パブリックブール値recoverRoutingTable(int userHandle) {
^
戻り値の型booleanはvoidと互換性がありません
パッケージ/アプリ/Nfc/src/com/Android/nfc/cardemulation/CardEmulationManager.java:855:エラー: 方法はスーパータイプの方法をオーバーライドまたは実装していません
@オーバーライド
^
パッケージ/アプリ/Nfc/src/com/Android/nfc/cardemulation/CardEmulationManager.java:882:エラー: 方法はスーパータイプの方法をオーバーライドまたは実装していません
@オーバーライド
^
9件のエラー
06:13:52 ninja は終了ステータス 1 で失敗しました
## ## failed to build some targets (02:55:54 (hh:mm:ss)) ## ##
オレンジ@apple:~/work/Android15/gulukai/android15$
オレンジ@apple:~/work/Android15/gulukai/android15$
オレンジ@apple:~/work/Android15/gulukai/android15$
大変お待たせして申し訳ございません。まだAEの返事を待っています。更新が届き次第、できるだけ早くお知らせします。
こんにちは@jimmychan 、何かニュースはありますか?ありがとう!
これを社内のAEに確認してみます。何か更新があればお知らせします。