问题是运行繁重的应用

时间:2010-08-18 13:11:37

标签: android resources

我开发了一个“重型”应用程序(700 Mb!)。使用“apk安装程序”应用程序,我可以将其安装在Nexus One SD卡上(Froyo“installLocation”选项)。我的应用程序很重,因为它包含的视频(位于/ raw目录中)。我遇到的问题是它在启动时崩溃,出现此错误:

08-18 11:22:16.179: ERROR/AndroidRuntime(1250): FATAL
> > EXCEPTION: main 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):
> > java.lang.RuntimeException: Unable to
> > instantiate activity
> > ComponentInfo{com.test.media/com.test.media.Welcome}:
> > java.lang.ClassNotFoundException:
> > com.test.media.Welcome in loader
> > dalvik.system.PathClassLoader[/mnt/asec/com.test.media-1/pkg.apk]
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread.access$2300(ActivityThread.java:125)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.os.Handler.dispatchMessage(Handler.java:99)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.os.Looper.loop(Looper.java:123)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread.main(ActivityThread.java:4627)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > java.lang.reflect.Method.invokeNative(Native
> > Method) 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > java.lang.reflect.Method.invoke(Method.java:521)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > dalvik.system.NativeStart.main(Native
> > Method) 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250): Caused by:
> > java.lang.ClassNotFoundException:
> > com.test.media.Welcome in loader
> > dalvik.system.PathClassLoader[/mnt/asec/com.test.media-1/pkg.apk]
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > java.lang.ClassLoader.loadClass(ClassLoader.java:573)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > java.lang.ClassLoader.loadClass(ClassLoader.java:532)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.Instrumentation.newActivity(Instrumentation.java:1021)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     at
> > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
> > 08-18 11:22:16.179:
> > ERROR/AndroidRuntime(1250):     ... 11
> > more

我不明白这个错误的原因,因为当我用更轻的应用程序(250 Mb)尝试相同的东西时,它运行得很好。你们有没有人遇到过这种问题?你知道应用程序是否有大小限制吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

错误是:

java.lang.ClassNotFoundException:com.test.media.Welcome

如果您删除了一些视频,它确实有用吗?还来自SD卡吗?

如果你想检查这个类是否存在,你可以解压缩apk并检查文件是否真的存在。

答案 1 :(得分:0)

我猜你达到了极限......也许你应该考虑发布视频的其他可能性。

答案 2 :(得分:0)

也许是一个限制......例如,您可以使用更好的编解码器直播视频,分辨率不如您所在的手机/平板电脑那么高,等等。但实际上我没有读过有关尺寸限制的任何内容。

否则,我读了ClassNotFoundException。如果您删除主onCreate()方法的所有其他方法和调用,并且只是解析您的布局会发生什么?如果可行,则错误发生在其他地方。如果它仍然会抛出某些东西,请尝试尽可能减小布局。如果它不工作那么......然后有一个限制,你找到了它;)

答案 3 :(得分:0)

为什么不让应用程序轻量级,然后在第一次启动应用程序时下载您的视频。就像旧的Doom for Android在Id被带走之前所做的那样。