5

これはばかげた質問のように聞こえるかもしれませんが、Androidプロジェクトの/ srcフォルダーを「ビルドパス」から削除するとどうなりますか(MainActivity / genのみが残ります)?プロジェクトをコンパイルして実行することはできますが、ビルドパスは何をしますか?

背景:Mavenで構築されたプロジェクトをEclipseにインポートすることに少し夢中になっています。/ src / main / packageのようなフォルダ構造を持っているので、インポートすると、宣言されているすべてのパッケージ名が一致しません(明らかによく知られている問題です)。私の最初の試みは、プロジェクトをインポートする前に、フォルダー構造内のパッケージを(/ srcに直接)上に移動することでしたが、他の多くの問題(他のパッケージのインポートに関して)が発生しました。

2番目の試みは(SOに関するいくつかの質問で推奨されました)ビルドパスと出来上がりから/ srcフォルダーを削除するだけで、パッケージ宣言は機能し、Eclipseで問題は発生しなくなりましたが、実行時に非常に奇妙な問題が発生しました。ビルドパスから/srcフォルダーを削除することに関連しているかどうかはわかりません。

編集:アプリの実行時のエラーは次のとおりです。MyApplicationはアクティビティではありませんが、アプリケーション(グローバルを格納するために使用)を拡張することを追加する必要があります。そのプロジェクトではGoogleマップが使用されていますが、最初のアクティビティでは使用されていません。

02-20 14:39:34.781: E/AndroidRuntime(1479): FATAL EXCEPTION: main
02-20 14:39:34.781: E/AndroidRuntime(1479): java.lang.RuntimeException: Unable to instantiate application com.example.myapp.MyApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com.example.myapp-1.apk
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.LoadedApk.makeApplication(LoadedApk.java:504)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4364)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.access$1300(ActivityThread.java:141)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1294)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.os.Looper.loop(Looper.java:137)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.ActivityThread.main(ActivityThread.java:5039)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.reflect.Method.invokeNative(Native Method)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.reflect.Method.invoke(Method.java:511)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at dalvik.system.NativeStart.main(Native Method)
02-20 14:39:34.781: E/AndroidRuntime(1479): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MyApplication" on path: /system/framework/com.google.android.maps.jar:/data/app/com,example.myapp-1.apk
02-20 14:39:34.781: E/AndroidRuntime(1479):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.Instrumentation.newApplication(Instrumentation.java:968)
02-20 14:39:34.781: E/AndroidRuntime(1479):     at android.app.LoadedApk.makeApplication(LoadedApk.java:499)
02-20 14:39:34.781: E/AndroidRuntime(1479):     ... 11 more
4

3 に答える 3

3

「Android プロジェクトの /src フォルダーを「ビルド パス」から削除するとどうなりますか (そこには MainActivity/gen だけが残ります)。

リソースにしかアクセスできない「空のapk」を作成します:)

Maven については、次の 2 つのオプションがあります。

  • Maven ソース構造を操作し、ソースの場所を Eclipse に伝えます。プロジェクトを「既存の Android コード」としてインポートし、Java ビルド パスに移動して、「src」フォルダーを削除し、フォルダー「src/main/java/」および「src」を追加します。 /テスト/Java".
  • Eclipse のデフォルトのパッケージ構造を操作し、Maven にソースの場所を伝えます。pom.xml で、次のディレクティブを追加して、ソースを探す場所を maven に指示します。<sourceDirectory>src</sourceDirectory>
于 2013-02-22T09:18:15.457 に答える
0

なぜEclipseに「m2e」をインストールしないのですか

次に、Eclipse の「エクスプローラー」の「インポート」メニューを使用して、maven プロジェクトを Eclipse にインポートします。

次に、2 つの方法でビルドできるはずです。

「mvn」ターゲットを使用して CLI で

日食で

于 2013-02-23T21:33:00.123 に答える
0

あなたの質問の一部に答えるために、src フォルダーがビルドされているかどうかに関係なく、gen ファイルと apk があり、src ファイルからビルドされていると思います。私が理解していることから、カスケードビルドのようなものです。私は間違っているかもしれません。私はmavenの経験があまりないので、残りは答えられませんでした。うまくいけば、他の誰かがあなたに言うことができます。幸運を!

于 2013-02-19T18:39:59.880 に答える