demo (best viewed with chrome)
Εάν για κάποιο λόγο δεν γίνεται σωστό 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
Μετακινούμε όλο το 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
Για να στείλουμε σε κανονική συσκευή το πακέτο apk μπορούμε να χρησιμοποιήσουμε το airdroid
Εκτελούμε τον 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>
Εάν δεν μπορεί να εγκατασταθεί το πακέτο apk στην συσκευή μας ελέγχουμε το αρχείο AndroidManifest.xml να έχει minSdkVersion < = από αυτήν που υποστηρίζει το κινητό μας
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
Λόγω κάποιον 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' ],