2

私はこれの初心者なので、我慢してください-

フレームワーク内の既存の実行可能ファイルの一部を変更して、アプリ内の SO として含めるようにしています (この変更により、コマンド ラインで実行可能ファイルを呼び出すのではなく、メソッド呼び出しから返された結果を取得できるようになります)。 、

残念ながら、それらを分離して構築することは非常に困難です。

たとえば、screencap 実行可能ファイルは次のとおりです。

http://androidxref.com/4.1.1/xref/frameworks/base/cmds/screencap/

(android) システム ヘッダーのみを使用するscreencap.cppファイルから確認できます。

#include <errno.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>

#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>

#include <binder/IMemory.h>
#include <gui/SurfaceComposerClient.h>

#include <SkImageEncoder.h>
#include <SkBitmap.h>
#include <SkData.h>
#include <SkStream.h>

これらのヘッダーは Android ソース ツリーの周りに散らばっていますが、カスタム ビルド用にそれらすべてを個別にリンクするには非常に時間がかかります。

私の質問は、Android ソース フレームワークを使用して、依存関係やリンクを把握することなく、単一の実行可能ファイルだけをビルドするにはどうすればよいかということです。

4

2 に答える 2

3

そのディレクトリの下に Android.mk があることがわかります。

したがって、その特定のモジュールをビルドする場合: screencap.

次の方法で Android ビルド環境をセットアップするだけです。

export SHOW_COMMANDS=1
. build/envsetup.sh
lunch 1
mmm screencap

次に、実行可能ファイルを取得します。ビルド プロセスでは、Android がこれらの g++ コマンドを含む実行可能ファイルをビルドする方法を確認できます。

更新

Android アプリのより大きな ndk-build プロジェクトの一部として、screencap.cpp などのファイルに含まれるコードを使用したい

そのディレクトリの下にある Android.mk ファイルを変更するか、そのディレクトリを別の場所にコピーできます。

これにいくつかのステートメントを追加して、静的ライブラリを構築します。

include $(BUILD_SHARED_LIBRARY)

次に、静的ライブラリをアプリケーションに追加します。それはうまくいくはずです。

于 2013-03-14T11:52:44.530 に答える