問題タブ [vs-android]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - vs-androidを使用して複数のAndroidプラットフォーム(および場合によってはABI)を構築するにはどうすればよいですか?
ネイティブC++エンジンをAndroidNDKに移植しています。いくつかの環境とツールを試した後、最新のvs-android(0.9)が最も快適であることがわかりました。私はそれにいくつかの問題を抱えています(将来の質問でいくつか尋ねる必要があるかもしれません)が、今のところ-ここに1つあります:
ネイティブエンジンは、ネイティブ共有ライブラリにコンパイルされます。エンジンをandroid-8API互換(android 2.2)にする必要があります。
内部で使用するテスターアプリケーションがいくつかあります。そのうちの1つをAndroidにも移植しましたが、ネイティブアクティビティ(およびその上にネイティブアプリの接着剤)を使用しているため、android-9(2.3)が必要です。
エンジンとテスターアプリの両方で使用されるいくつかのモジュールプロジェクト(静的ライブラリ)があります。エンジンの場合はandroid-8に、テスターの場合はandroid-9にコンパイルするには、これらが必要です。これらすべてに加えて、arm5とarm7の両方をサポートしたいと考えています。
ndkビルドスクリプトを使用すると、これをかなり簡単に行うことができます。MS-Build(vs-androidが使用)では、指数関数的な数の構成が必要になるようです(デバッグ/プロファイル/リリースを忘れないでください)。
これらすべての構成を作成せずにこれを行う方法はありますか?たとえば、エンジンをビルドすると、android-8とarm5とarm7の両方のモジュールがコンパイルされ、テスターをビルドすると、android-9とarm5とarm7のモジュールがコンパイルされます。プロジェクトごと、およびデバッグ、プロファイル、リリース用に4つのほぼ同じ構成を作成しますか?
私はこれを見つけましたが、それをどのように使用するか、そしてここで親/子プロジェクトの手法を適用することが可能かどうかはわかりません。
(「パラメーターを変更するときはいつでも、すべての構成でパラメーターを変更する必要があるという事実にもかかわらず、怠惰になるのをやめて構成を作成する」ように私に言っても、コメントとして受け入れられますが、答えとしてではありません。同じことが'vs-androidを使用する代わりにndk-buildを使用してapkを手動でビルドする')にも当てはまります。
ありがとう!
(ところで、誰かがvs-androidタグを追加してくれませんか?)
編集: 私は部分的な解決策を思いつきました-APIレベルの問題に対してのみ。以下の私の答えを参照してください。
vs-android - サンアンジェレスプロジェクト
vs-android の san-angeles の例を実行しようとしていました ...
私のマシンにはwinxpsp3とvs 2010がインストールされています..
これらはインストールの手順です...私の質問は次のとおりです。この手順では....: NDKのセットアップ ここからNDKをダウンロードします:http: //developer.android.com/sdk/ndk/index.htmlルートディレクトリに注意してください。このディレクトリを指す ANDROID_NDK_ROOT という名前の環境変数を設定する必要があります。これは、コマンド ラインから実行できます。
setx ANDROID_NDK_ROOT c:\android-ndk-r6
- 上記の行を達成する方法 ( setx ANDROID_NDK_ROOT c:\android-ndk-r6 ) ???
android - vs-androidアプリケーションのコンパイル中にエラーMSB4062
私はvs-androidを使用して、彼らのサイトで利用可能なサンプルアプリケーションをコンパイルしています。VisualStudio11開発者プレビューを使用しています
エラーMSB4062:「GCCCompile」タスクをアセンブリC:\ ProgramFiles(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Platforms \ Android \vs-android.Build.CppTasks.Android.dllから読み込めませんでした。ファイルまたはアセンブリ'Microsoft.Build.CPPTasks.Common、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。宣言が正しいこと、アセンブリとそのすべての依存関係が利用可能であること、およびタスクにMicrosoft.Build.Framework.ITaskを実装するパブリッククラスが含まれていることを確認してください。
ファイルを少し変更しました
Microsoft.Cpp.Android.Targets
エラーに記載されているdllファイルを探します。
VCTargetsPathは正しいです、私はチェックしました。どこが間違っているのですか?
android - Visual Studio経由でEclipse Androidエミュレーターを実行する方法
こんにちは、MS Visual Studio 経由で Eclipse Android エミュレーターを実行または通信できますか? はいの場合は、私を助けるか、可能な解決策を設定する方法を述べてください。
android - vs-android ビルドで c++0x を有効にするにはどうすればよいですか
vs-android (http://code.google.com/p/vs-android) を使用して、ndk を使用して Android プラットフォーム用の C++ プロジェクトをコンパイルしています。
std::function、nullptr などの c++0x/c++11 標準の機能を使用するコードをコンパイルする場合を除いて、すべて正常に機能します...私はそれを修正できると想定しているか、少なくとも望んでいますコンパイラ オプション -std=c++0x を追加します。
「コマンドライン」の下の「追加オプション」にそれを追加しようとしましたが、いくつかのエラーは消えたように見えましたが、すべてではありませんでした。含めると問題が発生し、types.h は uint64_t が存在しないことや、他の多くの同様の問題について不平を言います。
これを修正する方法を知っている人はいますか?Windows プラットフォームを対象とする msvc10 で完全にコンパイルされるため、コードに問題はありません。ビジュアルスタジオ2010を使用しています。
ありがとう
linker - Microsoft Visual Studio で ".so" ライブラリをリンクする方法
Microsoft Visual Studio で .so 動的ライブラリ (またはその母体の .a 静的ライブラリ) をリンクする方法を誰かが知っているかどうか疑問に思っていました。次の手順は、.a または .so では機能しません。
MVSを使用してAndroid NDKで開発するためにvs-androidプラグインをいじっています.soとしてコンパイルされたカスタムライブラリをプロジェクトに追加しようとしています。
1 - 同じソリューションで、サンプル プロジェクトの 1 つ (san-angeles プロジェクト) と一緒に動的ライブラリ (.so) プロジェクトを作成しました。
2 - .so プロジェクトを設定しました。san-angeles の依存関係として「エンジン」と呼びましょう。engine.so ファイルは問題なく生成され、{SolutionFolder?}/Android/Debug フォルダーに表示されます。
3 - リンカーに san-angeles の追加インクルードと {SolutionFolder?}/Android/Debug フォルダー (C:/projects/.../Debug のようなフル パス) に engine.so を追加しました。追加のリンカー ディレクトリ。
しかし、san-angeles をコンパイルすると、次のエラーが表示されます。
「arm-linux-androideabi-g++.exe: engine.so: そのようなファイルまたはディレクトリはありません」
だから、プロジェクトに .so/.a を追加するには何か他のことをする必要があると思いますか? 名前を libengine.so などに変更しますか? デフォルトのインクルードの多くには lib プレフィックスが付いているため、それらの線に沿ったものかどうかはわかりません。
助けてくれてありがとう、ハイメ
android - Android .mk で LOCAL_STATIC_LIBRARIES を処理する方法
Android NDK サンプル (ネイティブ アクティビティ) の 1 つを移植して、MVS での開発を可能にする vs-android プラグインと連携させようとしています。
これを行うには、Android.mk コマンドを MVS が処理できるものに変換する必要がありますが、そのうちの 1 つに問題があります。
Android.mk : LOCAL_PATH := $(my-dir を呼び出す)
LOCAL_STATIC_LIBRARIES と $(call import-module,android/native_app_glue) の行は明らかに、native_activity クラスを魔法のように機能させるための中心となる native_app_glue を扱っています。
vs-android のコンパイル ライン オプション、MVS のリンカ オプション、または同様のものに関して、これをどのように変換するかについてのアイデアはありますか? または、少なくともこれらの 2 行は何をしますか?
乾杯、ハイメ
android - Visual C++ 2010 で vs-android を使用して Cocos2d-x を実行する
Visual C++ 2010 Express で vs-android をセットアップしました。Android デバイスで vs-android のサンプル プロジェクトを実行できるようになりました。
user1201239
この質問での回答に従いました WindowsにCocos-2dxをインストールして、vs-android/Visual C++ 2010をセットアップします。
これは私の質問です。このセットアップで cocos2d-x を統合するための次のステップは何ですか?
android - vs-android を使用してリリース Android APK をビルドする
大量の C++ ネイティブ コードと、Android アプリケーション用の小さなラッピング Java コードがあります。vs-android を使用してそれらを Android アプリに結合し、Visual Studio 2012 から直接ビルドすることができました。ただし、これは DEBUG モードでのみ実行できます。RELEASE では、アプリに署名するにはキーが必要だとアリが文句を言います。 RELEASE アプリをビルドしてデバイスに自動的に展開できるようにするには、何をする必要がありますか (DEBUG モードで行われるように)。
ところで、Google ストアでアプリケーションを公開するためではなく、C++ コードの実行速度を確認するためだけに RELEASE をビルドしたいと考えています。したがって、DEBUG モードで使用されるキーを RELEASE にも挿入する方法があれば、それは素晴らしいことです。
受け取りたくない解決策: 署名されていない APK を作成するビルドを実行し、署名、zipalligns などを追加するバッチ ファイルを呼び出すよりも... [ビルド] ボタンを押したときにすべてがスムーズに実行されるようにしたいビジュアルスタジオ。
別の悪い解決策は、Eclipse を使用することです。ビジュアルスタジオを使いたい。
助けてください
android - ビルド中に .so ファイルからシンボルを削除する方法
VS-android フレームワークを使用して、Microsoft Visual Studio 2012 + Android NDK から Android 共有オブジェクトを直接コンパイルしています。IDA を使用して自分の .so ファイルを逆アセンブルしたところ、すべてのコードが完全に表示されていることがわかり、ぞっとしました (関数の名前、データ バッファーの名前、クラスの名前など)。
コードを逆アセンブルして理解するのが難しくなるように、デバッグ シンボルと不要なシンボルをすべて削除したいと考えています。
コンパイル プロセスは次のとおりです。
- 10 個の C++ ファイルがあります。それぞれが .o ファイルにコンパイルされます
- 次に、main_service.c が main.o にコンパイルされ、他のすべての *.o ファイルに対してリンクされて、main_service.so ライブラリが生成されます。
次の解決策を試しましたが、うまくいきませんでした。
- 引数 -strip-all をコンパイラとリンカーに与えます。うまくいかないようです。
- リンク後、main_service.o で -strip-all を指定して objcopy.exe を呼び出します。これにより、main_serivce.so のサイズが少し小さくなりますが、シンボルは残ります。
- 私のC++コードでは、「attribute ((visibility()))」を使用していないため、おそらく問題は、リンカーがシンボルを削除できないことです。これは、何がプライベートで何が隠され、何がパブリックであるかを認識していないためです。JNIで使いたいmain_service.cの関数に「attribute ((visibility("default")))」をつけてみたり、コンパイラとリンカに-fvisibility=hiddenフラグをつけたりしました。しかし、警告が表示されました:「可視性」属性は無視されました [-Wattributes]、およびシンボルは削除されません
ここで何が欠けていますか?
追伸 - 私は「シンボルの削除」にまったく慣れていないので、質問が少しばかげている場合は申し訳ありません。
-