VagosM Δημοσ. 21 Οκτωβρίου 2012 Δημοσ. 21 Οκτωβρίου 2012 Για σας δεν μπορώ να καταλάβω γιατί δεν μου τρέχει ο emulator στο eclipse μου βγάζει αυτό το μήνυμα [2012-10-21 17:17:31 - Emulator] PANIC: Could not open AVD config file: C:\Users\Ξ’Ξ±Ξ³Ξ³Ξλης\.android\avd\Phone.avd/config.ini Αν μπορεί κάποιος να με βοηθήσει θα το εκτιμούσα
nilosgr Δημοσ. 21 Οκτωβρίου 2012 Δημοσ. 21 Οκτωβρίου 2012 Δοκίμασε άλλες ρυθμίσεις για το emulator, (ίσως μικρότερη ανάλυση)
defacer Δημοσ. 21 Οκτωβρίου 2012 Δημοσ. 21 Οκτωβρίου 2012 Βάλε αλλού το avd, πιθανότατα υπάρχει πρόβλημα με το directory λόγω του ελληνικού ονόματος χρήστη που έχεις. 2
hawkpilot Δημοσ. 22 Οκτωβρίου 2012 Δημοσ. 22 Οκτωβρίου 2012 +1 Βάλε αλλού το avd, πιθανότατα υπάρχει πρόβλημα με το directory λόγω του ελληνικού ονόματος χρήστη που έχεις.
VagosM Δημοσ. 22 Οκτωβρίου 2012 Μέλος Δημοσ. 22 Οκτωβρίου 2012 Μάλλον δεν είσαι καλό παλικάρι. Γιατί ??? υπάρχει τρόπος να αλλάξω το μονοπάτι απο το avd manager , έβαλα αλλού το avd αλλά δεν ξέρω πως να αλλάξω το μονοπάτι.
Timonkaipumpa Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 Μάλλον δεν είσαι καλό παλικάρι. Γιατί ??? υπάρχει τρόπος να αλλάξω το μονοπάτι απο το avd manager , έβαλα αλλού το avd αλλά δεν ξέρω πως να αλλάξω το μονοπάτι. Γιατί; Γιατί το καλό το παλικάρι ξέρει και άλλο μονοπάτι. 1
hawkpilot Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 Δουλεύω σε linux αλλά φαντάζομαι ότι αν αλλάξεις τον κατάλογο που έχεις αποσυμπιέσει το android sdk (βάλτο στο C:\ αντί στον κατάλογο των αρχείων του χρήστη) θα λύσεις το πρόβλημα. Εννοείται ότι μετά την αλλαγή καταλόγου πρέπει να ρυθμίσεις το eclipse. Και πως θα αλλάξω το μονοπάτι?
moukoublen Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 (επεξεργασμένο) Δουλεύω σε linux αλλά φαντάζομαι ότι αν αλλάξεις τον κατάλογο που έχεις αποσυμπιέσει το android sdk (βάλτο στο C:\ αντί στον κατάλογο των αρχείων του χρήστη) θα λύσεις το πρόβλημα. Εννοείται ότι μετά την αλλαγή καταλόγου πρέπει να ρυθμίσεις το eclipse. Και σε linux τα avds τα βάζει στο home folder στο φάκελο ~/.android/avd/ Άρα δε παίζει ρόλο που έχεις εγκαταστήσει το SDK. Αν μπεις στο φάκελο avd μέσα στο φάκελο android που βρίσκεται στο C:\Users\onoma_xristi θα δεις οτι για κάθε virtual device υπάρχει ένα αρχείο .ini και ένας φάκελος με το ίδιο όνομα + .avd Π.χ. my_device.ini my_device.avd Μέσα στο .ini θα δεις κάτι σαν και αυτό (υποθέτω, δε ξέρω πως είναι στα windows) target=android-7 path=C:\Users\username\.android\avd\my_device.avd Βάλε λοιπόν τον φάκελο .avd σε ένα άλλο folder π.χ. C:\myavds\ και άλλαξε το path στο .ini και προσπάθησε να το εκκινήσεις πάλι. Το πρόβλημα είναι βρίσκεται μάλλον στο encoding του αρχείου ini. Οπότε αν έχει μόνο λατινικούς χαρακτήρες στο path θα είσαι ok. (Υποθέτω πως το αρχείο .ini είναι σε encoding windows-1253 και παίρνει τo path αυτούσιο και προσπαθεί να το χρησιμοποιήσει Όμως το path πρέπει να είναι σε UTF-8 (μιας και το ntfs χρησιμοποιεί UTF-8 για τα ονόματα)*. Έτσι δε "χτυπάνε" σωστά οι Ελληνικοί χαρακτήρες) * Τελικά είναι UTF-16 στο ntfs NTFS allows any sequence of 16-bit values for name encoding (file names, stream names, index names, etc.). This means UTF-16 codepoints are supported, but the file system does not check whether a sequence is valid UTF-16 (it allows any sequence of short values, not restricted to those in the Unicode standard). Site: Πηγή Επεξ/σία 23 Οκτωβρίου 2012 από moukoublen
defacer Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 Το πρόβλημα είναι βρίσκεται μάλλον στο encoding του αρχείου ini. Οπότε αν έχει μόνο λατινικούς χαρακτήρες στο path θα είσαι ok. (Υποθέτω πως το αρχείο .ini είναι σε encoding windows-1253 και παίρνει τo path αυτούσιο και προσπαθεί να το χρησιμοποιήσει Όμως το path πρέπει να είναι σε UTF-8 (μιας και το ntfs χρησιμοποιεί UTF-8 για τα ονόματα)*. Έτσι δε "χτυπάνε" σωστά οι Ελληνικοί χαρακτήρες) Το πρόβλημα δε μπορεί να είναι στο encoding του ini γιατί το ίδιο το ini είναι αυτό που δεν μπορεί να διαβαστεί. Ακόμα κι αν το .ini ήταν το θέμα, πάλι δε θα μπορεί να ήταν (μόνο) στο encoding το πρόβλημα -- ξέχασες και το άλλο, σημαντικότερο μισό: το utility από το SDK που διαβάζει το .ini. Δεν μπορούμε να υποθέσουμε πως είναι κατάλληλα προετοιμασμένο για να βρει μπροστά του .ini σε οποιοδήποτε encoding μας αρέσει και να το χειριστεί σωστά. Ειδικά στην περίπτωση που π.χ. δεν είναι προετοιμασμένο να χειριστεί σωστά οποιοδήποτε multibyte encoding τότε δεν υπάρχει λύση που να υλοποιείται μέσα από το ini. Επίσης έχεις λάθος όσον αφορά το συσχετισμό του τι κάνει εσωτερικά το NTFS με το encoding του ini, μιας και το πρώτο δε μας αφορά καθόλου γιατί αυτό που έχει σημασία είναι το τι είδους string θέλουν οι library functions (και τελικά οι Win32 API functions) που παίρνουν αυτά τα path. Οι οποίες Win32 API functions έρχονται σε 2 εκδόσεις (που παίρνουν singlebyte και UTF-16), αλλά ούτε αυτό μας αφορά γιατί εάν υποστηρίζονται πολλαπλά encodings στο ini τότε είναι υποχρέωση του emulator να κάνει το αντίστοιχο conversion εσωτερικά. Σκέψου να συνδεόταν το filesystem στο οποίο βρίσκεται το .ini με το encoding του: απλά κάνεις copy όλο το avd σε άλλο filesystem στον ίδιο υπολογιστή και ξαφνικά σταματάει να δουλεύει. Αντίστοιχα, αν είχαν σημασία οι library functions τότε πάλι κάνεις copy το avd σε άλλο λειτουργικό (με το ίδιο filesystem ή και διαφορετικό) και ξαφνικά σταματάει να δουλεύει. Θα μπορούσε και να συμβαίνει, αλλά δε μου ακούγεται πιθανό. Ελπίζω να μην παρεξηγείται ο λόγος που τα έγραψα αυτά. 1
moukoublen Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 (επεξεργασμένο) Ελπίζω να μην παρεξηγείται ο λόγος που τα έγραψα αυτά. Καμία παρεξήγηση. Δεν τίθεται θέμα. Τουλάχιστον σε ο,τι με αφορά δε χρειάζεται να έχεις αυτή την ανησυχία. Τώρα Επίσης έχεις λάθος όσον αφορά το συσχετισμό του τι κάνει εσωτερικά το NTFS με το encoding του ini, μιας και το πρώτο δε μας αφορά καθόλου γιατί αυτό που έχει σημασία είναι το τι είδους string θέλουν οι library functions (και τελικά οι Win32 API functions) που παίρνουν αυτά τα path. Οι οποίες Win32 API functions έρχονται σε 2 εκδόσεις (που παίρνουν singlebyte και UTF-16), αλλά ούτε αυτό μας αφορά γιατί εάν υποστηρίζονται πολλαπλά encodings στο ini τότε είναι υποχρέωση του emulator να κάνει το αντίστοιχο conversion εσωτερικά. Αφηρημένα το σκεφτόμουν. Μην τυχών καλούνται εν-τέλη από τον emulator launcher (απο τη jre -> στο win32 api κτλ.) οι συναρτήσεις που που θέλουν UTF-16 strings και αυτός δίνει το ο,τι παίρνει απο το ini χωρίς μετατροπή. (Υποθέτω είπα άλλωστε). Μην τυχών δηλαδή υπάρχει κάποια "αβλεψία" από τον launcher. SOS Το πρόβλημα δε μπορεί να είναι στο encoding του ini γιατί το ίδιο το ini είναι αυτό που δεν μπορεί να διαβαστεί. Tώρα διάβασα προσεκτικά την πρώτη φράση σου. Δεν έχεις προσέξει κάτι και έτσι έχεις καταλάβει λάθος. (Για αυτό δεν καταλάβαινα γιατί γράφεις τα όσα γράφεις στην τελευταία παράγραφο). Δεν μπορεί να διαβαστεί το config.ini που για να φτάσει σε αυτό διαβάζει το path μέσα από το DeviceName.ini Όπως είπα και πριν για κάθε device φτιάχνονται ένα αρχείο ini (π.χ. DeviceName.ini) (το βασικό αρχείο ini) και ένα folder (π.χ. DeviceName.avd)(μέσα στο οποίο folder υπάρχουν πολλά πράγματα ένα από αυτά είναι το config.ini) και τα δύο έχουν το όνομα του device (συνήθως). π.χ. Βασικό ini C:\Users\Κώστας\.android\avd\DeviceName.ini Αυτό το βασικό ini έχει 2 γραμμές (απ όσα έχω δεί μέχρι στιγμής). Είναι ας πούμε το shortcut το κάθε virtual device. Με περιεχόμενο: target=... android platform version path=... path to folder Από αυτό διαβάζει το path του folder που είναι το virtual device (όλα του τα καλούδια δηλαδή), το οποίο για παράδειγμα είναι C:\Users\Κώστας\.android\avd\DeviceName.avd ( <- που είναι folder) Και σε αυτό το path (που διαβάζει απο το πρώτο ini) θα ψάξει για το config.ini. C:\Users\Κώστας\.android\avd\DeviceName.avd\config.ini Τώρα αυτό το πρώτο ini (το βασικό ini του virtual device - στο συγκεκριμένο παράδειγμα DeviceName.ini) είναι by-default σε utf-8. Και όταν υπάρχουν Ελληνικά στο path που έχει μέσα του σαν γραμμή το πρώτο ini (DeviceName.ini), κάτι στραβώνει και δε μπορεί να το αξιοποιήσει σωστά το Path που διαβάζει απο αυτό. Και σαν πρώτο πρόβλημα δε βρίσκει το config.ini (στα windows και μόνο). Σκέψου να συνδεόταν το filesystem στο οποίο βρίσκεται το .ini με το encoding του Προφανώς... EDIT Λοιπόν έκανα μια δοκιμή. Έφτιαξα ένα χρήστη με Ελληνικά (σήκωσα ενα vm για αυτή τη δουλειά. Μην φτιάχνω χρήστες στο κανονικό μου λειτουργικό χωρίς λόγο ). Εγκατέστησα jre και android SDK και έφτιαξα και ένα πρώτο virtual device. Πήγα λοιπόν στο αρχείο ini του device και το αρχείο ήταν (εδώ είναι το περίεργο) σε UTF-8. Το άφησα ως έχει, πήγα να εκκινήσω το device και είχα το ίδιο μήνυμα. Ας το μετατρέψω λέω σε windows-1253. Κάνω λοιπόν από το notepad++ Convert to ANSI. Και το vd ξεκίνησε μια χαρά. Τώρα όντως το πρόβλημα είναι με το encoding του αρχείου. Δεν έχω την παραμικρή ιδέα του σε πιο επίπεδο λαμβάνει χώρα. Συμβαίνει μόνο με τα Ελληνικά και επειδή σώζει by default το αρχείο σε utf-8. Θα κάνω μια δοκιμή και στο linux με Ελληνικά στο path. Να δω τι γίνεται. Ας το αναφέρει κανείς στη google ως σφάλμα πάντως. Έκανα δοκιμή και στο linux. Δεν υπάρχει πρόβλημα να βρίσκεται το virtual device μέσα σε path με Ελληνικά γράμματα και με το βασικό ini να είναι UTF-8 Επεξ/σία 23 Οκτωβρίου 2012 από moukoublen 1
defacer Δημοσ. 23 Οκτωβρίου 2012 Δημοσ. 23 Οκτωβρίου 2012 Tώρα διάβασα προσεκτικά την πρώτη φράση σου. Δεν έχεις προσέξει κάτι και έτσι έχεις καταλάβει λάθος. (Για αυτό δεν καταλάβαινα γιατί γράφεις τα όσα γράφεις στην τελευταία παράγραφο). Όπως τα λες. Απ' όλη την υπόλοιπη έρευνά σου το συμπέρασμα που βγάζω (εκτός κι αν πάλι μου ξέφυγε κάτι...) είναι ότι το αρχείο σώζεται σε utf-8 τα δεδομένα από το αρχείο (το path δηλαδή για το δεύτερο ini) ταΐζονται στη σχετική library function χωρίς πολλά πολλά -- συγκεκριμένα σε Windows που εν τέλει έχει 2 διαφορετικές, καλείται η single-byte εκδοχή στην οποία κάθε ελληνικός χαρακτήρας UTF-8 "μεταφράζεται" σε 2 από τους κινέζικους που βλέπουμε σε linux όλα είναι utf-8 οπότε η αντίστοιχη open() λειτουργεί χωρίς πρόβλημα Επομένως το android SDK χρειάζεται κάπου ένα patch ούτως ώστε το σχετικό Windows binary να λειτουργεί σωστά όταν το path δεν είναι απλό ASCII. Αν κάποιος θέλει να ασχοληθεί νομίζω η εμπειρία θα είναι χρήσιμη.
VagosM Δημοσ. 23 Οκτωβρίου 2012 Μέλος Δημοσ. 23 Οκτωβρίου 2012 Το δοκίμασα με το notepad++ αυτό που είπες αλλά πάλη το ίδιο βγάζει, πφφφ, να δω πως θα κάνω την εφαρμογή για την σχολή.
moukoublen Δημοσ. 24 Οκτωβρίου 2012 Δημοσ. 24 Οκτωβρίου 2012 Το δοκίμασα με το notepad++ αυτό που είπες αλλά πάλη το ίδιο βγάζει, πφφφ, να δω πως θα κάνω την εφαρμογή για την σχολή. Έκανες το αρχείο ini του virtual device σου με το notepad++ Conver to ANSI και μετά Save και πάλι δεν έτρεξε; Το αρχείο σου πρέπει να λέγεται Phone.ini σε εσένα απ ότι βλέπω από το post σου πάνω. [...] τα δεδομένα από το αρχείο (το path δηλαδή για το δεύτερο ini) ταΐζονται στη σχετική library function χωρίς πολλά πολλά -- συγκεκριμένα σε Windows που εν τέλει έχει 2 διαφορετικές, καλείται η single-byte εκδοχή στην οποία κάθε ελληνικός χαρακτήρας UTF-8 "μεταφράζεται" σε 2 από τους κινέζικους που βλέπουμε [...] Ναι κάτι τέτοιο πρέπει να γίνεται. Άρχισα να το ψάχνω κατεβάζοντας τον κώδικα των εργαλείων του SDK γενικά. Μέχρι στιγμής απ όσο είδα το πρόβλημα είναι καθαρά στο emulator.exe (στην αρχή νόμιζα και κοίταζα γενικότερα στον launcher που είναι java πρόγραμμα αλλά αυτός δεν κάνει κάτι άλλο απο το να σηκώσει ένα proccess του emulator δίνοντας σαν όρισμα το συμβολικό όνομα (σκέτο) του device που επιλέγουμε από το ui). O emulator.exe (που είναι το project -ή μέρος του- qemu) είναι γραμμένος σε C. Τέλος πάντων θα δείξει. Αν καταφέρω και βρω κάτι, θα επανέλθω.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα