2

最近始めたインターンシップ (コンピューター サイエンスを勉強しています) では、やや大きな既存のプロジェクトを Android に移植する必要があります。これは、もちろん NDK を使用して最終的に Android で実行する Visual C/C++ プロジェクトです。問題は、ソフトウェアの移植について何も知らないことです。これは私の研究ではカバーされていないためです...

これから取り組む予定のプロジェクトについて少し理解を深めるのに数日かかりました。

複雑さについて一言: Visual Studio ソリューションであり、28 のプロジェクトで構成されており、そのほとんどが大規模なものです...

そして今、それを Android に移植するためのコンセプトを開発する必要があり、これが私がこれを書いている理由です。どこから始めればよいかまったくわかりません。また、移植のコンセプトにたどり着く方法もわかりません。私はこれを扱っているものや本をオンラインで検索しようとしましたが、何も見つかりませんでした.

もちろん、基本的に、Visual/Windows 固有のものをすべて削除し、適切な Android/Linux 関数に置き換えるか、Android に対応するものがない場合は何か新しいものを実装する必要があることはわかっています。

しかし、このプロジェクトはやや巨大なので、正しいコンパイラでコンパイルしてエラーメッセージを処理しようとするだけでは、どこにも行かないでしょう...

だから今、私の実際の質問:誰かがこれまたは似たようなことについて経験していて、それを始める方法についていくつかのヒントを与えることができますか? 先ほど言ったように、まずコンセプトが必要です。このサイズのソフトウェア プロジェクトの移植を開始して処理する方法について、より一般的なことも大歓迎です。私はそれについて何も知らないからです...

4

3 に答える 3

0

プロジェクトのソース コードのサイズ (ソース コードが何千行) について教えてくれませんでした。

コードサイズが十分に大きい場合 (例: 少なくとも 100 KLOC )、GCC コンパイラーをカスタマイズすること (最近の 4.6 または 4.7 バージョンを想定)、おそらくMELT (GCC を拡張する高レベルのドメイン固有言語) を使用するか、苦労してコーディングすることを検討できます。 CではGCC プラグイン。この GCC のカスタマイズ アプローチは、大規模なコード ベースの場合にのみ価値があります (GCC の内部を習得するには数日かかります)。

一方、適切に設計されたアプリケーションの多くは、適切に定義されたインターフェイスとライブラリ内にオペレーティング システムの機能をパッケージ化している場合があります。アプリケーションを Qt やその他のクロスプラットフォーム ライブラリに移植することを検討するかもしれません。

あなたのプロジェクトをさらに支援するために、あなたのプロジェクトに関する詳細情報が必要です。

于 2012-08-21T13:22:59.130 に答える
0

あなたは全体の問題に間違った方法でアプローチしていると思います。C# とビジュアル C++ およびその他のビジュアル言語を、それらの尊敬される IDE から Android プラットフォームにコンパイルできるツールがいくつかあります。たとえば、 android の monoがあります。Mono は、Visual Studio と .net テクノロジを使用して Android プロジェクトを作成するのに役立つ Visual Studio 用のプラグインです。すべてのコードを手動で変更することはほとんど不可能であり、時間がかかりすぎるため、このようなツールに集中して調査する必要があると思います。これは、Android 用のmonoを使い始めるのに役立つページです。幸運を。

于 2012-08-20T08:14:26.390 に答える
0

この回答を参照してくださいAndroid NDK with Visual Studio . 個人的に私はこれを使用しませんが、あなたの問題に対する素晴らしい解決策のようです. あなたと同じように、過去には、大きな Visual C++ ライブラリ プロジェクトを Android に移植する必要がありましたが、次のように進めました。

  1. メイン ライブラリ インターフェースのコンパイルを試みます (相対的な Android.mk を作成することにより)。
  2. リンク エラーを使用して、コンパイルする他のプロジェクトを推測し、それらの mk を作成する必要があります。
  3. リンク エラーがなくなるまで繰り返します。
于 2012-08-20T10:36:38.523 に答える