LinuxFanClub Wiki

Υπηρεσίες, Προγραμματισμός, Εκπαίδευση ..

User Tools

Site Tools


el:programming:mobile

Mobile

demo (best viewed with chrome)

Android

Build

Εάν για κάποιο λόγο δεν γίνεται σωστό build από το περιβάλλον του eclipse μπορούμε να το κάνουμε και από την γραμμή εντολών

Αρχικά εγκαθιστούμε το ant

apt-get install ant

Στην συνέχεια δημιουργουμε το build.xml αρχείο στον φάκελο του project μας.

Εκτελούμε από τον φάκελο του android sdk

/opt/android-sdk-linux/tools/android update project --target 3 --path ~/workspace/myproject/

Τροποποιούμε το αρχείο build.xml αν χρειαστεί

Τέλος εκτελούμε ενώ είμαστε στον φάκελο του project

ant debug 

Δημιουργήθηκε το αρχείο bin/myproject-debug.apk

Με ένα εργαλείο όπως το airdroid μπορούμε να το στείλουμε στην συσκευή μας (κινητό ή tablet). θα πρέπει βέβαια να έχουμε ήδη ενεργοποιήσει στην συσκευή μας την δυνατότητα εγκατάστασης 3rd Party Application και το USB debugging

sencha

Μετακινούμε όλο το sdk σε έναν φάκελο που γίνεται published από τον apache

Ελέγχουμε από έναν browser ότι όλα είναι ok

Από την γραμμή εντολών μεταφερόμαστε στον φάκελο του sdk, π.χ.

cd ~/public_html/touch-2.3.1/

Εκτελούμε

 sencha generate app myapp ../myapp

Αυτό θα δημιουργήσει έναν φάκελο ~/public_html/myapp

Ελέγχουμε από έναν browser ότι λειτουργεί το sencha και προχωράμε σε αλλαγές

Μετονομάζουμε τον φάκελο .sencha σε sencha γιατί διαφορετικά δεν θα γίνει include στο πακέτο μας Τροποποιούμε το αρχείο index.html ώστε να ζητάει το microloader script μέσα από τον φάκελο sencha

  <script id="microloader" type="text/javascript" src="sencha/app/microloader/development.js"></script>
 

Αντιγράφουμε τον φάκελο myapp στον φάκελο assets/www στον android/phonegap project μας στο eclipse

Ορίζουμε να φορτωθεί η σελίδα myapp/index.html από την κλάση webview

Run

Για να στείλουμε σε κανονική συσκευή το πακέτο apk μπορούμε να χρησιμοποιήσουμε το airdroid

Virtual Devices

Εκτελούμε τον avd manager από τον φάκελο tools του sdk ως εξής

./android avd

Δημιουργούμε διάφορες συσκευές με διαφορετικές εκδόσεις του android, αρχιτεκτονικής intel και εκκινούμε μια από αυτές

Στέλνουμε το apk σε αυτήν με την εντολή adb από τον φάκελο platform-tools του sdk

adb install -r <path_to_apk> 

ή αν έχουμε παραπάνω από μια συσκευές να εκτελούνται ορίζοντας και το id της π.χ.

adb -s emulator-5554 install -r <path_to_apk> 

TroubleShooting

Αδυναμία upload / εγκατάστασης πακέτου

Εάν δεν μπορεί να εγκατασταθεί το πακέτο apk στην συσκευή μας ελέγχουμε το αρχείο AndroidManifest.xml να έχει minSdkVersion < = από αυτήν που υποστηρίζει το κινητό μας

  <uses-sdk
      android:minSdkVersion="10"
      android:targetSdkVersion="19" />

Android 4.0

Λόγω κάποιον bugs και πιο αυστηρών περιορισμών ασφαλείας θα πρέπει να γίνουν τα παρακάτω για να φορτωθεί το sencha framework σε android > 4.0

Εισαγωγή της παρακάτω εντολής στην αρχή του αρχείου app.js

Ext.Loader.setConfig({ disableCaching: false });

Τροποποίηση του αρχείου sencha/app/microloader/development.js ώστε να μην φορτώνει το περιεχόμενα του bootstrap.json με XMLHttpRequest. Αντί για αυτό τα παρέχουμε hard coded

/*    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'bootstrap.json', false);
    xhr.send(null);
        change also xhr.responseText -> xhr_responseText
*/
        var xhr = new String();
        xhr_responseText="{\"id\":\"789a692b-1ff8-4d49-9ffd-0aadf47b4f26\",\"js\":{\"path\":\"touch/sencha-touch.js\"},{\"path\":\"bootstrap.js\"},{\"path\":\"app.js\",\"update\":\"delta\"},\"css\":{\"path\":\"resources/css/app.css\",\"update\":\"delta\"}}"
 
        var options = eval("(" + xhr_responseText + ")"),
        scripts = options.js || [],
        styleSheets = options.css || [],
        i, ln, path, platform, theme, exclude;

Ορισμός των κλάσεων που χρησιμοποιούνται στο πεδίο requires ώστε να μην φορτώνονται δυναμικά και καθυστερούν υπερβολικά.

Π.χ.

    requires: [
        'Ext.MessageBox',
	'Ext.Toolbar',
	'Ext.Button'
    ],

Άλλα

Πηγές

Android coding

el/programming/mobile.txt · Last modified: Y/m/d H:i (external edit)