このサイトでは、分析、カスタマイズされたコンテンツ、および広告に Cookie を使用します。このサイトを引き続き閲覧すると、Cookie の使用に同意するものと見なされます。
Hi, Developers,
straightapps.com ロゴ
作成 September 11, 2018、更新 March 5, 2021
トップページ > Android 開発トップ > VC++ 2019/2015 で新規プロジェクトを作成する
line
Android 開発
line

ここでは、Visual C++ 2019 で、新規プロジェクトを作成する手順を記録しています。

Windows 10 Pro(64 ビット)Visual Studio Community 2019 の C++ で、 Android ネイティブアプリを作成する手順を記録しています。

今まで、このページでは Windows 10 Pro(32 ビット)と Visual C++ 2015 Pro で、 Android ネイティブアプリを作成する手順を記録していましたが、 新しい Android SDK 等でうまくいかなかったため、開発環境を更新しています。

※ Visual C++ 2015 の場合の画面イメージも、ページ後半に残してあります。

このページでは、すでに Visual C++ 2019 が正常にインストールされていることを前提としています。 また、Android SDK や NDK、Java JDK も、別途すでに用意されているものとします。

開発環境の構築についてはここでは触れていませんので、 まだの方は、 「VS2019 の Android 開発環境を整える」 を先に参照してください。

▼ セクション一覧

Visual C++ 2019 で新しいプロジェクトを作成する
ビルドの前の設定の変更
【アーカイブ】Visual C++ 2015 で新しいプロジェクトを作成する
【アーカイブ】試しにビルドしてみます
【アーカイブ】プロパティを確認します

なお、本サイトのご利用に際しては、必ずプライバシーポリシー(免責事項等)をご参照ください。
また、本サイトが初めての方は、まずこのページの注意事項をご覧ください。

Visual C++ 2019 で新しいプロジェクトを作成する

投稿 February 20, 2021

通常の C++ 新規プロジェクトを作成するのと同じように新しいプロジェクトを作成します。

Visual Studio 2019 を起動すると表示される「スタートページ」で、 画面右側にある「新しいプロジェクトの作成」を選択します。

開始する

開いた「新しいプロジェクトの作成」画面の右側で、 「Native-Activity アプリケーション(Android)」を見つけ、選択します。

Native-Activity アプリケーション(Android)

Visual Studio の機能を豊富に入れている場合は、見つけにくいかも知れません。 上部で言語を「 C++ ( ここでは C++ を使用した Android ネイティブアプリを対象としています。 ) 」とし、プラットフォームを「Android」にすれば、見つけやすくなります。

次へ」ボタンで、進みます。

新しいプロジェクトを構成します」画面では、 プロジェクトの名前と、コードの保尊場所を指定できます。 ソリューション名はプロジェクト名に連動していますので、必要な場合のみ、変更します。

作成」ボタンで、プロジェクトが作成されます。

ソリューション エクスプローラー

ソリューションとプロジェクトが作成され、コードエディタが開かれます。 ソリューション エクスプローラーでみると、上のようになっています。 なお、上の図で選択されている、".Packaging" は単体では作成できないのでうっかり削除してはいけない、ということです。 「SimpleClock」がプロジェクト名として入力した文字列です。

SimpleClock.NativeActivity (android-21) となっていますので、 API レベル 21、すなわち Android 5.0 のプロジェクトで作成されています。 これについては、次のセクションで、Google 要件に合うように設定します。

画面上部に表示されているターゲット CPU で、 「ARM」や「ARM64」が選ばれていない場合は、どちらかを選んでおきます。 「x64」や「x86」が選ばれている状態だと、実機を接続してもデバッグできない(ケースが多い)と思います。

実機を「開発者モード」で接続し、「ARM」を選択すると、その右に端末名が表示されます。 型番なので、わかりやすくはありません。 デバッグにはエミュレーターも利用できますが、 動作が遅かったり設定が面倒だったりしましたので、実機でデバッグしようと思います。 ここに端末名が表示されているとき、そのボタンで実機にコードを送信し、デバッグできます。

ターゲット

端末を接続しても認識されない場合は、端末が開発者モードになっていないのかも知れません。

アイコン 開発者モードを設定・解除する
Android 端末を開発者モードにすれば、詳細な設定を行うことができます。 その設定と解除手順を書いています。



これで最低限の準備は完了ですが、ビルドする前に、先に API 設定などを行います。

▲ページ先頭へ

ビルドの前の設定の変更

投稿 February 20, 2021

すでに使用したい SDK や NDK はインストールされ、 JDK パスの設定などが済んでいるものとします。 まだなら、「VS2019 の Android 開発環境を整える」 を参照し、インストールを済ませてください。

上記リンク先にある「ネイティブアプリをビルドしてみる」 のセクションと重複しますが、自分のためのまとめも含め、 必要な操作について、ここに書いておきます。

まずは、ターゲット API を設定しておきます。

あとで AndroidManifest.xml の記述も書き換える必要がありますが、 ここでは .NativeActivity と .Packaging のプロパティで指定します。

