web-dev-qa-db-ja.com

Android NDK with Visual Studio

Android NDK(ネイティブ開発キット)を使用して)のネイティブライブラリをいくつか構築したいのですが、Visual Studio2010を使用して構築したいと思います。かなりグーグルで検索しました。しかし、それに関する情報は見つかりませんでした。誰かがこれを経験し、これを実現するために必要な手順を知っていますか?CYGWinをインストールし、(NDKの指示に従って)Makeを取得していることを確認しましたが、実際にはそうではありませんプロジェクトのセットアップ、VisualStudioのコンパイラーなどに関する次のステップを確認してください。

誰かが記事、チュートリアル、またはサンプルプロジェクトへのリンクを知っているなら、それは素晴らしいでしょう。グーグルにはまだ多くがないからです。

ありがとう!

19
bryan costanich

別の解決策があります 、NDKをVisualStudio内に完全に統合します。 makefileはありません。これは、適切なWin32プロジェクトのように動作します。

17
Gavin Pugh

VisualStudioを使用してデバッグするように環境を構成する方法についての優れた ブログ投稿 Android NDKコード)を次に示します。

6
Bellinghammer

Visual Studioは公式にサポートされていません。

いくつかの問題(ただしこれに限定されません):

  • MSVSは適切なARMバイナリを作成できません
  • Android makefile(.mk)はMSVSではサポートされていません

ただし、サードパーティのソリューションがあります。

Visual Studioではありませんが、 DS-5 もチェックアウトすることをお勧めします。

2
NuSkooler

答えは、必要な統合の種類によって異なります。

VisualStudioからネイティブAndroidコードをビルドするだけで、新しいMakefileプロジェクトを作成し、それを実行させることができますndk-build.cmd 「ビルド」を押します。エラーメッセージもマッピングする場合は、ndk-build.cmdの出力を解析し、次の形式に変換する必要があります。 VisualStudioは理解できます。

VisualStudioからネイティブAndroidコードをデバッグする場合は、ndk-gdbに代わって制御するサードパーティツールが必要になりますVisual Studioは、いくつかのバグの回避策を提供します(たとえば、ライブラリがロードされたときにブレークポイントを再バインドします)。

VisualGDB for Android ツールを試してみてください-まさにそれを実行します-Visual Studioに代わってndk-buildをラップし、NDKデバッガーを制御するプロジェクトを作成します。さらに詳しい情報が必要な場合は、 ステップバイステップのチュートリアルが利用可能 があります。

1

直接的なクリーンな解決策は見つかりませんでした。これが私の回避策です。

VSでネイティブコードを静的ライブラリとして開発し、テストプロジェクトを使用してコンソールアプリケーションとして試してみました。問題がなければ、cygwinから小さなbashスクリプトを使用して、必要なすべてのファイルをjniフォルダーにコピーし、標準のAndroid ndk makeコマンドを起動します(必要に応じてファイルをassetsフォルダーにコピーします)。 )、適切なフォルダに実行可能ファイルを生成します。

Pthreadを使用するために、プロジェクトをpthreads-win32にリンクしました。

VSでコンパイルしないファイルはjniコードだけです。

これがお役に立てば幸いです。

0
emax79

上記に加えて、VSを使用してAndroidアプリを開発するためのサードパーティの代替手段もいくつかあります。オープンソースのdot42は http://www.dot42。 com およびRemobjects、 http://www.remobjects.com 、これにより、c#、Pascal、およびSwiftでプログラミングできます。Remobjectsの試用版を試してみましたが、現在、 dot42で遊んでください。

Remobjectsトライアルを使用したことで、私が受講したAndroidコースの教科書の最初の5つの章のプロジェクトをc#で再現できました。これまでdot42で同じ成功を収めたことはありませんが、本当にチャンスを与えるために時間を見つける必要があります。

0
glctig