いくつかのネイティブ ライブラリを含む ROM 用のシステム アプリを開発しました。私は以下を試しました:
このネイティブ ライブラリを /system/lib にコピーしないで、apk に入れます。この場合、システムの起動時にライブラリが /data/data/xxxx/lib にコピーされず、ライブラリが見つからないためアプリの実行に失敗します。( PackageManagerService.java 3301 注: 更新されていない限り、システム アプリケーションのネイティブ バイナリを展開したくありません (バイナリは既に /system/lib の下にあります)。つまり、バイナリを展開します。非システム アプリとシステム アプリのアップグレードのみ)。
このライブラリを /system/lib にコピーします。アプリは最初は正しく実行されますが、アップグレードすると、起動時に新しいバージョンのライブラリが /data/data/xxxx/lib にコピーされます。しかし、Android は /data/data/xxx/lib( In DexClassLoader::findLibrary) の前に /system/lib でライブラリを検索するため、古いバージョンのライブラリが常に読み込まれます。これは、ネイティブ ライブラリのアップグレードに失敗することを意味します。
それで、私は何をすべきですか?ありがとう