हालांकि मुक्त खड़े अनुप्रयोगों को विकसित करना संभव है जिन्हें खोल से सीधे लॉन्च किया जा सकता है क्योंकि अन्य वर्णन कर रहे हैं, ऐसा लगता है जैसे आपका कोड एंड्रॉइड एप्लिकेशन फ्रेमवर्क के भीतर चलता है। इसलिए, आपके पास निष्पादन योग्य नहीं है और इसके बजाय एक एपीके है जिसमें आपकी मूल साझा वस्तु सहित अन्य संसाधनों के साथ आपकी Dalvik क्लास फ़ाइलें शामिल हैं।
एक APK में एक आवेदन का शुभारंभ कई कदम
- system_server प्रक्रिया को कोई लक्ष्य अपने आवेदन का अनुरोध प्राप्त करता है शामिल है।
- ज़ीगोट प्रक्रिया को एक नई प्रक्रिया को फोर्क करने और अपनी कक्षा की एक विधि चलाने के लिए कहा जाता है।
- आपका आवेदन नई प्रक्रिया में चलता है।
आप एक निष्पादन गुजर gdbserver करने से सीधे एक APK शुरू नहीं कर सकते हैं, इसकी काफी आसान am
आदेश का उपयोग कर खोल के शुरुआती यह गति प्रदान करने के।
$ adb -d shell
# am
usage: am [subcommand] [options]
start an Activity: am start [-D] <INTENT>
-D: enable debugging
send a broadcast Intent: am broadcast <INTENT>
start an Instrumentation: am instrument [flags] <COMPONENT>
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
-e <NAME> <VALUE>: set argument <NAME> to <VALUE>
-p <FILE>: write profiling data to <FILE>
-w: wait for instrumentation to finish before returning
start profiling: am profile <PROCESS> start <FILE>
stop profiling: am profile <PROCESS> stop
<INTENT> specifications include these flags:
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>] [-f <FLAGS>] [<URI>]
# am start -n com.android.browser/.BrowserActivity
Starting: Intent { cmp=com.android.browser/.BrowserActivity }
#
एक बार आपका एप्लिकेशन चलने के बाद, gdbserver --attach <pid>
का उपयोग करें जैसा कि आपके पास है। यदि आप भाग्यशाली हैं तो आपका आवेदन आपके मूल कोड में कॉल करने से पहले कुछ उपयोगकर्ता इंटरैक्शन की प्रतीक्षा करता है ताकि आपको जीडीबी में अपने ब्रेकपॉइंट्स को अटैच करने और सेट करने का मौका दिया जा सके।
स्रोत
2010-05-07 19:55:13