Android 运行大型应用程序时出现问题

Android 运行大型应用程序时出现问题,android,resources,Android,Resources,我开发了一个“重型”应用程序(700MB!)。使用“apk安装程序”应用程序,我可以将其安装在NexusOne SD卡上(Froyo“installLocation”选项)。我的应用程序很重,因为它包含视频(位于/raw目录中)。我遇到的问题是,它在启动时崩溃,并出现以下错误: 08-18 11:22:16.179: ERROR/AndroidRuntime(1250): FATAL > > EXCEPTION: main 08-18 11:22:16.179: > >

我开发了一个“重型”应用程序(700MB!)。使用“apk安装程序”应用程序,我可以将其安装在NexusOne 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
我不理解这个错误的原因,因为当我用一个更轻的应用程序(250MB)尝试同样的事情时,它运行得非常好。你们当中有人有过这样的问题吗?您知道应用程序的大小是否有限制吗

谢谢你的帮助

错误是:

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

如果你删除了一些视频,它会起作用吗?还有SD卡吗


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

我想你达到了极限。。。也许你应该考虑其他可能的方式来发送视频。

也许有一个限制……例如,你可以现场直播视频,使用更好的编解码器,分辨率没有你使用的手机/键盘那么高,等等。但事实上,我没有读到任何关于尺寸限制的文章


否则,我读ClassNotFoundException。如果删除主onCreate()方法的所有其他方法和调用,只让它解析布局,会发生什么?如果这样做有效,那么错误就在其他地方。如果它仍然抛出一些东西,请尽量减少布局。如果它不起作用,那么……那么就有一个极限,你发现了;)

为什么不保持应用程序的轻量级,然后在应用程序首次启动后下载视频呢。就像在我把它拿走之前Android的宿命一样。

好吧,我想,你真的达到了极限。所以我的tipp;删除视频并使用实时流,使用较小的视频(不同的编解码器、不同的分辨率或不同的比特率)。我很好奇,限制有多大。也许你可以把它缩小到512MB,看看会发生什么。如果它仍然不工作,384MB,然后256MB,依此类推。