こんにちは、OpenGL デスクトップ アプリを Android に移植しようとしています。私は Android 開発の知識がないので、Qt Creator に依存してアプリをパッケージ化しています。セットアップの一環として、次の設定で Android ndk の「make-standalone-toolchain」スクリプトを呼び出しました。
--platform=android-21
--toolchain=arm-linux-androideabi-4.9
--system=linux-x86_64
次に、android-cmake を使用して、新しく作成したスタンドアロン ツールチェーンのパスを渡しました。これにより、assimp ディレクトリ ツリー内に libassimp.so、libassimp.so.3、および libassimp.so.3.1.1(ln) が作成されました。
libassimp.so パスを Qt Creator プロジェクトのビルド メニューの「追加ライブラリ」の下に渡しました。ただし、アプリを Android にデプロイすると、次のエラーでクラッシュします。
dlopen("/data/app/org.qtproject.example.a3dqtquick-2/lib/arm/lib3dqtquick.so", RTLD_LAZY) failed: dlopen failed: could not load library "libassimp.so.3" needed by "lib3dqtquick.so"; caused by library "libassimp.so.3" not found
../android-build/libs/armeabi-v7a のプロジェクト ビルド ディレクトリ内に libassimp.so (libassimp.so.3 ではない) ファイルも表示されます。
ここからどこへ行けばよいかわからないため、手動で libassimp.so.3 をこの場所に配置しても問題は解決しません。読んでくれてありがとう。私はあなたのフィードバックにさらに情報を追加します. これは私の最初のアンドロイドの実験であるため、情報不足を許してください。
以下は、deployment-settings.json ファイルです。
"description": "This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.",
"qt": "/home/ubashir/programs/Qt/5.4/android_armv7",
"sdk": "/home/ubashir/programs/android-sdk-linux",
"sdkBuildToolsRevision": "21.1.2",
"ndk": "/home/ubashir/programs/android-ndk-r10d",
"toolchain-prefix": "arm-linux-androideabi",
"tool-prefix": "arm-linux-androideabi",
"toolchain-version": "4.9",
"ndk-host": "linux-x86_64",
"target-architecture": "armeabi-v7a",
"qml-root-path": "/home/ubashir/code/3dqtquick",
"application-binary": "/home/ubashir/code/3dqtquickAndroid/lib3dqtquick.so"
アップデート:
私は今これを試しました.. assimp.so.3.1.1へのすべてのリンクを後者のコピーに置き換えて、私のライブラリlibassimp.so.3はlibassimp.so.3.1.1へのリンクではなくファイルになります。プロジェクトのサブフォルダー android/libs/aremabi-v71 に libassimp.so.3 を手動で追加しました --- ダメです。手動で追加したため、ビルド ディレクトリにすべての libassimp ファイルが表示されていることを確認したため、おそらく展開されていますが、エラーは残ります。
failed: dlopen failed: could not load library "libassimp.so.3" needed by "lib3dqtquick.so".
Androidのassimpビルドディレクトリでcmakeを実行した後、link.txtファイルを編集し、エントリ-soname、libassimp.so.3を-soname、libassimp.soで変更しましたが、それでもlibassimp.so.3.1.1を作成しますlibassimp.so.3 と libassimp.so の 2 つのリンク。だからまだ立ち往生..