.NativeActivity のプロパティを表示させます。 このようなページが開くと思いますが、異なる場合は左側で、「構成プロパティ」内の「全般」を選びます。

.NativeActivity のプロパティ

インストールされている SDK や NDK に合わせます。 例えば、Android 10 対応の android-29 を選択します。 .Packaging のほうでも、同じ API レベルを選択します。 これは「ターゲットとする」API レベルを指定しているのみですので、 android-29 だと Android 9 では動作しない、というわけではなさそうです。

続けて、 「アプリケーション名を指定する」に書いているように、 アプリ名などの設定を、AndroidManifest.xml で済ませておくべきです。

アイコン アプリケーション名を指定する
Visual Studio 2015 や古いバージョンの Android のための、AndroidManifest.xml 変更について、書いています。



手短にまとめます。

AndroidManifest.xml の <manifest> タグで、 パッケージ名 package に、自分のドメイン名等を追加します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
		package="com.$(ApplicationName)"
		android:versionCode="1"
		android:versionName="1.0"<

このままでは、com.SimpleClock のようなパスにインストールされてしまいますので、 他のアプリと一致してしまう可能性があります。 このサイトの例では、ドメイン名が StraightApps.com ですので、次のようにすれば、一致する可能性が排除されます。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
		package="com.straightapps.$(ApplicationName)"
		android:versionCode="1"
		android:versionName="1.0"<

「とりあえず」書き換えないで開発・デバッグしてしまうと、 プログラムが作成したデータファイルが、 プログラム(apk)のインストールパスが変わって見えなくなったりしますので、 先に書き換えておくほうが安心です。

次に、strings.xml で アプリケーション名を指定します。

プロジェクト .Packaging の res の values 内にある strings.xml を開き、 端末に表示されるアプリ名を指定します。

<string name="app_name">SimpleClock.Packaging</string>

赤い文字の部分を書き換えます。 日本語も使えます。 ここに指定した文字が、端末のホーム画面に、アイコンと共に表示されます。

最後は、ターゲット API です。 詳しくは、「VS2019 の Android 開発環境を整える」にありますが、 ここでは省略し、手順のみ記録しています。

ターゲット API も、AndroidManifest.xml で指定します。

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="21"/>

対象 API レベルの要件」 を参照すると、 2021 年 2 月時点では、 targetSdkVersion ( 「対象 API レベル」の指定場所のようです。 ) には Android 10(API レベル 29)を指定する必要があるようです。 動作可能な古いバージョン指定 minSdkVersion には言及がないようですが、 「uses-sdk」 タグの説明からは、 使用している SDK 関数がすべて導入されている API レベルを指定するとされていますので、 先に決めることはできないか、先に決めたら使用できない関数を使わない、ということになります。 「API レベルとは」 に API レベルに対応する数値一覧がありますので、どれかを指定します。 とりあえず、低めに、Android 6.0、API 23 を指定してみます。

<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29"/>

これで最低限の設定が完了したと思いますので、コーディング可能です。

開発者モードで USB デバッグを有効にしている ZenFone Max (M2)、Android 9 端末を接続し、実行させてみると、 久しぶりに黒からグリーンへのグラデーションになる画面が表示されました。 そして画面をタップすると、タップした場所により色が変わりました。 android-29 は Android 10 がターゲットなので、Android 9.0 でも互換性あり、ということですね。

次に行うお勧めの手順は、動作を確認するためのログ出力です。 Visual Studio からブレークポイントを設定してデバッグ可能ですが、 それでもどこをどう進んでいるか、確認したいときもありますので。 下記リンクより、進めます。

アイコン C/C++ によるログ出力
ここで作成した新しい NativeActivity プロジェクトで、ログファイルを出力するためのコードについて、検討しています。



▲ページ先頭へ

Visual C++ 2015 で新しいプロジェクトを作成する

投稿 September 11, 2018、追記 December 23, 2019

ここからは、VS 2015 のときのアーカイブとなっています。

通常の C++ 新規プロジェクトを作成するのと同じように新しいプロジェクトを作成します。

「スタートページ」で「新しいプロジェクト...」を選択すると、「新しいプロジェクト」ダイアログが開きます。 そこで、下図のように、「インストール済み」→「テンプレート」→「Visual C++」→「クロス プラットフォーム」の下に ある「Android」を選択し、Native-Activity アプリケーション(Android)を選択します。

「クロス プラットフォーム」がない、あるいは「Android」がないなら、 インストール時にクロスプラットフォーム開発用の チェックが外れていた ( デフォルトではチェックされていなかったと記憶しています。 ) と考えられます。 ここでは開発環境の構築については触れませんので、ネットを検索して、インストールしてください。

画面下部も同じように、名前(ソリューション名)やパスを入力して、OK ボタンをクリックするだけです。 ここでは、"PrimeFactorizator" という名前を付けています。 名前は自由に付けてください。以降、"PrimeFactorizator" と書かれた部分は、ここで付けた名前に読み替えてください。

プロジェクト作成画面

