ここ数日、Android NDK アプリの複数の構成を構築するためにシステムを稼働させるのに苦労してきました。ライブラリをうまくビルドできました。私が遭遇する問題は通常、ビルド構成を変更するときにこれらのライブラリを最新の状態に保つことに起因します。
大部分が完全に自動化されたシステムが必要です。ユーザーはビルド構成を変更するだけで、すべてが機能します!
ビルド構成と、ライブラリが適切に再ビルドされない問題にどのように対処しましたか?
私はこれに対してさまざまなアプローチを試みましたが、それらはすべて私の手に負えない問題に終わっているようです。
最初は、ビルド構成に関係なく同じ名前の共有オブジェクト ファイルを出力しました (例: game.so)。問題は、ビルド構成を変更してもライブラリの再構築がトリガーされないことです。ソースまたはビルド スクリプトを変更する必要があります。そのため、人々は Debug から Release に変更し、アプリを実行し、知らないうちに Debug バージョンに実際にリンクしています。
そこで、ビルド構成に基づいてライブラリを一意の共有オブジェクトに出力しようとしました。たとえば、デバッグ バージョンは gamed.so です。リリース バージョンは gamer.so です。問題は、Java コードにはビルド構成の概念がないため、ロードするライブラリのバージョン (Java から実行される) をどのように知ることができるかということです。
それを回避するために、可能なすべてのバージョンのライブラリをロードしようとして、try/catch ループを実行します。存在するものを見つけたら、ロードしてください! 新しい構成を電話機に導入するときに、古いバージョンのライブラリが削除されないという問題があります。したがって、Debug と Release の両方をビルドして実行すると、これらのライブラリの両方が電話に表示されます! どちらを最初に要求しても、検索してロードします。
とにかく、これはすでに解決されているに違いないように思えますが、オンラインで見つけた情報はほとんどありません。私のニーズを満たすものは何もありません。
私の質問は、ビルド構成と、ライブラリが適切に再構築されない問題にどのように対処しましたか?