2010-08-18 3 views
0

Я разработал «тяжелое» приложение (700 Мб!). С помощью приложения «apk installer» я могу установить его на SD-карту Nexus One (опция «установить местонахождение» Froyo). Мое приложение тяжелое из-за содержащихся в нем видео (находится в каталоге/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 

Я dont't понять причину этой ошибки, потому что, когда я попробовать то же самое с более легким приложением (250 Mb) его работает отлично. Кто-нибудь из вас когда-либо сталкивался с такой проблемой? Знаете ли вы, существует ли ограничение на размер приложений для работы?

Благодарим за помощь!

ответ

0

Ошибка:

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

Если удалить некоторые видео он работает? Также с SD-карты?

Если вы хотите проверить, существует ли класс, вы можете распаковать apk и проверить, действительно ли файл там.

+0

Да, если я удалю несколько видеороликов, это с SD-карты тоже ... – chris2a

0

Я думаю, вы достигли предела ... возможно, вам стоит подумать о других возможностях отправки видео.

0

Возможно, предел ... вы могли бы, например, транслировать видео в прямом эфире, используя лучший кодек, разрешение не такое высокое, как телефон/пэд, где вы с, и т.д. Но на самом деле я ничего не читал о предельном размере.

Таким образом, я прочитал ClassNotFoundException. Что произойдет, если вы удалите все дальнейшие методы и вызовы вашего основного метода onCreate() и просто проанализируйте свой макет? Если это работает, ошибка находится где-то в другом месте. Если он все еще что-то бросает, попробуйте уменьшить макет как можно меньше. И если это не будет работать тогда ... тогда есть предел, и вы его нашли;)

+0

Всегда есть одна и та же ошибка ... – chris2a

+0

Хорошо, я думаю, вы действительно на пределе. Так что мой типп; Удалите видеоролики и используйте прямые трансляции, используйте более мелкие видео (разные кодеки, различное разрешение или другой битрейт). Мне любопытно, насколько велика предел. Может быть, вы можете уменьшить его до 512 МБ и посмотреть, что происходит. Если он все еще не работает, 384 МБ, затем 256 МБ и так далее. –

0

Почему бы не сохранить приложение в легком весе, а затем загрузить свои видео после запуска приложения в первый раз. Как и предыдущая Doom для Android, до того, как Id убрал ее.

Смежные вопросы