NDKからAPIとして直接公開されていないAndroidシステムのライブラリをネイティブコードで使用できるかどうか疑問に思いました。特に、それらをネイティブアプリコードに含めて、リンクできるようにする方法。推奨されていないことは承知していますが、Androidのさまざまなリリース間でのプロジェクトの互換性は問題ではありません。
私が達成しようとしているのは、Androidが提供するサービスの一部をスキップして、カーネルの近くに座ろうとすることです。ありがとう。
NDKからAPIとして直接公開されていないAndroidシステムのライブラリをネイティブコードで使用できるかどうか疑問に思いました。特に、それらをネイティブアプリコードに含めて、リンクできるようにする方法。推奨されていないことは承知していますが、Androidのさまざまなリリース間でのプロジェクトの互換性は問題ではありません。
私が達成しようとしているのは、Androidが提供するサービスの一部をスキップして、カーネルの近くに座ろうとすることです。ありがとう。
安定した APIを超えてシステム ライブラリに依存することは推奨されないことをご理解いただければ幸いです。しかし、Android のオープンな性質により、(技術的にもライセンスの観点からも) そのような依存関係を導入することができます。本質的には、チャーターされていない海域を航行し、プラットフォームの次のバージョンだけでなく、同じプラットフォーム レベルのベンダー提供の (つまり、AOSP 以外の) セットアップでも API の変更に備えることを意味します。
前方 (およびベンダー) 互換性を確保する最も安全な方法は、文書化されていないシステム機能に動的リンクを使用し、途中で慎重なエラー チェックを実行することです。
しかし、多くの場合、システムの文書化されていない API は実際には非常に安定しており、Google の Android チームの親切な人々は破壊的な変更をあまり頻繁に行いません。したがって、skiaの 4.0 バージョンにリンクすると、コードは 4.1.2 以降で動作する可能性が高くなります。
技術的には、コンパイルするヘッダーとリンクする.soファイルが必要です。後者は、自分のデバイスまたはエミュレーター イメージからadb pull /system/lib/lib
何でも簡単に使用できます。https://android.googlesource.com/ git リポジトリ.so
からダウンロードできるヘッダー。ヘッダーがライブラリのバージョンと一致していることを確認してください。