VS2019 C++ Androidコンソールプログラム開発

序文

以前 VS での Android .so の開発を紹介しましたが、VS には非常にシンプルな組み込みのプロジェクト テンプレートも用意されています。唯一の欠点は、開発した .so をデバッグのために APK で呼び出す必要があることです。 PC アプリケーションは大きく異なり、プログラムの実行結果をコンソール上で直接観察することはできません。

Android でコンソール アプリケーションを直接開発できますか? 答えは「はい」です。私は、このプロジェクト テンプレートを補足することを期待して、VS チームにもこれについてコメントしました。結局のところ、Android には C++ アプリケーションと Java アプリケーションの両方があり、C++ の .so と .ライブラリも用意されていますが、コンソール アプリケーションがありません。しかし、人々の話は軽く、現状では進歩がないため、Android C++ コンソール アプリケーションの開発のための独自の方法を提供します。

別の文を追加: コンソール アプリケーションはデバッグ目的にのみ適しており、最終製品開発には適していません。デバッグ後、.so または .a を生成し、Android apk に統合する必要があります。

準備

タイトルは VS2019 ですが、これは現在の VS のバージョンを示しているだけで、実際に必要なのは VS の CMake プロジェクト テンプレートで、VS2017 以降でサポートされるはずです。

さらに、Android コンソール アプリケーションを開発しているため、次の 2 つのものが必要です。

