arm32 ビット アプリケーションは arm64 ビット レコードと互換性があります

目次

バックグラウンド

64ビットステップに対応

1. arm64 をサポートするように ndk を構成する

2.ビルドビルド

3. 構築が完了したら、apk パッケージを分析します

 4. lib/armeabi-v7a フォルダーと lib/arm64-v8a フォルダー内の so ライブラリ ファイルを比較します。

5. 不足しているライブラリ ファイルがどのサードパーティの依存関係に属しているかを判断します。

6. 依存関係を特定したら、依存関係をアップグレードするか、対応する 64 ビット so ファイルを直接インポートします。

7. テスト検証の実施

補充する


バックグラウンド

ゴールド ラベル アライアンスの 64 ビット適応時間ノードに関する重要なお知らせ (3) ゴールドラベル アライアンス | ITGSA | モバイル スマート ターミナル エコロジー アライアンスは、中国の業界をリードする非営利団体であり、大手スマート ターミナル業界と共同で設立、設立されました。アプリケーション エコロジーは標準化、正規化、準拠、効率化されており、業界全体のアプリケーション サービス レベルと機能を向上させ、業界の Win-Win および共通の発展を促進します。https://www.itgsa.com/home/news/info?newsId=5256238539162624

 

主な理由は、新しい Arm アーキテクチャが 32 ビット アプリケーションのインストールと使用をサポートしなくなったため、古いアプリケーションが 64 ビット処理と互換性がある必要があることです。

64ビットステップに対応

Google 公式リファレンスドキュメント: https://developer.android.com/distribute/best-practices/develop/64-bit?hl=zh-cn#guidelines-ndk

1. arm64 をサポートするように ndk を構成する

armeabi-v7a は保持しておく必要があります。将来役立つでしょう。新しいマシンと互換性がある場合は、古いマシンも互換性がある必要があります。古いマシンの中には 32 ビットしかサポートしていないものもあります (UnionPay の PDA デバイスである Uboxun I9000S)。

ndk { abiFilters "armeabi-v7a", "arm64-v8a" }

2.ビルドビルド

3. 構築が完了したら、apk パッケージを分析します

[ビルド - APK を分析...] プロジェクト ディレクトリの下にある ~/app/build/outputs/apk/debug/app-debug.apk を選択します

分析が完了するまで待ちます

 4. lib/armeabi-v7a フォルダーと lib/arm64-v8a フォルダー内の so ライブラリ ファイルを比較します。

lib/arm64-v8a でどの SO ライブラリ ファイルが欠落しているかを確認します

5. 不足しているライブラリ ファイルがどのサードパーティの依存関係に属しているかを判断します。

参考:[Android開発] あるsoがどのライブラリから来ているのかをすぐに知る方法_android view so source_and tongueing_Bassyのブログ - CSDNブログ場合によっては、いくつかのsoファイルがどのライブラリから来たのかを簡単に削除できるように調べる必要があります。以下はちょっとしたトリックです: アプリ モジュールの build.gradle に、次のコードを追加します。 // so ファイルを含むすべてのライブラリ情報をリストします task.whenTaskAdded { task -> if (task.name=='mergeBiDebugNativeLibs') { //複数のフレーバーがある場合は、mergeFlavorDebugNativeLibs の形式を使用します task.doFirst { ... https://blog.csdn.net/eieihihi/article/details/109289312

さらに、手動でインポートされたファイルの中には、上記の記事の方法では依存関係を見つけることができないものもあります。そのため、git でのファイル インポートの履歴記録を使用して、どの機能が導入されたかを判断し、基本的にどの依存関係にあるのかを知る必要があります。

6. 依存関係を特定したら、依存関係をアップグレードするか、対応する 64 ビット so ファイルを直接インポートします。

依存関係のアップグレード: たとえば、私が遭遇した Fresco の依存関係、私は 1.10.0 から 1.13.0 に直接アップグレードしました。上位バージョンにアップグレードしてみてはいかがでしょうか。上位バージョンは androidx であるためです。残念ながら、私の古いプロジェクトはまだサポートされており、サポートされる予定はありません。移行する

7. テスト検証の実施

補充する

アプリケーションがデュアルスクリーン レジ (Sunmi x2 など) で実行され、デバイスが 64 ビットで、支払いの受け取りに銀聯ミス キーボード (32 ビット) を使用する必要がある場合、ミス キーボードを呼び出す SDK は 64 ビットをサポートしています。それ以外の場合、アプリケーションは 64 ビットと互換性がありません。

おすすめ

転載: blog.csdn.net/weixin_41786574/article/details/131121996