ソリューションとプロジェクトが作成され、ソリューション エクスプローラーでみると、次のようになっています。 なお、下の図で選択されている、".Packaging" は単体では作成できないのでうっかり削除してはいけない、ということです。

ソリューション エクスプローラー

画面上部に表示されているターゲット、初期状態で x86 が選ばれていますが、実機を接続してもデバッグできませんでした。 実機を「開発者モード」で接続し、「ARM」を選択すると、端末名が表示されました。 「使用可能なデバイスが存在しません」に代わって端末名が表示されているとき、そのボタンでデバッグできます。

2019 年 12 月 23 日追記
これを書いた当時は 32 ビット機である Nexus 2013 を接続していましたが、今 ZenFone Max M2 を接続すると、 ARM を選択しても、ARM64 を選択しても、端末名が表示されます。

ターゲット CPU

ターゲット CPU

Nexus の設定から開発者向けオプションを選択、USB デバッグを有効にすると上記表示となりました。

設定に「開発者モード」メニューが表示されていない場合、 設定メニュー最下部の「タブレット情報/端末情報」→「ビルド番号」と書かれた領域を7回連続でタップします。 成功すると、「これでデベロッパーになりました!」というメッセージが表示されます。 手順の詳細は、「端末を開発者モードにする・解除する」をご覧ください。

端末名が表示されているところ(右向き緑三角マークのところ)をクリックすると、ビルド&実行されます。 端末でアプリを終了させると、VS2015 のデバッグも終了となります。

なお、実機がなくても「ツール」→「Android」→「Android Emulator Manager」から、 Android Virtual Device (AVD) Manager を起動でき、 エミュレーターで動作確認ができますが、私の環境では動作が重くてイライラするので、実機を接続しています。

▲ページ先頭へ

試しにビルドしてみます

投稿 September 11, 2018、追記 December 23, 2019

試しにそのままビルドしてみると(端末はログインした状態にしておくとよさそうです)、 「出力」ウィンドウに経過が表示され、成功すると端末に転送されます。

2019 年 12 月 23 日追記
ZenFone Max M2 を接続すると、必ず「配置エラー」になりました。 理由は不明ですが、実際には端末にインストールされているので、ドロワーからアプリを実行することはできます。 でもデバッガーが使えないので、困っています。

動作としては、画面全体が黒から緑に、段階的に変わり、それをずっと繰り返す、というものです。 画面をタッチすると、タッチした位置によって色が変わる、ということになっています。

端末側でホームボタン(〇)を押すと、アプリはまだ終了していませんから、VS2015 側もデバッグのままです。

端末の動作中アプリ一覧(□)を押し、アンドロイド・アイコンが付いた、PrimeFactorizator.Packaging を終了すると、 VS2015 側もデバッグを終了します。

パッケージ名(アプリケーション名)が変わるとインストール先が変わるので、ここではドロワーなどから、 新しく追加された PrimeFactorizator.Packaging を長押しして、アンインストールしておきます。

▲ページ先頭へ

プロパティを確認します

投稿 September 11, 2018、追記 December 23, 2019

ソリューション エクスプローラーで、1つ目のプロジェクト、PrimeFactorizator.NativeActivity を右クリックして、 プロパティを表示します。

ターゲット API レベル」で、Android のバージョンのミニマム値を指定できます。 近い将来、Android 6 以上サポートにしないと GooglePlay が受け付けない、というような話もあった気がしますが、 とりあえずはこのままにしています。図のままなら、Android 4(API レベル 19)以降で動作します。

STL の使用」は、好みのようでいいと思いますが、本サイトでは 「STLport ランタイム スタティック ライブラリ(stlport_static)」を選んでいます。

2019 年 12 月 23 日追記
新しい環境では、LLVM 以外、STLport や GNU は選べないのではないかと思います。

.NativeActivity のプロパティ

次に、PrimeFactorizator.Packaging のプロパティを見ます。特に変更が必要な部分はなさそうです。

プログラムを確認したり変更したりする前に、インストール先を正しく指定して、開発時のデータが端末に残らないようにしたいです。 インストール先のフォルダ名は、AndroidManifest.xml で指定するようになっていますので、まずはそこを変更します。

▲ページ先頭へ

line
関連トピックス
line

アプリケーション名を指定する

AndroidManifest でアプリ名を指定する方法について、書いています。

VS2019 の Android 開発環境を整える

個人なら無料で利用できる Visual Studio Community 2019 の、 Android 開発に必要な機能をインストールし、設定を完了させる手順について、書いています。

端末を開発者モードにする・解除する

Android 8.1 端末で、開発者モードにする手順、解除する手順について、書いています。 開発者モードには、「Wi-fi が弱いときモバイルデータ通信を優先する」のような便利な設定もあります。

line
その他のおすすめ
line

Android 開発に関する記事をまとめた Android 開発トップ もご覧ください。

JavaScriptが無効です
▲ページ先頭へ


© 2017-2021 StraightApps.com 無断転載を禁じます。No reproduction without permission.