1.NDK( https://developer.android.com/ndk/downloads )

2.ADB( https://developer.android.com/studio/releases/platform-tools )

この2点はご自身でダウンロードしてください。

ここでの私のバージョンは ndkVersion "21.0.6352462" で、adb は Android Studio で使用されます。Android Studio での adb のプログラムの場所は次のとおりです: C:\Users\<your username>\AppData\Local\Android\Sdk \platform-tools


ここでは、これら 2 つのツールのダウンロードが完了していることを前提としています。インストールする必要はなく、直接解凍するだけです。私の ndk と adb は次のとおりです。

ただし、VS がこれら 2 つのものの場所を認識するには、それらをシステム環境変数に追加する必要があります。

1. システム環境変数を開きます。

2. 上記の 2 つのパスを Path に追加します。

パスに注意してください。対応するパスに次の 3 つの .exe があれば問題ありません。

1.make.exe

2.clang.exe、clang++.exe、clang-cl.exe

3.adb.exe

 

最後に、ちなみに、VS2019 または 2017 では、前回の記事で紹介した cmake 拡張機能をインストールする必要がありますが、VS の Cmake プロセスについてよくわからない場合は、最初に前回の記事を読むことをお勧めします。


準備作業はここまでです。ちなみに、要約すると、Android C++ プログラミングはネイティブ言語に属し、NDK (ネイティブの N) が必要です。これは Android ネイティブ開発キットであり、主に gcc と 2 つのコンパイラが含まれています。 Clang 最新の Android は gcc をサポートしていないため、コンパイラとして Clang を使用することをお勧めします。コンパイラがコンパイルされた後、プログラム ジェネレーターとして Unix makefile を使用する必要があります。Windows では、ndk に付属する make.exe を使用します。 make.adb の代わりに、Android デバイスと通信するためのデバッグ ツールとして使用され、ファイルを転送したり、シェルを使用して対応するコンソール アプリケーションを起動してコンソール出力を PC に出力したりできます。

始める

1.cmakeプロジェクトを作成する

2. まず、コード部分は Windows または Linux コンソールと同じであり、違いはありません。

3. CMakeList も変更する必要はありません。

4. 構成の変更に重点が置かれています。

a. 「構成の管理」をクリックします。

b. 現在、VS はこのインターフェイスで Linux および Windows 構成のみを提供しており、Android 構成は自分で追加する必要があります。

c. Android-v8a-Debug の構成名を変更します。

d. ここでは事前定義された VS にない外部ツール セットを使用しているため、ツール セットをクリアします。

下図の「gcc-arm」を「」に変更

Ctrl+S 保存して、json ファイルを閉じます

e. 管理構成を再度開き、ツールセットが空かどうかを確認します。

f. ツールチェーンの cmake ファイルの場所を入力します。

以下に記入してください:

g. Cmake キャッシュを更新する

成功すると、構成名 Android-v8a-Debug にも切り替わります。

5. すべてを生成します。

成功したコンソール情報:

6. Android デバイスに送信して実行します。

a. 対応するコンソール プログラムを見つけます (Cmake のファイル構造については、前の記事でも詳しく説明しています)。

b. 現在のフォルダーの場所で、adb Push コマンドを実行します。

完全なコマンドは adb Push AndroidTest /data/local/tmp です。

AndroidTest は現在の PC のファイルの場所であり、/data/local/tmp は Android ターミナルのターゲットの場所です。他のフォルダーには権限の問題がある可能性があることに注意してください。また、/data/local/tmp はデバッグに適した選択肢の 1 つです。 Android コンソール プログラム。

c. adb シェルを使用して、Android 側にプッシュしたアプリケーションを実行します。

完全なコマンドは adb shell "cd /data/local/tmp && chmod 777 AndroidTest && ./AndroidTest" です。

adb シェルの後ろの "" 内の文字列は Android 側のシェル コマンドです。&& は 3 つのコマンドが順番に実行されることを示します。最初にパスを /data/local/tmp に切り替え、次にアプリケーションの権限を変更します。過去にプッシュされました。許可が拒否されたと表示される場合、それはこの chmod 777 に関連しているはずです。最後に、./AndroiTest はコンソール アプリケーションを実行します。


この時点で、VS が Android コントロール アプリケーションを生成するプロセス全体が表示されます。以前の CMake プロジェクト記事の基礎を持っている場合は、構成ファイルを変更するだけで非常に簡単だと思うはずです。

また、デバッグの問題については、launch.vs.json の下に RemoteLinux の設定があるだけで、Android 関連の設定はなかったので、これ以上は進めませんでした。 Android C++ コードのデバイスのデバッグについては、次の記事に残しておきます。

あとがき

最後に、3 つの cmake パラメーターを追加します (そのうちのいくつかは必須である場合があります)。

-DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=23 -DANDROID_TOOLCHAIN=clang

このうち最初の -DANDROID_ABI=arm64-v8a が非常に重要で、64 ビットの arm64-v8a や 32 ビットの armeabi-v7a を生成するプログラムはこのマクロに依存します。

2 番目 -DANDROID_NATIVE_API_LEVEL=23 便利な場所がまだ見つかりません

3 番目の -DANDROID_TOOLCHAIN=clang は必要ありません。gcc と Clang のどちらかを選択できますが、現時点では Clang を使用する必要があります。

32 ビット アプリケーションの場合は、上記の -DANDROID_ABI=arm64-v8a を -DANDROID_ABI=armeabi-v7a に変更します。変更後は、忘れずに CmakeCache を保存して更新してください。

ここで選択できる CmakeBuildType もあります。

これら 2 つの組み合わせにより、Android-v7a-Release およびその他の構成を追加できるようになります。


ひどい、この記事を書こうと思ったのが11時50分、書き終わったのが1時過ぎだったので、早めに休みましょう、明日はドライバーの練習に練習場に行かなければなりません。


VS プロジェクトを閉じるときに、ふともう 1 つ思い出したことがあります。

上記ではMake.exeは使用していませんが、上記ジェネレーターはNinjaです。 

実際にはこれで問題なく、多くの人がこれをジェネレーターとして使用していますが、最初に make を紹介したので、最後に makefile をジェネレーターとして使用する方法を示します。

1. 構成ファイルで、「詳細設定」を展開します。

2. Unix Makefile を選択します。

3. 変更後、CMake Cache を保存して更新し、すべてのビルドを再度実行します。

このディレクトリが makefile ファイルになります。

make プロセスを直接実行して、現在のパスに生成することもできます。

ここは Linux と同じで、cpp ファイルを変更した後に直接 make を実行するだけで、変更された cpp ファイルが自動的にコンパイルされ、プログラムに再リンクされます。 

コンソールの make コマンドを使用するか、VS ですべてのビルドを実行するかについては、個人の好みによって異なります。

おすすめ

転載: blog.csdn.net/luoyu510183/article/details/107969469