1

私は Android 開発を始めたばかりで、NBAndroid と SDK 17 で Netbeans を使用しています。

Java アプリと Android アプリで同じ Java ソース コードを使用したいと考えています。

http://developer.android.com/guide/developing/projects/projects-eclipse.htmlはEclipseでそれを行う方法を述べています(.JAR接続に関しては大ざっぱですが)が、私はそれを作ることができないようですNBで働く。

そのリンクに基づいて、私の理解では、Android アプリの正しいセットアップは、Java ライブラリ プロジェクトによって生成された .JAR ライブラリを参照する Android ライブラリ プロジェクトを参照する Android アプリケーション プロジェクトです。次に、同じ Java ライブラリ プロジェクトを参照する Java アプリケーション プロジェクトを作成することもできます。

だから、私はこのプロジェクト構造を設定しました... com.ex パッケージの基本的な HelloAndroid アクティビティである AndroidApp プロジェクトがあります。このプロジェクトには、Libraries フォルダーに AndroidLib ライブラリ プロジェクトが含まれています。また、表示される文字列を返すだけの関数 getText() を持つ単純な LibClass クラスを定義する LibClass.java ファイルもあります。AndroidApp の MainActivity はこれを呼び出して、出力する文字列を取得します。

LibClass.java を AndroidLib プロジェクトに直接配置すると、すべて問題ありません。

しかし、私がやりたいことは、ソース コードを Java と共有することです。

そのため、LibClass.java を JavaLib ライブラリに移動したいと考えています。JavaLib ライブラリの .JAR ファイルは AndroidLib プロジェクトに含まれています。ただし、それを試してみると、MainActivity クラスでエラーが発生し、LibClass が見つからないという不平を言っています。[プロジェクト] ウィンドウを見ると、AndroidLib プロジェクトの Libraries フォルダーにある JavaLib.jar の com.ex パッケージ内に LibClass.class があることがわかります。また、AndroidLib は AndroidApp プロジェクトの Libraries フォルダーに表示されますが、そこにはパッケージやその他のコンテンツは表示されません。

だから、私はこの作品を作るのにあと一歩のところにいるような気がします. おそらくAndroidManifestファイルのいずれかで何かをする必要がありますか? または、build.xml ファイルで何かを行いますか? それとも、私は完全に間違った方向に進んでいますか?

誰かがこれのハウツーを投稿できれば、本当に感謝しています。

4

3 に答える 3

1

私は似たようなことをしようとしています。Eclipse を使用してビルドされた Java EE プロジェクトがあり、Android プロジェクトからそのコードの一部を利用しようとしています。これにより、これまで耐えなければならなかった混乱を招く SVN の外部の束ではなく、共有コードベースが得られるはずです。

JAR ファイルを作成するよりも、ソースを操作してプラットフォーム用にビルドするのが最も効果的であることがわかりました (まあ、うまくいきましたが、現時点では問題があります)。だから、私がやっていることは次のとおりです。

c:\MySvnFolderStructure\MyJavaProjectFolder\src\     (and then all the source under that)
c:\MySvnFolderStructure\MyJavaProjectFolder\android\ (and all the Eclipse Android project gubbins)
c:\MySvnFolderStructure\MyJavaProjectFolder\jee\     (and all the Eclipse JEE project gubbins)

Android および Java EE プロジェクトには独自の src フォルダーがなく、どちらも親フォルダー内の src フォルダーにリンクしています。これが意味することは、Java 実装のそれぞれが、ソースから独自のバイト コード バージョンを構築し、独自の外部ライブラリ (たとえば、Apache HTTP ライブラリなど) を使用していることです。

もちろん、awt のようなものを共有することはできませんが (別の投稿で述べたように)、特に使用されているコア Java クラスの場合、クロスオーバーするものがたくさんあります。

また、Android テストには追加のインストルメンテーションが必要なため、現時点ではテスト コードを複製する必要があるため、JUnit テストを記述するのは少し難しいことがわかりましたが、私はそれに取り組んでいます。

また、 Eclipse での相対パスに関するこの投稿も参照してください。つまり、フォルダーを別のマシンの別の場所にチェックアウトして (バージョン管理チェックアウトで行うように)、引き続き共有することができます。

于 2012-05-02T09:32:41.913 に答える
0

問題は、Android の Java プラットフォームが JDK プラットフォームと異なることです。

特に、.JAR ライブラリは、Android プラットフォームに含まれていないものを参照できません。参照できないものの例は、java.awt.* です (ただし、java.awt.fonts は使用できます)。

JDK String と Android String にも違いがあります。Android は isEmpty() メソッドを実装していません。

于 2012-04-30T02:57:56.770 に答える
0

あなたの状況が正しいと理解できれば、Android と Java アプリケーションの両方にカスタム Java ライブラリを使用しようとしています。

このシナリオでは、最初に Java ライブラリを構築できます。Java ライブラリ jar を Android ライブラリとして追加する代わりに、jar を Android プロジェクトの libs フォルダー内に直接ドロップして、Android プロジェクトのビルド パスに追加することができます。

Java ライブラリ jar の構築に ANT スクリプトを使用している場合は、ソース ファイルを jar の一部として追加することも検討できます。これは、Android 部分を開発するときにコード支援を得るのに役立ちます。ただし、この部分は純粋にオプションです。

于 2012-04-14T11:05:54.740 に答える