这是关于在Eclipse中向Android项目添加第三方库(JAR)的两部分问题.
问题的第一部分是,当我尝试将第三方JAR(库)添加到我的Android项目时,我首先得到的问题是
解析XML时出错:未绑定前缀
因为我正在尝试使用该JAR中的一个类(并且需要以某种方式定义的前缀).这是怎么回事?
其次,(在解决之后 - 下面给出了答案),我的应用程序无法在Android上运行,我通过调试器(LogCat)发现我尝试使用的类不存在.
引起:java.lang.ClassNotFoundException:com.github.droidfu.widgets.WebImageView ...
为什么,当我在Eclipse中没有编译或链接器错误时,它是否在模拟器上出现此问题?
这两个问题是修辞性的,我将在下面自己回答这些问题.这个论坛中的其他帖子可以解决问题,其他地方也有讨论,但我觉得我可以更明确地帮助下一个人来.
大多数设备可以运行我的应用程序,但我收到此错误报告:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.company.app/com.company.app.MainActivity}: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854)
at android.app.ActivityThread.access$2300(ActivityThread.java:136)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:5068)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.company.app.MainActivity in loader dalvik.system.PathClassLoader[/mnt/asec/com.company.app-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.Instrumentation.newActivity(Instrumentation.java:1034)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2747)
... 11 more
Run Code Online (Sandbox Code Playgroud)
我发现有一个相关的答案: ClassNotFoundException Android
但问题是,我的异常发生在我编写的任何代码行之前,那么如何确保加载类加载器?
我将创建一个具有多个依赖项(jar文件)的库项目.我很困惑因为我看到一些在项目根文件夹下有LIB或LIBS文件夹的android项目(连同bin,gen,res,src.etc ..)
即使我添加LIB或LIBS文件夹,然后将jar文件放在上面.仍需要设置项目属性,以便通过执行Project Properties => Java Build Path => Libraries选项卡=>添加JAR ...按钮来识别添加的jar文件.
我正在使用Eclipse和Android插件.当我添加LIBS时,它将在LIBS文件夹的顶部显示Android徽标.它被插件识别但仍需要在项目属性中设置它(与上面添加的JAR相同)
哪个是Android Project的正确目录结构?
我正在使用由android生成的ant构建文件.我们的Android应用程序需要一个JAR文件,它存在于我们项目的lib文件夹中,所以我需要调整ant在构建东西时使用的类路径.
当我跑:
ant -lib lib debug
Run Code Online (Sandbox Code Playgroud)
项目构建得很好,但这应该在构建文件本身内部.android生成的构建文件引用了android_rules.xml,因此很多这样的东西都是自动化的.我想我的问题是,在使用Android构建规则时,最佳做法是什么?
我尝试加载程序时收到"无法实例化活动"错误.让我感到困惑的一件事就是在我的旧电脑上使用完全相同的代码.我刚刚用新的eclipse/android SDK /等构建了一个新的.我有两台机器运行相同的代码,一个工作正常,另一个给出了这个错误.
有什么想法吗?
编辑:我在堆栈中注意到的一件事是
引起:java.lang.ClassNotFoundException:com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader [/data/app/com.voldaran.puzzle.graBLOX-2.apk]
它列出了graBLOX-2.apk.为什么使用'-2.apk'?
当我在工作机器上手动重现此错误时,它不会显示最后一个[]'d部分.
Android Manifest
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".PopActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:finishOnTaskLaunch="true"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
堆
04-21 17:33:42.284: E/AndroidRuntime(4045): FATAL EXCEPTION: main
04-21 17:33:42.284: E/AndroidRuntime(4045): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.voldaran.puzzle.graBLOX/com.voldaran.puzzle.graBLOX.PopActivity}: java.lang.ClassNotFoundException: com.voldaran.puzzle.graBLOX.PopActivity in loader dalvik.system.PathClassLoader[/data/app/com.voldaran.puzzle.graBLOX-2.apk]
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
04-21 17:33:42.284: E/AndroidRuntime(4045): at android.os.Handler.dispatchMessage(Handler.java:99) …Run Code Online (Sandbox Code Playgroud) 我在Eclipse中编写了一个Android应用程序,并在我的手机上使用run命令.
它在我的手机上运行成功.
但我使用[Android工具 - >导出签名的应用程序包...]来导出我的应用程序.
然后使用[adb install]在我的手机上安装apk并运行.
我收到了错误消息:
07-22 11:20:43.537: E/AndroidRuntime(20216): Caused by: java.lang.ClassNotFoundException: com.mytest.MyActivity in loader dalvik.system.PathClassLoader[/data/app/com.mytest-1.apk]
Run Code Online (Sandbox Code Playgroud)
在[Java Build Path - > Order and Export]中,我已被选中.
在AndroidManifest.xml中,application属性没有android:name.
我不知道如何解决这个问题.
我成功使用Eclipse在我的手机上运行,为什么在导出应用程序时运行错误?
请帮帮我,谢谢!!