2012-11-01 3 views
2

Je suis en train d'écrire un scanner de codes à barres pour iOS et Android en utilisant Flex Mobile et ZXing. J'ai optimisé ZXing autant que je peux, mais il est encore trop lent à utiliser pour la numérisation continue sur certains appareils plus anciens. J'ai extrait une partie du travail lourd dans un C SWIG en utilisant FlasCC et j'ai obtenu des accélérations assez décentes pendant la numérisation. Lors d'un test sur un périphérique réel, je reçois des erreurs lors du démarrage de mon application. La console de débogage dit "Mutex ne peut pas être initialisé" et se bloque. Suppression des appels à mon SWC, l'application démarre très bien. Tout d'abord, est-ce que l'utilisation de ce type de SWC est possible sur un appareil mobile? Si oui, qu'est-ce que je fais de mal? En outre, la taille de la bibliothèque générée est assez grande (400 Ko +). Y at-il un moyen de réduire la taille en excluant tout le surplus de peluches?FlasCC SWC dans le projet Mobile AIR

Répondre

0

Alors que vous pouvez pouvez utiliser FlasCC sur mobile, je ne le recommanderais pas: votre code peut fonctionner à des vitesses natives et vous avez accès aux API OS. Avez-vous regardé Air Native Extensions?

+0

Que dois-je faire pour que FlasCC fonctionne sur mobile? Pourquoi ne le recommanderiez-vous pas? J'ai regardé dans les extensions natives, mais la bibliothèque ZXing pour iOS ne scanne que les codes QR pour le moment. Pour le projet sur lequel je travaille, j'ai vraiment besoin de pouvoir scanner les codes à barres 1D et 2D. – Colin

+0

Je n'ai rien fait de spécial pour que FlasCC fonctionne sur mobile. Très probablement, vous rencontrez un autre type de problème. Êtes-vous capable d'exécuter votre fichier SWF dans le navigateur? – paleozogt

+0

J'ai simplement créé une bibliothèque avec un appel de méthode en C, l'ai empaqueté dans un SWC en utilisant FlasCC et l'ai inclus dans mon projet mobile. Je n'ai pas exécuté le fichier SWF dans le navigateur car il s'agit d'un projet mobile, mais cela a bien fonctionné dans le simulateur mobile AIR avec une accélération de 5 fois supérieure pour cette méthode particulière. Je me demande si cela a quelque chose à voir avec la façon dont je l'ai emballé puisque l'erreur a quelque chose à voir avec le Preloader et les Mutex. – Colin

0

AIR pour mobile ne prend pas encore en charge Flash Workers, sur lequel est basé le multi-threading FlasCC. Essayez-vous d'exécuter ZXing dans un thread d'arrière-plan ou compilez-vous votre SWC FlasCC avec "-pthread"?

[modifier] En fait, il pourrait y avoir une erreur dans notre code de démarrage pour AIR mobile, même lorsque le code FlasCC est pas enfilée ... tester une solution maintenant

+0

Je n'utilisais pas de travailleurs ou de toute sorte de multithreading. Comme je l'ai dit plus haut, j'ai créé une bibliothèque de projets hello world très simple et je l'ai lancée depuis une application mobile flexible. Merci d'avoir examiné la question. – Colin

1

C'est une vieille question, mais au cas où quelqu'un d'autre rencontre ce problème:

J'ai rencontré le même problème et le correctif consistait simplement à recompiler mon FlasCC SWC en utilisant la dernière version de FlasCC (maintenant connue sous le nom CrossBridge). J'ai utilisé la version 1.0.1 de CrossBridge et cela a fait l'affaire.

Questions connexes