chris2a Posté(e) 18 août 2010 Share Posté(e) 18 août 2010 Bonjour tout le monde, J'ai développé une application qui pèse plus de 700 Mo. Avec une application du type Apk Installer j'arrive bien à installer mon application sur la carte SD du nexus One (option installLocation avec Froyo). Ce qui pèse si lourds ce sont des vidéos (placées dans le dossier /raw). Le problème est que mon application plante dès le lancement avec l'erreur suivante : 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 Je ne comprends pas d'où vient cette erreur, surtout que lorsque je réinstalle la même application mais avec des vidéos moins lourdes (250 Mo), l'application fonctionne correctement…. Est ce que quelqu'un a déjà eu ce genre de soucis ? Où est ce que quelqu'un sait si il y a une taille maximale pour les applications ? Merci pour votre aide ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
akex Posté(e) 18 août 2010 Share Posté(e) 18 août 2010 moi je vois ça : Caused by: java.lang.ClassNotFoundException: com.test.media.Welcome Je ne suis pas sur que cela vienne des vidéos ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris2a Posté(e) 18 août 2010 Auteur Share Posté(e) 18 août 2010 Alors d'où cette erreur peut provenir ? Parce que quand "j'allège" mon application je modifie juste les ressources, je ne change pas le code.... Peut être que le problème vient de plus haut, c'est peut être lors de la création de l'apk que les ressources lourdes sont dérangeantes ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vano Posté(e) 18 août 2010 Share Posté(e) 18 août 2010 700 Mo :rolleyes: 1er remarque (qui ne répond pas à ton problème) : si tu met ton application sur le market, vu sa taille personne ne la téléchargera ! 2eme remarque (qui ne répond toujours pas à ton problème) : certain téléphone n'ont pas assez de mémoire pour stocker 700Mo d'application. Il me semble que G1 à par exemple 75Mo et le Nexus One à 512Mo. Tu sera donc obligé de te limiter à Froyo avec installation sur SD. Généralement les applications sont installées sans les données volumineuses. Les données sont ensuite téléchargées si besoin et stockées sur la SD. Pour ton problème de ClassNotFoundException, ca va pas beaucoup t'aider, mais j'imagine qu'au delà d'une certaine taille d'apk, le ClassLoader a quelques problèmes ! Si tu ouvre ton APK avec winzip (ou autre), à tu le fichier classes.dex qui est présent ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris2a Posté(e) 18 août 2010 Auteur Share Posté(e) 18 août 2010 Oui le fichier classes.dex est bien présent... Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 18 août 2010 Share Posté(e) 18 août 2010 ceci dit c'est pas un peu con une appli de 700MO ???? tu devrais faire une appli sans vidéo, et les faire télécharger au premier lancement sur la sdcard, comme le font les jeux comme asphalt. du coup ton apk est petite. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris2a Posté(e) 18 août 2010 Auteur Share Posté(e) 18 août 2010 Le problème c'est que je suis obligée de faire comme ça... Est ce que vous pensez que techniquement c'est faisable ? Et si oui par quel moyen ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vano Posté(e) 18 août 2010 Share Posté(e) 18 août 2010 J'ai regardé rapidement dans les sources java de froyo (classes PathClassLoader et DexFile) https://android.git.kernel.org/?p=platform/libcore.git;a=blob;f=dalvik/src/main/java/dalvik/system/PathClassLoader.java;h=5d7333e13609a49605ff2dbde703a4619ae2f58a;hb=master et https://android.git.kernel.org/?p=platform/libcore.git;a=blob;f=dalvik/src/main/java/dalvik/system/DexFile.java;h=00de314549f28378bf0d8f22057759de72e5c51a;hb=master Je n'ai pas vu de limite de taille. Mais le chargement des classes dans DexFile est fait en natif. Il y a peux être la solution dans le code c++... Bref, je ne sais pas si c'est techniquement faisable, désolé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris2a Posté(e) 18 août 2010 Auteur Share Posté(e) 18 août 2010 Merci quand même ! Je vais continuer à chercher bien que plus mes recherches avancent, plus je me dis que ça ne va pas être faisable ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
bsegonnes Posté(e) 19 août 2010 Share Posté(e) 19 août 2010 Compresse mieux les vidéos. Est-ce possible ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.