Android / Eclipse:从构建路径中删除/ src文件夹

时间:2013-02-13 12:42:14

标签: android eclipse buildpath

这可能听起来像是一个愚蠢的问题,但是当我从'构建路径'中移除Android项目的/ src文件夹时,究竟会发生什么(仅剩下MainActivity / gen)?我仍然可以编译和运行项目,那么构建路径是做什么的?

背景:我对将maven构建的项目导入Eclipse感到有点疯狂。它具有/ src / main / package类型的文件夹结构,因此当我导入它时,所有声明的包名称都不匹配(显然是一个众所周知的问题)。我的第一次尝试是在导入项目之前将文件夹结构中的包(直接移动到/ src),但这给了我很多其他问题(关于导入其他包)。

第二次尝试是(这是关于SO的几个问题),只是从构建路径中删除/ src文件夹,瞧,包声明工作,Eclipse中没有显示的问题,但是我遇到了一个非常奇怪的问题在运行时,我不知道它是否与我从构建路径中删除/ src文件夹有关。

编辑:这是运行应用程序时的错误。我应该补充一点,MyApplication不是一个Activity,但它扩展了Application(用于存储全局变量)。 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

3 个答案:

答案 0 :(得分:3)

“当我从'构建路径'中删除Android项目的/ src文件夹时会发生什么?(只剩下MainActivity / gen)?”

您创建了一个“空apk”,您只能访问资源:)

关于maven,您有两种选择:

  • 使用maven源结构并告诉Eclipse源是什么。将项目导入为“现有Android代码”,而不是转到Java Build Path,删除“src”文件夹并添加文件夹“src / main / java /”和“src / test / java”。
  • 使用eclipse默认包结构并告诉maven源的位置。在你的pom.xml中,在下面添加以下指令告诉maven它应该在哪里查找源:<sourceDirectory>src</sourceDirectory>

答案 1 :(得分:0)

要回答部分问题,我相信无论是否构建了src文件夹,gen文件和apk都是,并且它们是从src文件构建的。从我理解的那种级联构建。我错了。我对maven没有多少经验,所以我无法回答其余的问题。希望其他人可以告诉你。祝你好运!

答案 2 :(得分:0)

为什么不在eclipse中安装'm2e'

然后使用eclipse' explorer'中的'import'菜单将maven项目导入eclipse。

那么你应该能够以两种方式构建:

使用'mvn'target

在CLI上

在eclipse中