مباحث اولیه برای آشنایی با برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ابتدا عبارت hello world که به صورت پیش فرض در آن نمایش داده شده را باید حذف کنیم. برای این منظور، بر روی آن کلیک کرده و سپس کلید delete از کیبورد را فشار می دهیم. پس از حذف این متن، باید یک button در صفحه نمایش داده شده، با موس، بکشیم (با گرفتن گزینه button و سپس بردن آن به داخل صفحه نمایش داده شده). به شکل زیر دقت کنید :


android-90.jpg

و پس از ساخت button ، اینگونه خواهد بود :


android-91.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
هر عنصری که در activity های برنامه اندروید می سازیم، دارای یک id منحصر بفرد خواهد بود که با آن id ، می توانیم به آن عنصر، درون کدهایی که می نویسیم، ارجاع بدهیم. البته id را می توانیم تغییر بدهیم ولی برنامه eclipse در زمان ساخته شدن هر عنصر، یک id به صورت پیش فرض به آن اختصاص می دهد. اکنون می خواهیم بدانیم که id مربوط به button ساخته شده، چه می باشد. برای این منظور، در properties مربوط به buttun ، گزینه نمایش داده شده در شکل زیر را پیدا می کنیم :

android-92.png

بنابراین id مربوط به button را متوجه شدیم. id آن برابر button1 تعریف شده است.

حالا باید کدهای مربوط به این button را در فایل MainActivity.java بنویسیم. (در واقع، در فایل xml مربوط به activity اول، دکمه را قرار می دهیم و در فایل java مربوط به آن نیز باید برای دکمه ساخته شده، یک سری کد بنویسیم).

کدهای فایل MainActivity.java ، هنگام ساخته شدن به صورت زیر می باشد (حالا باید تغییرشان بدهیم) :
کد:
[FONT=monospace][COLOR=#000000][B]package[/B][/COLOR] [COLOR=#006699]com.kelidestan.two_activity[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000000][B]class[/B][/COLOR] MainActivity [COLOR=#000000][B]extends[/B][/COLOR] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [COLOR=#000000][B]protected[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#000000][B]super[/B][/COLOR].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000000][B]return[/B][/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
کدها را به صورت زیر تکمیل می کنیم :
کد:
[FONT=monospace][COLOR=#000000][B]package[/B][/COLOR] [COLOR=#006699]com.kelidestan.two_activity[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000000][B]class[/B][/COLOR] MainActivity [COLOR=#000000][B]extends[/B][/COLOR] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [COLOR=#000000][B]protected[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#000000][B]super[/B][/COLOR].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000000][B]return[/B][/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
فعلا تنها خط زیر را اضافه کرده ایم :
کد:
[FONT=monospace][COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
که در آن یک button با نام b تعریف کرده ایم که توسط findViewById شناسایی می شود. دقت کنید که باید id مربوط به button ساخته شده در فایل xml را در اینجا بنویسیم. بنابراین عبارت R.id.button1 درون پرانتز تابع findViewById نوشته شده است. همچنین توجه داشته باشید که id آن button برابر button1 بود، اما ما باید عبارت R.id. را باید حتما قبل از آن بنویسیم (نوعی آدرسدهی).

شما هنگام کدنویسی، نیازی ندارید که مثلا تمام عبارت findViewById را تایپ کنید، بلکه تنها می توانید بنویسید find و سپس کلیدهای Ctrl و space از کیبورد را همزمان بزنید تا یک سری گزینه به شما نمایش داده شود و شما می توانید بر روی گزینه findViewById کلیک کنید تا عبارت به صورت findViewById تکمیل و نوشته شود. در ادامه دیگر اینگونه موارد را تذکر نمی دهیم و مستقیما کدها را نمایش خواهیم داد.

همچنین باید package مربوط به ساخت Button را import کنیم. یعنی باید کدهای زیر را در فایل java بنویسیم (در غیر این صورت، با خطا مواجه می شویم و برنامه eclipse با یک علامت قرمز رنگ در کنار کدها، به ما هشدار می دهد که خطایی روی داده است) :
کد:
[FONT=monospace][COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR][/FONT]
بنابراین کدها به صورت زیر خواهند بود :
کد:
[FONT=monospace][COLOR=#000000][B]package[/B][/COLOR] [COLOR=#006699]com.kelidestan.two_activity[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000000][B]class[/B][/COLOR] MainActivity [COLOR=#000000][B]extends[/B][/COLOR] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [COLOR=#000000][B]protected[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#000000][B]super[/B][/COLOR].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000000][B]return[/B][/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
همان طور که گفتم، دیگر روند کدنویسی را شرح نمی دهم و تنها کدها را به صورت کلی نمایش داده و بخش های مهمشان را شرح می دهم. کدها به صورت کامل شده، به صورت زیر می باشند :
کد:
[FONT=monospace][COLOR=#000000][B]package[/B][/COLOR] [COLOR=#006699]com.kelidestan.two_activity[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.content.Intent[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.Menu[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.View[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.widget.Button[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000000][B]class[/B][/COLOR] MainActivity [COLOR=#000000][B]extends[/B][/COLOR] Activity [COLOR=#009900]{[/COLOR]

        @Override
        [COLOR=#000000][B]protected[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#000000][B]super[/B][/COLOR].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                [COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000000][B]new[/B][/COLOR] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            
                    @Override
                    [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        startActivity[COLOR=#009900]([/COLOR][COLOR=#000000][B]new[/B][/COLOR] Intent[COLOR=#009900]([/COLOR]MainActivity.[COLOR=#000000][B]this[/B][/COLOR], Activity2.[COLOR=#000000][B]class[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                    [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

        @Override
        [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]boolean[/B][/COLOR] onCreateOptionsMenu[COLOR=#009900]([/COLOR][COLOR=#003399]Menu[/COLOR] menu[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// Inflate the menu; this adds items to the action bar if it is present.[/I][/COLOR]
                getMenuInflater[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]inflate[/COLOR][COLOR=#009900]([/COLOR]R.[COLOR=#006633]menu[/COLOR].[COLOR=#006633]main[/COLOR], menu[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                [COLOR=#000000][B]return[/B][/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]

[COLOR=#009900]}[/COLOR][/FONT]
مشاهده می کنید که یک سری package های دیگر را نیز وارد کرده ایم. مثلا یکی برای OnClickListener ، وارد کرده ایم (import کرده ایم). کد مربوط به آن به این صورت است :
کد:
[FONT=monospace][COLOR=#000000][B]import[/B][/COLOR] [COLOR=#006699]android.view.View.OnClickListener[/COLOR][COLOR=#339933];[/COLOR][/FONT]
و همچنین، کدهای زیر نیز افزوده شده است :
کد:
[FONT=monospace][COLOR=#003399]Button[/COLOR] b [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR][COLOR=#003399]Button[/COLOR][COLOR=#009900])[/COLOR] findViewById[COLOR=#009900]([/COLOR]R.[COLOR=#006633]id[/COLOR].[COLOR=#006633]button1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
b.[COLOR=#006633]setOnClickListener[/COLOR][COLOR=#009900]([/COLOR][COLOR=#000000][B]new[/B][/COLOR] OnClickListener[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        
        @Override
        [COLOR=#000000][B]public[/B][/COLOR] [COLOR=#000066][B]void[/B][/COLOR] onClick[COLOR=#009900]([/COLOR][COLOR=#003399]View[/COLOR] v[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                startActivity[COLOR=#009900]([/COLOR][COLOR=#000000][B]new[/B][/COLOR] Intent[COLOR=#009900]([/COLOR]MainActivity.[COLOR=#000000][B]this[/B][/COLOR], Activity2.[COLOR=#000000][B]class[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
اکنون می توانید برنامه اندروید ساخته شده را تست کنید. قبلا روش های تست کردن برنامه را شرح داده ایم (در مباحث قبلی) و می توانید یکی از آنها را انتخاب کنید.فایل های پروژه اندروید را می توانید از لینک های زیر دریافت کنید :

دانلود فایل های پروژه اندروید
دانلود فایل apk برنامه اندروید
 

پیوست ها

  • 108.zip
    660.7 کیلوبایت · بازدیدها: 0
  • 109.rar
    179.6 کیلوبایت · بازدیدها: 0

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت آسان یک activity جدید، در برنامه eclipse

ساخت آسان یک activity جدید، در برنامه eclipse

همان طور که قبلا شرح دادیم، برای ساخت یک activity جدید در پروژه اندروید، باید سه مرحله را انجام بدهیم. اول اینکه باید یک فایل java برای آن activity بسازیم (ساخت یک کلاس به صورت توسعه کلاس Activity)، سپس در مرحله دوم، یک فایل xml متناظر برای آن activity ایجاد کنیم که شامل اجزای گرافیکی activity خواهد بود. در مرحله سوم هم باید نام activity را در فایل AndroidManifest.xml پروژه اندروید ذکر نماییم. خوشبختانه در برنامه eclipse ، بخشی طراحی شده است که به وسیله آن، می توان این سه مرحله را به طور همزمان انجام داد و تنها باید در تعدادی پنجره، نام activity و یک سری ویژگی های آن را تعیین کنید. در ادامه، نحوه ساخت آسان یک activity جدید در برنامه اندروید را شرح خواهیم داد.
فرض کنید که در برنامه eclipse ، یک پروژه اندروید با نام Kelidestan.com داشته باشیم :

android-217.jpg

سپس بر روی نام پروژه اندروید، با موس، کلیک سمت راست کرده و آنگاه از منوی New ، گزینه Other را انتخاب می کنیم :


android-218.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
در پنجره ای که باز می شود، گزینه Android Activity را انتخاب می کنیم :


android-219.jpg

سپس در پنجره بعدی، نوع activity را انتخاب می کنیم. برای یک activity ، همان گزینه Blank Activity مناسب می باشد (با انتخاب هر کدام از گزینه ها، در پایین پنجره، توضیحاتی در مورد آنها نوشته خواهد شد) :


android-220.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
سپس در پنجره ای که باز می شود، باید نام activity ، نام فایل xml متناظر با آن و همچنین عنوان مربوط به activity (که در action bar نمایش داده می شود) را تعیین کنیم :


android-221.jpg

این سه مورد را بعدا هم می توان تغییر داد، بنابراین بیش از حد نمی خواهد در مورد انتخاب نام مناسب برای آنها، وقت بگذارید. فقط توصیه می کنم که نامگذاری به گونه ای باشد که اولا از نام activity متوجه بشوید که چه عملیاتی را انجام می دهد و دوم اینکه نام فایل xml متناظر با activity به گونه ای باشد که بعدا که تعداد activity ها و فایل های xml پروژه اندروید، زیاد می شود، به راحتی بتوانید تشخیص بدهید که هر فایل xml ، مربوط به کدام activity است.
پس از انتخاب نام ها، بر روی گزینه Finish کلیک می کنیم. مشاهده خواهید کرد که یک فایل java برای activity و یک فایل xml متناظر با آن، در پوشه (folder) با نام layout ، ساخته می شود :

android-222.jpg



علاوه بر این، اگر فایل AndroidManifest.xml پروژه اندروید را باز کنیم، مشاهده می کنیم که نام activity جدید، به طور خودکار، در آن درج شده است (به صورت یک تگ activity) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<?[/COLOR]xml version[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] encoding[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"utf-8"[/COLOR][COLOR=#339933]?>[/COLOR]
[COLOR=#339933]<[/COLOR]manifest xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    [B]package[/B][COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionCode[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1"[/COLOR]
    android[COLOR=#339933]:[/COLOR]versionName[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"1.0"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
        android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"8"[/COLOR]
        android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR]

    [COLOR=#339933]<[/COLOR]application
        android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
        android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
        android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
        android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.MainActivity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR] [COLOR=#339933]>[/COLOR]
            [COLOR=#339933]<[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
                [COLOR=#339933]<[/COLOR]action android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.action.MAIN"[/COLOR] [COLOR=#339933]/>[/COLOR]

                [COLOR=#339933]<[/COLOR]category android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"android.intent.category.LAUNCHER"[/COLOR] [COLOR=#339933]/>[/COLOR]
            [COLOR=#339933]</[/COLOR]intent[COLOR=#339933]-[/COLOR]filter[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
        [COLOR=#339933]<[/COLOR]activity
            android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.NewActiviity"[/COLOR]
            android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_new_activiity"[/COLOR] [COLOR=#339933]>[/COLOR]
        [COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR]
    [COLOR=#339933]</[/COLOR]application[COLOR=#339933]>[/COLOR]

[COLOR=#339933]</[/COLOR]manifest[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
منظورمان، این بخش از کدها می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]activity
    android[COLOR=#339933]:[/COLOR]name[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"com.kelidestan.com.NewActiviity"[/COLOR]
    android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/title_activity_new_activiity"[/COLOR] [COLOR=#339933]>[/COLOR]
[COLOR=#339933]</[/COLOR]activity[COLOR=#339933]>[/COLOR][/FONT]
[COLOR=#339933]
[/COLOR]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر نام یک activity یا یک فایل xml از پروژه اندروید، در برنامه eclipse و تذکر در مورد عدم نگرانی از تغییر نام این دو نوع فایل

تغییر نام یک activity یا یک فایل xml از پروژه اندروید، در برنامه eclipse و تذکر در مورد عدم نگرانی از تغییر نام این دو نوع فایل

گاهی نیاز داریم که نام یک activity یا یک فایل xml از پروژه اندروید را در برنامه eclipse ، تغییر بدهیم. برای این منظور، باید بر روی فایل مورد نظر، با موس، کلیک سمت راست نموده و سپس از منوی Refactor ، گزینه Rename را انتخاب نماییم :

android-223.jpg

سپس در پنجره ای که باز می شود، نام جدید را نوشته و گزینه Finish را انتخاب می کنیم :


android-224.jpg
نکته :
شاید شما در مورد تغییر نام activity ها یا فایل های xml ، تردید داشته باشید و فکر کنید که بعد از تغییر نام آنها، باید تک تک فایل های پروژه اندروید را باز کرده و نام های جدید را جایگزین کنید، ولی باید بدانید که تغییرات مورد نیاز را خود برنامه eclipse انجام می دهد و در تمامی بخش هایی که به آن activity یا فایل xml ارجاع داده شده، نام جدید، به طور خودکار، جایگزین می شود. همچنین توجه داشته باشید که این مورد را برای تغییر نام activity یا فایل xml تذکر دادیم، ولی مثلا اگر با همین روش، نام package را تغییر بدهید، باید بخش های دیگری از پروژه اندروید را هم تغییر بدهید (یک مبحث جداگانه برای تغییر نام package برنامه اندروید نوشته ایم که می توانید به آن رجوع کرده و شیوه تغییر آن را بخوانید).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تفاوت بین دو حالت LinearLayout و RelativeLayout برای نمایش فایل xml متناظر با activity ها

تفاوت بین دو حالت LinearLayout و RelativeLayout برای نمایش فایل xml متناظر با activity ها

زمانی که برای یک activity ، یک فایل xml متناظر می سازیم، معمولا نوع نمایش عناصر فایل xml متناظر آن، به صورت یکی از دو حالت LinearLayout و RelativeLayout می باشد. تفاوت این دو نوع نمایش، در نحوه قرارگیری عناصر مختلف در کنار یکدیگر می باشد.مثلا اگر ما یک ImageView و یک TextView داشته باشیم، چنانچه بخواهیم که این دو عنصر، دقیقا در کنار هم چیده شوند، باید از حالت LinearLayout استفاده کنیم و چنانچه بخواهیم TextView بر روی ImageView قرار بگیرد، باید از حالت RelativeLayout استفاده کنیم.

برای آشنایی بهتر با این دو حالت، یک پروژه می سازیم و سعی می کنیم که تفاوت این دو حالت را به شما نشان بدهیم.

در برنامه eclipse ، ابتدا یک پروژه اندروید با نام Kelidestan.com بسازید (نام package را برابر com.example.kelidestan انتخاب کنید. نام activity اصلی را برابر Activity1 انتخاب کنید و فایل xml متناظر آن را هم، activity_activity1 انتخاب کنید).

فایل activity_activity1.xml را باز می کنیم. کدهای آن به این صورت می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]RelativeLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".Activity1"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/hello_world"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]RelativeLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
به تگ RelativeLayout (یک تگ شروع و یک تگ پایان) دقت کنید. این تگ است که مشخص کرده است که نوع نمایش فایل xml به صورت RelativeLayout باشد. بنابراین اگر بخواهیم که نوع نمایش، به صورت LinearLayout باشد، باید دو عبارت RelativeLayout را به LinearLayout تبدیل کنیم، یعنی کدها باید به صورت زیر تغییر داده شوند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]LinearLayout xmlns[COLOR=#339933]:[/COLOR]android[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/apk/res/android"[/COLOR]
    xmlns[COLOR=#339933]:[/COLOR]tools[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"http://schemas.android.com/tools"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"match_parent"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingBottom[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingLeft[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingRight[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_horizontal_margin"[/COLOR]
    android[COLOR=#339933]:[/COLOR]paddingTop[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@dimen/activity_vertical_margin"[/COLOR]
    tools[COLOR=#339933]:[/COLOR]context[COLOR=#339933]=[/COLOR][COLOR=#0000FF]".MainActivity"[/COLOR] [COLOR=#339933]>[/COLOR]

    [COLOR=#339933]<[/COLOR]TextView
        android[COLOR=#339933]:[/COLOR]id[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@+id/textView1"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_width[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]layout_height[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"wrap_content"[/COLOR]
        android[COLOR=#339933]:[/COLOR]text[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/hello_world"[/COLOR] [COLOR=#339933]/>[/COLOR]

[COLOR=#339933]</[/COLOR]LinearLayout[COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
[h=2]حالت LinearLayout :[/h]ابتدا حالت LinearLayout را شرح می دهیم. زمانی که نوع نمایش فایل xml به صورت LinearLayout باشد، می توانیم عناصر مورد نظرمان را که می خواهیم در فایل xml قرار بگیرند را در کنار هم بچینیم، به گونه ای که بر روی هم قرار نگیرند. این نوع چیدمان عناصر، مثل چیدن تعدادی کتاب در یک قفسه می باشد. ابتدا فایل xml با نام activity_activity1.xml را باز می کنیم (نمایش به صورت گرافیکی). این فایل به صورت گرافیکی، همانند شکل زیر خواهد بود (در حالت LinearLayout) :

android-115.jpg

به گزینه های نمایش داده شده در بالای تصویر فایل xml دقت کنید. دو گزینه را با شماره های 1 و 2 مشخص کرده ایم. این دو گزینه، تنها برای حالت LinearLayout نمایش داده می شوند و برای حالت RelativeLayout ، چنین گزینه هایی وجود ندارد.
همان طور که قبلا گفتیم، چیده شدن عناصر فایل xml در حالت LinearLayout ، همانند چیده شدن تعدادی کتاب در کنار هم در قفسه کتاب می باشد. حال اگر ما گزینه شماره 1 را انتخاب کنیم، عناصر در کنار هم و در جهت افقی چیده می شوند، اما اگر گزینه شماره 2 را انتخاب کنیم، عناصر در جهت عمودی چیده می شوند. دقت کنید که در هر دو حالت، عناصر کاملا به هم می چسبند (نه روی هم قرار می گیرند و نه از هم فاصله می گیرند).
اگر در شکل قبل دقت کنید، گزینه شماره 1 انتخاب شده است، بنابراین عناصر در جهت افقی در کنار هم چیده می شوند. یک Button را به داخل فایل xml می کشیم تا ببینیم نحوه قرار گیری آن به چه صورت خواهد بود :

android-116.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
مشاهده می کنید که زمانی که Button را به درون صفحه می کشیم، یک سری خطوط خط چین نمایش داده می شود که عملا نشان می دهد که Button را تنها می توانیم به صورت افقی در کنار TextView قرار بدهیم. بعد از رها کردن دکمه موس، موقعیت Button و TextView به صورت شکل زیر می باشد :


android-117.jpg

به گزینه ای که در شکل زیر با فلش قرمز رنگ مشخص کرده ایم، توجه کنید :


android-118.jpg

بر روی آن کلیک می کنیم تا دو عنصر Button و TextView ، در جهت عمودی، در کنار هم چیده شوند. نتیجه به صورت شکل زیر می باشد :


android-119.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
حالت RelativeLayout :
در حالت RelativeLayout ، می توانیم تعیین کنیم که عناصر بر روی یکدیگر قرار بگیرند.
شکل زیر، فایل xml را به صورت گرافیکی، در حالت RelativeLayout ، نمایش داده است :

android-114.jpg

مشاهده می کنید که از آن دو گزینه ای که برای حالت LinearLayout داشتیم، دیگر خبری نیست.
اکنون یک button را به درون صفحه فایل xml می کشیم. تصویری همانند تصویر زیر را خواهیم دید :

android-120.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
Button را در هر محل دلخواه می توانیم قرار دهیم. مثلا اگر دکمه موس را رها کنیم، محل قرار گیری Button به صورت شکل زیر خواهد بود :

android-121.jpg

یا اینکه حتی می توانیم button را بر روی TextView قرار بدهیم، مثل شکل زیر (با موس، Button را گرفته و به محل قرارگیری Textview می بریم) :

android-122.jpg





مشاهده می کنید که button بر روی TextView قرار گرفته است.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
وارد کردن (import) یک پروژه اندروید، به درون برنامه eclipse

وارد کردن (import) یک پروژه اندروید، به درون برنامه eclipse

یکی از عملیات هایی که زیاد در برنامه eclipse انجام می دهیم، وارد کردن (import) روژه های اندروید موجود، به درون برنامه eclipse است. پروژه اندروید ممکن است قبلا توسط شما ساخته شده باشد یا اینکه آن را از اینترنت دانلود کرده باشید و بخواهید کدهای آن را ببینید یا آن را کاملتر کنید. اکنون قصد داریم که نحوه وارد کردن (import) یک پروژه اندروید به درون برنامه eclipse را شرح بدهیم.
ابتدا درون برنامه eclipse ، در پنجره Package Explorer ، با موس کلیک سمت راست کرده و سپس گزینه Import را انتخاب می کنیم (اگر پنجره Package Explorer نمایش داده نشده است، باید در برنامه eclipse ، از منوی Window ، گزینه Show View و سپس گزینه Package Explorer را انتخاب کنید تا پنجره مربوط به آن، درون پنجره اصلی برنامه eclipse نمایش داده شود) :

android-229.jpg

در پنجره ای که باز می شود، از شاخه Android ، گزینه Existing Android Code Into Workspace را انتخاب می کنیم و سپس بر روی گزینه Next کلیک می کنیم :


android-230.jpg

در پنجره بعدی، بر روی گزینه Browse کلیک می کنیم :


android-231.jpg

پنجره ای به شکل زیر باز می شود :


android-232.jpg

در این پنجره باید پوشه (folder) مربوط به پروژه اندروید را انتخاب کنیم و سپس بر روی گزینه OK کلیک نماییم. نکته مهم در این مرحله این است که نباید پوشه اصلی (root) پروژه اندروید را انتخاب کنیم، بلکه باید آن را در یک پوشه دیگر قرار داده و سپس آن پوشه دیگر را انتخاب نماییم (عدم توجه به این نکته، می تواند باعث به وجود آمدن خطای Invalid project description بشود).
بنابراین، پس از انتخاب پوشه مربوط به پروژه اندروید، نام آن، نمایش داده می شود :

android-233.jpg

پس از کلیک بر روی گزینه Finish ، پروژه اندروید به درون برنامه eclipse ، وارد (import) شده و در پنجره Package Explorer نمایش داده می شود :


android-234.png
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
شبیه سازی برنامه های اندروید (اجرای فایل های apk) بر روی کامپیوتر، با نرم افزار BlueStacks App Player

شبیه سازی برنامه های اندروید (اجرای فایل های apk) بر روی کامپیوتر، با نرم افزار BlueStacks App Player

همان طور که می دانید، نرم افزارهای گوناگونی برای شبیه سازی برنامه های اندروید بر روی کامپیوتر وجود دارد، در مبحثی دیگر، برنامه YouWave Android را معرفی کردیم، در این مبحث قصد داریم که برنامه ای با نام BlueStacks App Player را معرفی کنیم که دارای ویژگی های متفاوتی است. البته باید توجه داشت که ممکن است این برنامه بر روی برخی کامپیوترها، به درستی عمل نکند (این اخطار سازنده است ولی برای کامپیوتر من مشکلی نداشت). همچنین، بعد از نصب برنامه و اولین اجرای آن (چون در اولین اجرا، باید برخی از فایل های خود را از اینترنت دریافت کند)، بهتر است که هنگام استفاده از آن، ارتباط خود با اینترنت را قطع کنید، زیرا برنامه اطلاعاتی را مرتبا از اینترنت دریافت می کند که می تواند کمی نصب برنامه ها را طولانی تر کند، اما در کل، به نظر بنده، برنامه خوبی است. حجم این برنامه نسبتا بیشتر است و پس از دانلود آن از سایت سازنده اش و بعد از نصب آن، باید از اینترنت، فایل هایی را دانلود کند (فکر می کنم چیزی بیش از 100 مگابایت). برای دانلود این برنامه، می توانید به سایت سازنده آن مراجعه کنید (برنامه مجانی است) :


bluestacks.com

پس از نصب فایل دانلود شده و اجرای برنامه، برنامه شروع به دانلود فایل هایی از اینترنت می کند، پس از این دانلود ها، می توانید از برنامه برای شبیه سازی فایل های apk (برنامه های اندروید) استفاده کنید. اولین موردی که جلب توجه می کند این است که برنامه BlueStacks App Player به عنوان برنامه پیش فرض برای فایل های apk در ویندوزتان شناسایی می شود، یعنی با کلیک بر روی فایل های apk ، آنها به طور خود به خود، بر روی برنامه BlueStacks App Player نصب و شبیه سازی می شوند :

android-235.jpg

بنابراین برای شبیه سازی یک برنامه اندروید با نرم افزار BlueStacks App Player ، تنها باید فایل apk آن را اجرا کنید. معمولا پس از نصب یک فایل apk ، در گوشه ویندوز به شما پیامی نشان داده می شود که اعلام می کند که برنامه نصب شده است، با کلیک بر روی آن پیام، برنامه اندروید شبیه سازی شده به شما نمایش داده می شود و می توانید از آن بر روی کامپیوتر خود استفاده کنید :


android-236.jpg

برنامه همانند یک گوشی اندروید است و می توانید لیست برنامه های نصب بر روی آن را ببینید یا اینکه در قسمت تنظیمات، برخی از آنها را حذف نمایید :

android-237.jpg

وقتی یک فایل apk را اجرا کنید، پنجره مربوط به نصب آن توسط BlueStacks App Player نمایش داده می شود و سپس برنامه سعی می کند که برنامه اندروید را به شما نمایش بدهد، ممکن است در این مرحله، یک صفحه سفید را مشاهده کنید، در صورت مواجه شدن با این صفحه، پنجره برنامه BlueStacks App Player را ببندید و سپس بر روی آیکون برنامه BlueStacks App Player کلیک کنید و به لیست برنامه های نصب شده بروید و بر روی برنامه مورد نظرتان کلیک نمایید تا اجرا شود.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
استفاده از ProGuard برای سخت تر شدن مهندسی معکوس (reverse engineering) و استخراج کدهای فایل apk برنامه اندروید

استفاده از ProGuard برای سخت تر شدن مهندسی معکوس (reverse engineering) و استخراج کدهای فایل apk برنامه اندروید

شاید تاکنون این سوال به ذهن شما رسیده باشد که آیا هنگامی که یک فایل apk از پروژه اندروید خود می سازید و آن را به سایت های فروش می دهید، آیا کاربران می توانند کدهای آن را از فایل apk استخراج نمایند. بر حسب تجربه باید بگویم که پاسخ کلی به این سوال، بله می باشد، اما مسلما گوگل و سایر توسعه دهنده های اندروید هم بیکار نمی نشینند و راهکارهایی را برای سختتر شدن مهندسی معکوس (reverse engineering) کدها، ارائه می دهند. یکی از این راهکارها، استفاده از ProGuard است که می خواهیم در مورد آن، در این مبحث صحبت کنیم.

تا به اینجا حدس می زنم که از شنیدن این موضوع که ممکن است کدهایی که شما نوشته اید را دیگران ببینند، نگران شده اید. راستش را بخواهید، نمی دانم که یک فرد باید چه انگیزه ای برای این کار داشته باشد، امروزه اینترنت همچون بهشتی برای برنامه نویسان است و می توانند انواع عملیات های برنامه نویسی مورد نظرشان را در مباحث آموزشی بیابند، بنابراین به نظر می آید که تنها انگیزه ای که باقی می ماند، یافتن بخشی از کدها است که از آن بتوان سوء استفاده کرد و در سیستم برنامه، اختلال ایجاد کرد. خود من تنها یک بار از مهندسی معکوس کدهای فایل apk استفاده کرده ام و آن هم برای اطمینان از امکان پذیر بودن دیدن کدهای برنامه بود. بنابراین شما باید برای امنیت بیشتر برنامه اندروید خود، از راهکارهای امنیتی استفاده کنید. یکی از این راهکارها، استفاده از ProGuard است. خوشبختانه اگر از جدیدترین برنامه های مربوط به توسعه اندروید استفاده می کنید (مثلا یک نسخه جدید از ADT Bundle)، آنگاه نیازی به نصب هیچ برنامه جدیدی نیست و خود برنامه مربوط به توسعه، حاوی ProGuard می باشد. بنابراین با فرض اینکه برنامه توسعه شما، زیاد قدیمی نباشد، مراحل فعال کردن ProGuard برای پروژه اندروید را شرح می دهیم.

فرض کنید که در برنامه eclipse ، یک پروژه اندروید با نام Kelidestan.com ساخته ایم و اکنون می خواهیم که ProGuard را برای آن فعال کنیم. درون پوشه بندی پروژه اندروید، بر روی فایل project.properties کلیک می کنیم تا باز شود :android-238.jpg
کدهای فایل project.properties ، در ابتدا به صورت زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]# [B]This[/B] file is automatically generated by Android Tools.
# [B]Do[/B] not modify [B]this[/B] file [COLOR=#339933]--[/COLOR] YOUR CHANGES WILL BE ERASED[COLOR=#339933]![/COLOR]
#
# [B]This[/B] file must be checked in Version [COLOR=#003399]Control[/COLOR] Systems.
#
# To customize properties used by the Ant build system edit
# [COLOR=#0000FF]"ant.properties"[/COLOR], and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment [B]this[/B] [COLOR=#009900]([/COLOR]available properties[COLOR=#339933]:[/COLOR]sdk.[COLOR=#006633]dir[/COLOR], user.[COLOR=#006633]home[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR]
#proguard.[COLOR=#006633]config[/COLOR][COLOR=#339933]=[/COLOR]$[COLOR=#009900]{[/COLOR]sdk.[COLOR=#006633]dir[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933]/[/COLOR]tools[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]-[/COLOR]android.[COLOR=#006633]txt[/COLOR][COLOR=#339933]:[/COLOR]proguard[COLOR=#339933]-[/COLOR]project.[COLOR=#006633]txt[/COLOR]

# Project target.
[COLOR=#006633]target[/COLOR][COLOR=#339933]=[/COLOR]android[COLOR=#339933]-[/COLOR][COLOR=#CC66CC]19[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، اکثر کدهای آن، به صورت توضیح (comment) می باشند. به این خط از کدها توجه کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]#proguard.[COLOR=#006633]config[/COLOR][COLOR=#339933]=[/COLOR]$[COLOR=#009900]{[/COLOR]sdk.[COLOR=#006633]dir[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933]/[/COLOR]tools[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]-[/COLOR]android.[COLOR=#006633]txt[/COLOR][COLOR=#339933]:[/COLOR]proguard[COLOR=#339933]-[/COLOR]project.[COLOR=#006633]txt[/COLOR][/FONT]
[/FONT][/COLOR]
این خط از کدها را باید از حالت توضیح (comment) دربیاوریم، یعنی علامت # را از ابتدای آن، حذف کنیم. بنابراین کدها، به صورت زیر در می آید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]proguard.[COLOR=#006633]config[/COLOR][COLOR=#339933]=[/COLOR]$[COLOR=#009900]{[/COLOR]sdk.[COLOR=#006633]dir[/COLOR][COLOR=#009900]}[/COLOR][COLOR=#339933]/[/COLOR]tools[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]/[/COLOR]proguard[COLOR=#339933]-[/COLOR]android.[COLOR=#006633]txt[/COLOR][COLOR=#339933]:[/COLOR]proguard[COLOR=#339933]-[/COLOR]project.[COLOR=#006633]txt[/COLOR][/FONT]
[/FONT][/COLOR]
تغییرات را ذخیره کرده و فایل را ببندید. اکنون به همان روش عادی که از پروژه اندروید، یک فایل apk می ساخته اید، این بار نیز همان عملیات را انجام بدهید (بر روی نام پروژه اندروید، کلیک سمت راست کرده و سپس گزینه Export را انتخاب می کنیم و سایر گزینه ها را برای ساخت فایل apk ، طی می کنیم، ساخت فایل apk را در مبحثی دیگر شرح داده بودیم و آن توضیحات را تکرار نمی کنیم). اگر در حین ساخت فایل apk ، دقت کنید، در پوشه بندی پروژه اندروید، یک پوشه (folder) جدید با نام proguard ساخته می شود (به طور خودکار). آن را در شکل زیر نمایش داده ایم (با مقایسه آن با شکل قبل، می توانید مشاهده کنید که قبلا وجود نداشته است) :android-239.jpg
از وجود همین فولدر می توان مطمئن شد که ProGuard برای برنامه اندروید، فعال شده است.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اجرا (run) و یا خطایابی (debug) یک پروژه اندروید موجود در برنامه eclipse ، بر روی یک گوشی اندروید واقعی

اجرا (run) و یا خطایابی (debug) یک پروژه اندروید موجود در برنامه eclipse ، بر روی یک گوشی اندروید واقعی

اجرا (run) و یا خطایابی (debug) یک پروژه اندروید موجود در برنامه eclipse ،
بر روی یک گوشی اندروید واقعی (از طریق اتصال گوشی به کامپیوتر، با کابل USB)

همان طور که می دانید، برای اجرا یا خطایابی یک پروژه اندروید موجود در برنامه eclipse ، روش های گوناگونی وجود دارد :
1- شبیه سازی برنامه اندروید بر روی یک گوشی مجازی (virtual device)، در خود برنامه eclipse​
2- ساخت یک فایل apk از پروژه اندروید و نصب آن بر روی برخی شبیه ساز ها که در ویندوز اجرا می شوند (مثل برنامه YouWave Android و برنامه BlueStacks App Player)​
3- ساخت یک فایل apk از پروژه اندروید و ارسال آن به یک گوشی اندروید واقعی (با Blutooth یا کابل USB) و سپس نصب آن بر روی گوشی​
4- اجرای برنامه بر روی یک گوشی اندروید واقعی، بدون نیاز به فایل apk و تنها با اتصال گوشی اندروید به کامپیوتر، توسط کابل USB و انتخاب پروژه اندروید در برنامه eclipse​

روش هایی که در بالا ذکر شد، روش هایی است که اینجانب تا به امروز استفاده کرده ام، علاوه بر این موارد، ممکن است روش های دیگری نیز وجود داشته باشد. دلیل بیان این روش ها، این است که یک دید کلی داشته باشید و کمی آنها را با هم مقایسه کنید.
در این مبحث، قصد داریم که توضیحات کاملی را در مورد روش شماره 4 ارائه بدهیم. در روش شماره 4 ، یک گوشی اندروید واقعی را با کابل USB به کامپیوتر وصل می کنیم و سپس در برنامه eclipse ، گزینه هایی برای اجرای (run) برنامه بر روی گوشی و یا خطایابی برنامه (debug) با اجرای آن در گوشی، وجود دارد.
در استفاده از این روش، نکات مهمی وجود دارد که اگر به آنها توجه نکنید، حتما سر در گم می شوید. در واقع، برای اینکه بتوانید پروژه اندروید را به طور مستقیم از برنامه eclipse بر روی گوشی خود اجرا کنید، باید یک سری پیش نیازها وجود داشته باشد، در غیر این صورت، گوشی مورد نظرتان توسط برنامه eclipse ، برای اجرای پروژه اندروید، نمایش داده نخواهد شد. خوب، بنابراین باید هم شیوه اجرای پروژه را بدانید و هم پیش نیازهای آن را. بد نیست ابتدا لیست پیش نیازها را شرح بدهیم (فعلا هیچ اقدامی انجام ندهید و تنها موارد را بخوانید) :

1- باید driver مربوط به گوشی، بر روی ویندوز شما نصب شده باشد. ممکن است شما گوشی را به کامپیوتر وصل کنید و driver آن خود به خود بر روی ویندوز نصب گردد (در این حالت، معمولا پیامی در گوشه ویندوز نمایش داده می شود) و همین کافی باشد، اما مثلا برای یک گوشی دیگر، نیاز پیدا کنید که driver آن را از سایت سازنده دریافت کرده و نصب کنید. بنابراین، این مورد، کمی نسبی خواهد بود. اگر آنقدر خوش شانس نبوده اید که driver خود به خود و توسط گوشی نصب شود، باید دو مورد زیر را در نظر بگیرید :
الف - نصب بسته نرم افزاری Google USB Driver ، از طریق برنامه Android SDK Manager
ب- نصب driver گوشی از طریق دریافت driver از خود سایت سازنده آن گوشی و یا از cd حاوی driver های گوشی

2- سازگار بودن حداقل نسخه اندروید تعیین شده در پروژه اندروید، با نسخه اندروید گوشی واقعی. مثلا فرض کنید که شما در پروژه اندروید مورد نظرتان، مشخصه minSdkVersion در فایل AndroidManifest.xml از پروژه اندروید را برابر 11 انتخاب کرده اید، اما گوشی اندروید واقعی که به کامپیوتر متصل شده است، دارای نسخه شماره 8 باشد، بنابراین برنامه eclipse ، شماره نسخه اندروید نصب بر روی گوشی را تشخیص می دهد و چون برای پروژه قابل قبول نیست، اصلا آن را در لیست گوشی های متصل، نمایش نخواهد داد. بیشتر کاربران، در همین مرحله، گیج و سر در گم می شوند، زیرا قبلا گوشی برای پروژه های اندروید دیگر نمایش داده می شده، اما برای پروژه اندروید فعلی، نمایش داده نمی شود و کاربر فکر می کند که مشکل از شناسایی گوشی توسط برنامه eclipse است، در صورتی که گوشی کاملا شناسایی شده و تنها به دلیل اینکه شماره نسخه اندروید آن، از حداقل تعیین شده برای پروژه اندروید، کمتر است، نمایش داده نخواهد شد.

3- باید گزینه مربوط به خطایابی (USB debugging)، در تنظیمات گوشی اندروید مورد نظر، فعال باشد (البته در این مورد، گوشی شناسایی شده و نمایش داده می شود اما حالت آن در لیست، به صورت offline خواهد بود و برنامه بر روی آن نصب نمی شود. این مورد را نیز به همراه موارد عدم شناسایی گوشی، در انتهای این مبحث کمی شرح خواهیم داد).
اکنون در ادامه، ابتدا فرض می کنیم که شما پیش نیازهای لازم را دارید و شیوه اجرا (run) و خطایابی (debug) را شرح خواهیم داد تا اصلا بدانید که منظورمان از نمایش گوشی در یک لیست در برنامه eclipse چیست، سپس نکات مهمی را در مورد پیش نیازهایی که ذکر کردیم، خواهیم گفت. بنابراین ابتدا ببینید که گوشی شناسایی می شود یا نه، اگر شناسایی نشد، در ادامه همین مبحث، می توانید نکات لازم برای به دست آوردن پیش نیازها را بخوانید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اجرا کردن (run) پروژه اندروید موجود در eclipse ، بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB

اجرا کردن (run) پروژه اندروید موجود در eclipse ، بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB

اجرا کردن (run) پروژه اندروید موجود در eclipse ، بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB (با فرض شناساسی گوشی توسط برنامه eclipse)
ابتدا برنامه eclipse را باز کنید. پروژه اندروید مورد نظرتان، باید در پنجره Package Explorer موجود باشد، در غیر این صورت، باید آن را به درون برنامه eclipse ، وارد (import) کنید :

android-261.png

اکنون گوشی اندروید را با کابل USB به کامپیوتر متصل کنید، اگر گوشی قبلا توسط کامپیوتر شناسایی شده، تقریبا 10 ثانیه صبر کنید، اما اگر برای اولین بار است که گوشی را به کامپیوتر متصل می کنید، احتمالا پیام هایی در مورد نصب driver آن در گوشه پایین سمت راست ویندوز، نمایش داده می شود، بنابراین صبر کنید تا این مراحل طی شود. پس از اطمینان از شناسایی گوشی توسط کامپیوتر، در برنامه eclipse ، بر روی نام پروژه اندروید، با موس، کلیک سمت راست نموده و گزینه Run As و سپس گزینه Android Application را انتخاب کنید :


android-262.jpg

در این هنگام، برنامه eclipse به دنبال گوشی های مجازی (virtual device) و همچنین گوشی های واقعی می گردد که برای اجرای این پروژه اندروید، مناسب باشند (یعنی نسخه اندروید آنها مناسب باشد)، آنگاه اگر هیچ موردی نیابد، پنجره زیر را نمایش می دهد (بنابراین باید ببینید کدام پیش نیاز را ندارید) :


android-263.png

که با فشار دادن گزینه No ، پجره زیر نمایش داده می شود (یک لیست خالی) :


android-264.jpg

اما اگر یک یا چند مورد مناسب پیدا کند، آن پنجره نمایش داده نمی شود و مستقیما لیستی حاوی موارد مناسب شناسایی شده را خواهید دید :
android-265.jpg

مشاهده می کنید که یک گوشی واقعی مناسب، شناسایی شده است و می توانید آن را در لیست ببینید. اکنون باید گوشی واقعی را انتخاب کرده و سپس بر روی گزینه OK کلیک کنیم. از حالا، دیگر فقط به صفحه گوشی اندروید خود نگاه کنید تا برنامه نصب شده و سپس اجرا گردد (به صورت خودکار). فقط اگر صفحه گوشی قفل است، آن را از حالت قفل در بیاورید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
خطایابی (debug) پروژه اندروید موجود در eclipse ، بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB

خطایابی (debug) پروژه اندروید موجود در eclipse ، بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB

خطایابی (debug) پروژه اندروید موجود در eclipse ،
بر روی گوشی واقعی متصل به کامپیوتر، با کابل USB
(با فرض شناساسی گوشی توسط برنامه eclipse)

در قسمت قبل، نحوه اجرای پروژه اندروید بر روی گوشی واقعی را شرح دادیم، اما اگر پروژه اندروید، پس از نصب و اجرا با گوشی، با خطا روبرو شده و بسته شود (force close)، نمی توانید بفهمیم که کدام بخش از کدهای پروژه اندروید، باعث ایجاد این خطا شده است. برای یافتن کدهای ایجاد کننده خطا، می توانیم به جای گزینه اجرا کردن (run) پروژه اندروید، از گزینه خطایابی (debug) استفاده کنیم.نکته مهم این است که اگر قصد دارید با این روش، یک پروژه اندروید را خطایابی کنید، باید ابتدا مشخصه debuggable در فایل AndroidManifest.xml را برابر true قرار بدهید. برای این منظور، فایل AndroidManifest.xml از پروژه اندروید را باز کنید و سپس در میان مشخصه های تعیین شده برای تگ application ، مشخصه زیر را نیز بنویسید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]android[COLOR=#339933]:[/COLOR]debuggable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR][/FONT]
[/FONT][/COLOR]
مثل کد زیر برای تگ application :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]application
    android[COLOR=#339933]:[/COLOR]allowBackup[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
    android[COLOR=#339933]:[/COLOR]debuggable[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
    android[COLOR=#339933]:[/COLOR]icon[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@drawable/ic_launcher"[/COLOR]
    android[COLOR=#339933]:[/COLOR]label[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@string/app_name"[/COLOR]
    android[COLOR=#339933]:[/COLOR]largeHeap[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"true"[/COLOR]
    android[COLOR=#339933]:[/COLOR]theme[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"@style/AppTheme"[/COLOR] [COLOR=#339933]>[/COLOR][/FONT]
[/FONT][/COLOR]
اگر این مشخصه را تعیین نکنید، پروژه اندروید بر روی گوشی اجرا می شود، اما در صورت بروز خطا، دیگر برنامه eclipse نمی تواند محل خطا را بیابد. در واقع، بدون وجود این مشخصه، به جای خطایابی (debug)، تنها اجرای برنامه (run) را خواهیم داشت، بنابراین حتما تعیین این مشخصه را فراموش نکنید. همچنین، پس از خطایابی، زمانی که خواستید برنامه اندروید را به فروشگاه های اندروید بدهید، این مشخصه را برابر false قرار بدهید.بنابراین فرض می کنیم که مشخصه debuggable را برابر true قرار داده اید و اکنون سایر مراحل را شرح می دهیم. برای خطایابی (debug)، تمامی مراحل، مشابه همان اجرا کردن (run) است و تنها تفاوت این است که به جای گزینه Run As ، باید گزینه Debug As را انتخاب کنیم (اگر مراحل مربوط به اجرا کردن را فراموش کرده اید، آنها را در ابتدای همین مبحث، دوباره بخوانید) :

android-266.jpg


قبلا برای اجرا کردن (run) می گفتیم که صبر کنید تا برنامه کامل نصب شود، اما برای خطایابی (debug) باید در گوشه بالا سمت راست پنجره برنامه eclipse ، یک گزینه با نام Debug را بیابید :

android-267.png

سپس بر روی آن کلیک کنید تا به حالت فعال در بیاید (با این کار، گزینه Java دیگر فعال نخواهد بود، هر وقت خواستید که دوباره همان پنجره های قبلی در برنامه eclipse نمایش داده شود، باید بر روی گزینه Java کلیک کنید) :
android-268.png

با فعال کردن گزینه Debug ، پنجره های دیگری در پنجره اصلی برنامه eclipse نمایش داده می شوند. در این پنجره ها، مراحل مربوط به نصب و اجرای پروزه اندروید بر روی گوشی، نمایش داده می شود :




android-269.jpg

آن چیزی که بیش از همه برای ما مهم است، پیدا کردن علت ایجاد خطا و بسته شدن برنامه اندروید (force close) می باشد. به محض اینکه برنامه اندروید هنگام اجرا با گوشی، با خطا مواجه شود، برنامه eclipse علت خطا را ردیابی کرده و فایل مربوط به آن را باز می کند. مثلا من عمدا پروزه اندرویدی را انتخاب کردم که دارای یک خطا است (منظورم خطایی نیست که در برنامه eclipse با رنگ قرمز نمایش و تذکر داده شود، بلکه خطایی است که هنگام نصب بر روی یک سری گوشی خاص، ایجاد می شود). بنابراین، با بسته شدن برنامه (force close) بر روی گوشی، برنامه eclipse ، فایل مربوط به ایجاد خطا و همچنین خطی از کدها که باعث ایجاد خطا می شود را به ما نشان می دهد (با باز کردن فایل و بر جسته کردن آن خط از کدها) :


android-270.jpg

مشاهده می کنید که در پنجره ای با عنوان Debug ، نام فایل دارای خطا، برابر MainActivity.java مشخص شده است. علاوه بر این، در زیر این پنجره، خود فایل MainActivity.java به طور خودکار باز شده است و خطی از کدها که خطا را ایجاد کرده است را با برجسته کردن (سایه زدن) نمایش داده است. بنابراین به راحتی توانستیم این خطا را شناسایی کنیم (مثلا علت این خطا این است که این کد، تنها برای گوشی های دارای حداقل API برابر 11 به طور صحیح عمل می کند، ولی گوشی ما، دارای این حداقل نیست).
پس از یافتن خطا، می توانیم بر روی گزینه Java که قبلا در مورد آن توضیح دادیم، کلیک کنیم تا به حالت فعال در بیاید و دوباره همان پنجره های عادی برای کار بر روی پروژه اندروید را ببینیم.
در صورتی که دیگر نیازی به خطایابی (debug) ندارید، می توانید مشخصه debuggable در فایل AndroidManifest.xml را برابر false قرار بدهید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فراهم کردن پیش نیازهای لازم برای شناسایی گوشی اندروید توسط کامپیوتر

فراهم کردن پیش نیازهای لازم برای شناسایی گوشی اندروید توسط کامپیوتر

[h=2]فراهم کردن پیش نیازهای لازم برای شناسایی گوشی اندروید توسط کامپیوتر (در صورت عدم شناسایی گوشی یا عدم نصب برنامه اندروید بر روی گوشی) :[/h]همان طور که قبلا گفتم، ممکن است که گوشی شما، با اتصال به کامپیوتر (توسط کابل USB)، به راحتی شناسایی شود، اما اگر این اتفاق نیفتاده، اکنون باید ببینید که کدام پیش نیاز برای شناسایی گوشی را ندارید. بنابراین، در ادامه، چندین مرحله برای بررسی داشتن پیش نیاز ها (یا انجام عملیات هایی برای اطمینان خاطر) را شرح خواهیم داد. مراحل اول، دوم و سوم، برای عدم شناسایی گوشی می باشند و مرحله چهارم (فعال کردن گزینه خطایابی در گوشی اندروید - USB debugging) برای زمانی است که گوشی شناسایی شده اما حالت (State) آن به صورت offline نوشته شده است و برنامه بر روی گوشی، نصب نمی شود.

[h=2]مرحله اول : چک کردن حداقل نسخه اندروید تعیین شده در پروژه اندروید (مشخصه minSdkVersion)[/h]همان طور که قبلا گفتیم، زمانی که برنامه eclipse به دنبال گوشی های متصل به کامپیوتر، برای اجرا یا خطایابی یک پروژه اندروید می گردد، نسخه اندروید گوشی هایی را که به کامپیوتر متصل هستند چک می کند و اگر نسخه اندروید آنها، از حداقلی که در پروژه اندروید، مشخص شده است، کمتر باشد آنگاه دیگر گوشی را در لیست نمایش نخواهد داد. بنابراین باید نسخه اندروید گوشی را چک کنیم که از حداقل تعیین شده، کمتر نباشد (مخصوصا هنگام استفاده از گوشی های قدیمی). بنابراین اگر نسخه اندروید گوشی، کمتر از حداقل تعیین شده بود، می توانیم این مشخصه را در پروژه اندروید تغییر بدهیم. برای این منظور، فایل AndroidManifest.xml از پروژه اندروید را باز کرده و کدهای زیر را در آن پیدا می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#339933]<[/COLOR]uses[COLOR=#339933]-[/COLOR]sdk
    android[COLOR=#339933]:[/COLOR]minSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"11"[/COLOR]
    android[COLOR=#339933]:[/COLOR]targetSdkVersion[COLOR=#339933]=[/COLOR][COLOR=#0000FF]"18"[/COLOR] [COLOR=#339933]/>[/COLOR][/FONT]
[/FONT][/COLOR]
باید عدد نوشته شده برای مشخصه minSdkVersion را تغییر بدهیم (انتخاب یک عدد کمتر - یک API با شماره کمتر).

علاوه بر این، ممکن است ارتقای نسخه اندروید گوشی نیز به ذهنتان برسد که بنده آن را توصیه نمی کنم، زیرا معمولا برنامه نویسان عمدا برنامه اندروید را بر روی گوشی های قدیمی نیز امتحان می کنند تا از صحیح عمل کردن آن در نسخه های اندروید مختلف، مطمئن شوند. البته ممکن است یک برنامه نویس، برنامه خود را برای گوشی های پیشرفته تر طراحی کرده باشد و گوشی های قدیمی برایش اهمیت نداشته باشند، که این مورد، استثناء خواهد بود.

[h=2]مرحله دوم : دانلود بسته های نرم افزاری driver توسط برنامه Android SDK Manager[/h]برنامه Android SDK Manager ، دارای یک سری بسته های نرم افزاری مرتبط با driver برای گوشی ها است. بد نیست که شما جدیدترین نسخه های آن را توسط خود برنامه Android SDK Manager دانلود کنید. دقت داشته باشید که برخی کاربرن از Android SDK Manager و eclipse استفاده می کنند و این دو را جداگانه نصب کرده اند، اما برخی بسته نرم افزاری ADT Bundle را نصب کرده اند، بنابراین کاربراتی که از ADT Bundle استفاده کرده اند، تنها باید در میان پوشه های آن، به دنبال فایل اصلی برنامه Android SDK Manager بگردند (فقط برای این تذکر دادم که بدانند خود برنامه Android SDK Manager نیز در بسته نرم افزاری ADT Bundle وجود دارد).

خوب همان طور که می دانید، گوگل ایرانیان را تحریم کرده است و اجازه دانلود بسته های نرم افزاری را به آنها نمی دهد، قبلا در مبحثی دیگر، راه حل این مورد را بیان کردیم، اما در این مبحث نیز دوباره آن را خواهیم گفت. راه حل، استفاده از برنامه ای است که در شکل زیر نمایش داده ایم (می توانید آن را از اینترنت دانلود کنید) :

android-271.jpg

در پنجره این برنامه، بر روی گزینه Add کلیک می کنیم. پنجره ای به شکل زیر باز می شود :


android-272.png
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
در قسمت Bookmark ، یک نام دلخواه را می نویسیم (مثلا SDK) و سپس بر روی گزینه File Path کلیک می کنیم و سپس فایل اجرایی مربوط به برنامه Android SDK Manager را انتخاب می کنیم. با انتخاب آن، یک گزینه برای برنامه Android SDK Manager افزوده می شود :

android-273.jpg

ما هر زمان که می خواهیم گوگل، ما را تشخیص نداده و اجازه دانلود بسته های نرم افزاری توسط برنامه Android SDK Manager را به ما بدهد، باید برنامه Android SDK Manager را از طریق دابل کلیک بر روی این گزینه، اجرا کنیم. دقت کنید که برنامه را حتما باید از اینجا اجرا کنید، نه از پوشه بندی عادی ویندوز. بنابراین بر روی این گزینه دو بار کلیک می کنیم تا برنامه Android SDK Manager اجرا گردد. صفحه اصلی این برنامه، به صورت زیر خواهد بود :

android-274.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
باید کمی صبر کنیم تا برنامه به سرور گوگل وصل شده و بسته های نرم افزاری را نمایش بدهد. همان طور که مشاهده می کنید، در قسمت Extras ، یک گزینه با نام Google USB Driver وجود دارد (همان بسته نرم افزاری مورد نظر ما). اگر در جلوی آن، عبارت Installed نوشته شده باشد، دیگر نیازی به انجام این مرحله نداریم و بسته نرم افزاری قبلا نصب شده است، اما اگر عبارت Not installed نوشته شده، باید در کنار آن، یک علامت تیک بزنیم، زیرا باید این بسته های نرم افزاری را دانلود و نصب کنیم. سپس بر روی گزینه مربوط به نصب (یعنی Install 1 Package) کلیک می کنیم. پنجره ای به شکل زیر نمایش داده می شود :


android-275.jpg

گزینه Accept License را انتخاب کرده و سپس بر روی گزینه Install کلیک می کنیم. پنجره ای به شکل زیر نمایش داده می شود و اطلاعاتی در مورد وضعیت دانلود بست های نرم افزاری مشاهده خواهید کرد و در آخر، پیامی مبنی بر نصب بسته نرم افزاری، در زیر همان پنجره نمایش داده می شود :
android-276.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
بر روی گزینه Close کلیک می کنیم. بنابراین، این بار در پنجره برنامه Android SDK Manager ، در جلوی آن بسته نرم افزاری، عبارت Installed نوشته می شود :

android-277.jpg

اکنون تمامی برنامه های مربوط به برنامه نویسی اندروید را بسته و دوباره از اول آنها را باز می کنیم تا ببینیم این بار گوشی تشخیص داده می شود یا خیر (اگر تشخیص داده نشد، باید مراحل بعد را در همین مبحث بخوانید).


مرحله سوم : دریافت driver گوشی از سایت شرکت سازنده گوشی

معمولا شرکت های سازنده گوشی، در سایت خود، یک برنامه جامع یا یک سری driver را برای گوشی های ساخت خود قرار می دهند که باعث شناسایی گوشی توسط کامپیوتر می شود. بنابراین باید شما به سایت سازنده گوشی خود مراجعه کنید و با یافتن نرم افزار یا driver مناسب برای مدل گوشی خود، آن را دانلود کرده و بر روی کامپیوتر نصب کنید.
مثلا اینجانب با توجه به اینکه دو گوشی samsung دارم، به سایت شرکت samsung مراجعه کردم و یک نرم افزار با عنوان Kies را دانلود و بر روی کامپیوتر خود نصب کردم. بنابراین با اجرای این برنامه و سپس اتصال هر یک از گوشی ها به کامپیوتر (با کابل USB)، ابتدا در این برنامه چک کردم که driver گوشی به درستی نصب شده باشد. مثلا با اتصال گوشی به کامپیوتر، نرم افزار Kies ، اطلاعات کلی گوشی را نمایش می دهد :

android-278.jpg


با دیدن نام گوشی و همچنین برخی مشخصات آن در این برنامه، اطمینان حاصل کردم که driver به درستی نصب شده است. شما نیز باید با توجه به مدل گوشی خود و همچنین شرکت سازنده آن، نرم افزار یا driver های مناسب برای آن را بیابید. همچنین بهتر است که هم نرم افزار مربوط به driver و هم برنامه eclipse به طور همزمان، در حال اجرا باشند (نه اینکه نرم افزار مربوط به driver را ببندید و بعد به سراغ برنامه eclipse بروید).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
مرحله چهارم : فعال کردن گزینه خطایابی (USB debugging) در تنظیمات گوشی اندروید
مراحل قبل که گفتیم، برای زمانی بود که گوشی اندروید توسط برنامه eclipse شناسایی نشود، اما گاهی پیش می آید که گوشی اندروید توسط برنامه eclipse شناسایی می شود، اما حالت (State) آن، برابر offline نوشته شده است و ما نمی توانیم پروژه اندروید موجود در برنامه eclipse را در آن اجرا (run) یا خطایابی (debug) کنیم.
مثلا به شکل زیر دقت کنید :

android-291.jpg

مشاهده می کنید که گوشی شناسایی شده است، اما حالت (State) آن برابر offline می باشد و بنابراین، نمی توان بر روی آن، از طریق برنامه eclipse ، یک پروژه اندروید را نصب کرد.
پس باید در تنظیمات گوشی اندروید بگردیم و گزینه ای با عنوان USB debugging را بیابیم و در کنار آن، علامت تیک بزنیم تا این امکان، فعال شود. نکته مهم در این مرحله، این است که این گزینه، در گوشی های اندروید مختلف، ممکن است در قسمت های متفاوتی از تنظیمات گوشی پیدا می شود (یا بهتر بگویم، به شیوه متفاوتی بتوانیم به آن دسترسی داشته باشیم). مثلا این گزینه، در یک گوشی، در قسمت Developer options قرار دارد و فرد به راحتی آن را می یابد، ولی من که یک گوشی Galaxy S4 دارم، وقتی می خواستم قسمت Developer options را در تنظیمات گوشی بیابم، هر چه گشتم، هیچ کجا نبود، بعد از مدتی جستجو در اینترنت، متوجه شدم که این گزینه، در این گوشی به صورت پنهان می باشد و باید در قسمتی از گوشی، چند بار کلیک کنم (دقیقا یادم نیست کدام بخش و چه تعداد کلیک) و بعد گزینه Developer options در تنظیمات نمایش داده می شود و بعد در آن، گزینه USB debugging را تیک زدم تا فعال شود :

android-293.jpg

بنابراین وقتی گوشی را با کابل USB به کامپیوتر وصل می کنم (در حالی که برنامه eclipse را قبلا اجرا کرده ام)، از من می پرسد که آیا اجازه خطایابی (debugging) می دهید یا خیر :

android-290.jpg

که با انتخاب گزینه OK ، آنگاه حالت (State) گوشی، به صورت online نمایش داده می شود :



android-292.jpg

بنابراین اکنون می توان از طریق برنامه eclipse ، پروژه های اندروید را بر روی آن نصب کرد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
نوشتن پیام هایی برای نمایش در قسمت LogCat در برنامه Eclipse

نوشتن پیام هایی برای نمایش در قسمت LogCat در برنامه Eclipse

نوشتن پیام هایی برای نمایش در قسمت LogCat در برنامه Eclipse ،
هنگام شبیه سازی برنامه اندروید توسط یک دستگاه مجازی (virtual device)
یا هنگام اجرا و خطایابی برنامه اندروید بر روی یک گوشی اندروید واقعی،
در برنامه نویسی اندروید



همان طور که می دانید، هنگام شبیه سازی برنامه اندروید توسط یک دستگاه مجازی (virtual device) یا هنگام خطایابی برنامه اندروید بر روی یک گوشی اندروید واقعی، در قسمت LogCat برنامه eclipse ، می توانیم پیام هایی را بر اساس روند اجرای برنامه اندروید مشاهده کنیم که به خصوص در صورت وقوع خطا، با استفاده از آنها می توانیم منبع ایجادکننده خطا را تا حدودی شناسایی کنیم :




1298.png

این پیام ها که در قسمت LogCat برنامه eclipse نمایش داده می شوند، قبلا توسط توسعه دهندگان اندروید، کتابخانه ها (libraries) و کلاس هایی (classes) که از آنها در برنامه اندروید خود استفاده کرده ایم، طراحی شده اند. اما شاید خود ما نیز بخواهیم که پیام هایی را به برنامه اندروید خود اضافه کنیم که بعد از شبیه سازی برنامه اندروید (توسط روش هایی که گفته شد)، بتوانیم بر اساس روند اجرای آن، پیام هایی را در قسمت LogCat از برنامه eclipse مشاهده نماییم. در ادامه، چگونگی افزودن پیام برای نمایش در قسمت LogCat را شرح خواهیم داد.
اگر پنجره LogCat در برنامه eclipse را نمی بینید (باز نیست)، در پنجره اصلی برنامه eclipse ، از منوی Window ، گزینه Show View و سپس گزینه Other را انتخاب کنید :

1297.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پنجره ای به شکل زیر نمایش داده می شود :

1299.jpg

در این پنجره، ابتدا گزینه Android و سپس گزینه LogCat را انتخاب کرده و بر روی دکمه OK کلیک می کنیم :

1300.jpg


بنابراین اگر قبلا پنجره LogCat نمایش داده نشده باشد، اکنون می توانید آن را در پنجره اصلی برنامه eclipse مشاهده کنید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اکنون به سراغ Log نویسی می رویم. شاید سریعترین راه برای آشنایی با انواع Log ، اجرای کد زیر در برنامه اندروید باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Log.[COLOR=#006633]e[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"error"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Log.[COLOR=#006633]w[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"warning"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Log.[COLOR=#006633]i[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"info"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Log.[COLOR=#006633]d[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"debug"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Log.[COLOR=#006633]v[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"verbose"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
Log.[COLOR=#006633]wtf[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"What a Terrible Failure"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
نوع Log ، با یک یا چند حرف، بعد از عبارت Log. نوشته شده است. یعنی ما در کد بالا، از 6 نوع Log استفاده کرده ایم که هر کدام، پیامی را در قسمت LogCat نمایش می دهد. تفاوت انواع log ها، در میزان اهمیت آنها برای شرح رویدادهای اتفاق افتاده در برنامه اندروید است. درون پرانتز، ابتدا یک نام تگ (Tag) را به صورت رشته (String) می نویسیم و سپس، پیام مورد نظرمان برای نمایش در قسمت LogCat را نوشته ایم. من عمدا در قسمت پیام، یک یا چند کلمه برای شرح نوع آن Log ها نوشته ام.قبل از اینکه تفاوت بین آنها را شرح بدهم، ابتدا بگذارید ببینیم که از نظر ظاهری (در LogCat) به چه شکل هستند. بنابراین مثلا در یک Activity دلخواه از پروژه اندروید، آنها را در روش onCreate می نویسیم (یک مثال) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.com[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.util.Log[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]

    @Override
    [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
        Log.[COLOR=#006633]e[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"error"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Log.[COLOR=#006633]w[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"warning"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Log.[COLOR=#006633]i[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"info"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Log.[COLOR=#006633]d[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"debug"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Log.[COLOR=#006633]v[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"verbose"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        Log.[COLOR=#006633]wtf[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"myTAG"[/COLOR], [COLOR=#0000FF]"What a Terrible Failure"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
    [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
خوب حالا می خواهیم برنامه اندروید (پروژه اندروید) را اجرا یا خطایابی کنیم، برای این منظور، فرض می کنیم که مطالب گذشته را خوانده اید و می دانید که چگونه از گوشی واقعی برای اجرا یا خطایابی پروژه اندروید استفاده کنید (یا اصلا می توانید از virtual device برای اجرا یا خطایابی استفاده کنید).
اکنون در برنامه eclipse ، بر روی نام پروژه اندروید، کلیک سمت راست نموده و ابتدا گزینه Debug As (یا گزینه Run As برای اجرا کردن) و سپس گزینه Android Application را انتخاب می کنیم :
1301.jpg

بنابراین در قسمت LogCat ، پیام های زیر نمایش داده می شود :


1302.jpg

مشاهده می کنید که برای انواع Log ها، رنگ های مختلفی داریم (به جز Log.e و Log.wtf که هر دو به رنگ قرمز نمایش داده می شوند.) بنابراین شما می توانید با استفاده از انواع Log ، پیام های دلخواهی را در قسمت LogCat (همزمان با شبیه سازی برنامه اندروید) مشاهده کنید که تسلط کاملی بر روند اجرای برنامه اندروید را در اختیار شما قرار می دهد.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تفاوت بین انواع Log :
اکنون قصد داریم که تفاوت انواع Log را شرح بدهیم. فقط دقت داشته باشید که آنچه بیان می شود، یک قرارداد بین توسعه دهندگان برای استفاده از انواع Log می باشد (نه یک قانون که اگر آن را رعایت نکنید، برای برنامه اندروید شما مشکلی پیش بیاید).

Log.e :
هنگام بروز یک خطا (error)، این Log را به کار می بریم. منظورمان از خطا، عدم اجرا شدن دستوری مهم است، یعنی عملیاتی که مد نظرمان بوده است، اجرا نشده و یک خطا به وجود آمده است.
Log.e معمولا با try و catch به کار می رود ( کلید شماره 345 )، زیرا باید تشخیص بدهیم که آیا خطای مورد نظر ما رخ داده یا نه.

Log.w :
Log.w برای زمانی به کار می رود که بخواهیم در مورد به وجود آمدن یک وضعیت (نتیجه) هشدار (warning) بدهیم. اگرچه وضعیت به وجود آمده، اختلال مهمی در روند اجرای کدها ایجاد نمی کند، ولی باید به صورت یک نکته مهم به برنامه نویس تذکر داده شود تا در صورت نیاز، موارد مربوط به آن را در کدنویسی های بعدی در نظر بگیرد.

Log.i :
Log.i برای نمایش اطلاعات (information) مفیدی در زمینه اجرای بخش های مختلف برنامه اندروید به کار می رود. مثلا اگر کد شما در کل شامل 5 مرحله است، می توانید در انتهای اجرای هر مرحله، با Log.i ، پیامی مبنی بر اجرای موفقیت آمیز هر مرحله، در LogCat نمایش بدهید.

Log.d :
Log.d برای خطایابی (debugging) به کار می رود (اگر زمانی با خطا روبرو شویم، با پیام های نوشته شده توسط Log.d می توانیم علت ایجاد خطا را پیدا کنیم). مثلا با آن می توانید تمامی موارد مهم و کلیدی روند اجرای برنامه اندروید را در LogCat نمایش بدهید، مثل مقادیر به دست آمده برای متغیرها، نتایج اجرای زیرمرحله ها و ... .

Log.v :
Log.v برای نمایش تمامی نکات کوچک و بزرگ از اجرای برنامه اندروید، در قسمت LogCat ، به کار می رود.

.wtf :
Log.wtf مشابه Log.e می باشد، اما برای مواردی به کار می رود که یک خطای خیلی مهم رخ داده است که با وقوع آن خطا، باید کل روند اجرای برنامه اندروید متوقف شود (یک خطای مهم که کل برنامه اندروید را دچار مشکل می کند).
Log.wtf معمولا با try و catch به کار می رود ( کلید شماره 345 )، زیرا باید تشخیص بدهیم که آیا خطای مورد نظر ما رخ داده یا نه.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پاک کردن پیام های نمایش داده شده در قسمت LogCat :
اگر قصد دارید که پیام های قبلی نمایش داده شده در LogCat را پاک کنید (تا با پیام های جدید، اشتباه گرفته نشوند)، در گوشه بالا سمت راست پنجره LogCat ، گزینه ای به شکل زیر وجود دارد :

1303.png

با اشاره بر روی آن، پیام های قبلی نمایش داده شده در LogCat ، پاک می شوند.


جستجو در متن پیام های نمایش داده شده در قسمت LogCat (یا جستجو در نام Tag ها) :

معمولا تعدادی زیادی پیام در قسمت LogCat نمایش داده می شود، بنابراین برای یافتن یک پیام خاص یا یک سری پیام های خاص، می توانیم کلمه های موجود در متن آنها را جستجو کنیم :


1304.jpg
شما در هنگام جستجو، از عبارات قاعده مند (regular expressions) نیز می توانید استفاده کنید (تمامی متن هایی که در یک شکل کلی، صدق می کنند).

علاوه بر متن پیام ها، در نام Tag ها نیز می توان جستجو کرد. برای این منظور، در ابتدای عبارت جستجو، باید این عبارت را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]tag[COLOR=#339933]:[/COLOR][/FONT]
[/FONT][/COLOR]
به عنوان مثال، نتیجه زیر را ببینید :

1306.jpg

برای جستجو در PID نیز می توان به شکل مشابه عمل کرد و تنها باید عبارت زیر در ابتدای عبارت جستجو نوشته شود :

کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]pid[COLOR=#339933]:[/COLOR][/FONT]
[/FONT][/COLOR]
انتخاب حداقل درجه اهمیت برای نمایش پیام ها در قسمت LogCat :

همان طور که قبلا گفتیم، انواع Log از نظر درجه اهمیت با هم تفاوت دارند. بنابراین ما می توانیم تعیین کنیم که تنها پیام هایی در LogCat نمایش داده شوند که دارای یک حداقل درجه اهمیت باشند. این حداقل درجه اهمیت، در گوشه بالا سمت راست پنجره LogCat نمایش داده می شود (بنابراین ترتیب اهمیت انواع Log را از ترتیب این گزینه ها نیز می توانید متوجه شوید) :

1308.png


مقدار پیش فرض آن برابر verbose (معادل Log.v) است که باعث می شود همه پیام ها نمایش داده شوند، اما مثلا اگر مقدار warn (معادل Log.w) را برای آن انتخاب کنیم، چون حداقل درجه اهمیت برابر Log.w در نظر گرفته شده، بنابراین تنها پیام هایی در LogCat نمایش داده می شوند که با Log.w یا Log.e یا Log.wtf ایجاد شده باشند :


1309.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ذخیره اطلاعات قسمت LogCat به صورت یک فایل متنی :

در گوشه بالا سمت راست پنجره LogCat ، گزینه ای به شکل زیر وجود دارد :

1305.png

با استفاده از این گزینه، می توانید اطلاعات قسمت LogCat را به صورت یک فایل متنی ذخیره کنید. فقط نکته مهم این است که این گزینه، خط هایی را در فایل متنی ذخیره می کند که آنها را انتخاب کرده باشید (اگر هیچ خطی را انتخاب نکنید، تنها یک فایل متنی خالی ساخته می شود). مثلا من تنها 6 خط زیر را انتخاب می کنم :


1307.jpg

بعد از ذخیره اطلاعات در فایل متنی، فایل را که باز می کنیم، دارای متن زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] E[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] error
01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] W[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] warning
01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] I[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] info
01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] D[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] debug
01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] V[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] verbose
01[COLOR=#339933]-[/COLOR]09 [COLOR=#CC66CC]15[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]50[/COLOR][COLOR=#339933]:[/COLOR][COLOR=#CC66CC]45.271[/COLOR][COLOR=#339933]:[/COLOR] A[COLOR=#339933]/[/COLOR]myTAG[COLOR=#009900]([/COLOR][COLOR=#CC66CC]770[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933]:[/COLOR] What a Terrible Failure[/FONT]
[/FONT][/COLOR]
در پنجره LogCat ، اگر قصد دارید که همه خط ها را انتخاب کنید، ابتدا در فضای خالی پنجره LogCat ، با موس کلیک کنید، سپس کلیدهای Ctrl و A از کیبورد را فشار بدهید تا تمامی خط ها به حالت انتخاب شده در بیایند.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
آموزش نصب و استفاده از نرم افزار Genymotion ، برای شبیه سازی برنامه های اندروید بر روی کامپیوتر

آموزش نصب و استفاده از نرم افزار Genymotion ، برای شبیه سازی برنامه های اندروید بر روی کامپیوتر

نرم افزار Genymotion برای شبیه سازی برنامه های اندروید بر روی کامپیوتر به کار می رود. با این نرم افزار قادر هستید که برنامه اندروید خود را بر روی گوشی های مختلف و همچنین نسخه های مختلف اندروید، تست کنید.
بخشی از امکانات نرم افزار Genymotion پولی می باشند و تنها با خرید license اصلی آن، می توانید از آنها استفاده نمایید، اما همان بخش های رایگان، نیازهای ما را برطرف می کنند. البته اگر برای اولین بار از این نرم افزار استفاده می کنید، تمامی امکانات آن به مدت 15 روز فعال است و بعد از پایان این 15 روز، برخی بخش ها به صورت غیرفعال در می آیند.
برای استفاده از نرم افزار Genymotion ، ابتدا باید نرم افزار Oracle VM VirtualBox را بر روی کامپیوتر خود نصب کنیم زیرا پیش نیازی برای Genymotion می باشد. اما خود سایت نرم افزار Genymotion ، یک بسته نرم افزاری را قرار داده است که در آن، Oracle VM VirtualBox نیز به همراه Genymotion نصب می شود. برای دانلود آن، به صفحه زیر بروید :


genymotion.com/#!/download

بر روی گزینه Get Genymotion کلیک کنید (دقت کنید که اگر سیستم عامل شما ویندوز است، حتما بر روی لینک موجود در بخش Windows کلیک کنید) :

kelidestan.com_0001433663619M1FZBTij1bywReTLkUiAaxe7z.jpg

صفحه ای به شکل زیر نمایش داده می شود :


kelidestan.com_0001433663619QFVgz47u8phW39wP8gpUJd4mI.jpg

ما باید در سایت genymotion.com ، یک حساب کاربری داشته باشیم، بنابراین بر روی گزینه Create account کلیک می کنیم. صفحه زیر نمایش داده می شود :


kelidestan.com_0001433663619Q4Vo1wOCj0KLkCXD1X8AS6wsQ.jpg

در این صفحه، اطلاعات لازم را در فرم وارد کرده و سپس بر روی گزینه Create account کلیک می کنیم (اطلاعات حساب کاربری را در نزد خود نگه دارید، زیرا در مراحل بعدی به ان نیاز خواهیم داشت). پس از ثبت نام، یک ایمیل برای شما ارسال می شود که باید آن را باز کرده و عملیات فعال سازی حساب کاربری خود را با کلیک بر روی لینک موجود در آن، اجرا نمایید. با کلیک روی لینک موجود در ایمیل، به سایت genymotion.com منتقل می شوید و عملیات فعال سازی حساب کاربری به صورت خودکار اجرا می شود.
بعد از فعال شدن حساب کاربری خود، دوباره به مان صفحه دانلود مراجعه کرده و بر روی گزینه Get Genymotion کلیک کنید. فایل نصب، دانلود خواهد شد.
پس از دانلود فایل نصب، آن را اجرا کنید و مراحل نصب را طی کنید :

kelidestan.com_0001433670356tpIlKdLO9otr4pVsmeKAll02T.jpg

پس از پایان مراحل نصب Genymotion ، پنجره نصب Oracle VM VirtualBox نمایش داده می شود که باید آن را هم نصب نمایید :

kelidestan.com_0001433670356BixlLJiwwS3NrQZZteRr67R2i.jpg

بعد از پایان مراحل نصب، بر روی آیکون برنامه Genymotion کلیک می کنیم تا اجرا شود :


kelidestan.com_0001433670356WJ4vhFpIfopp69SwqCcxj3brm.png
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
پنجره زیر نمایش داده می شود که تذکر می دهد شما هنوز virtual device ای (یک گوشی مجازی برای تست برنامه اندروید) انتخاب نکرده اید و آیا قصد دارید که یک virtual device انتخاب نمایید (اضافه کنید) یا خیر :


kelidestan.com_0001433670748x2SAFcUBDMIHC09QcAxxtKII2.jpg

بنابراین بر روی گزینه Yes کلیک می کنیم. پنجره زیر نمایش داده می شود :


kelidestan.com_0001433670356ZcFF95dPKaxVajCz8QUQRCnk4.jpg

برای اینکه بتوانیم لیست virtual device های قابل انتخاب را ببینیم، ابتدا باید اطلاعات حساب کاربری خود در سایت genymotion.com را در نرم افزار وارد کنیم. برای این منظور، بر روی گزینه Sign in کلیک می کنیم تا پنجره زیر نمایش داده شود :


kelidestan.com_0001433670356Qw9ZLgSkk7Biv1WDDsXxzogKF.png

در این پنجره، اطلاعات حساب کاربری خود را وارد کرده و سپس بر روی گزینه Sign in کلیک می کنیم. دقت کنید که در این مرحله باید به اینترنت متصل باشم زیرا نرم افزار با سرور سایت genymotion.com تبادل اطلاعات می کند تا حساب کاربری تایید شود، نکته مهم این است که گاهی نصب Oracle VM VirtualBox (که در مراحل قبل نصب کردیم)، باعث ایجاد اختلالاتی در شبکه (network) اتصال به اینترنت ما می شود. بنابراین اگر در این مرحله با پیام خطا روبرو شدید، ابتدا اتصال خود به اینترنت (مثلا شبکه wireless آن) را قطع کرده و دوباره به آن متصل شوید و سپس همین مرحله Sign in کردن را تکرار نمایید.
در صورت موفقیت آمیز بودن مرحله Sign in ، لیست virtual device های قابل انتخاب نمایش داده می شود :

kelidestan.com_0001433670356gXsJ7Dp8mmNJYLnPrUkjHpouf.jpg

با کلیک روی هر virtual device ، مشخصات آن نمایش داده می شود :

kelidestan.com_0001433670356kMd2leQysVdKiBF5Xu3z1iIDB.jpg

همچنین با گزینه Device model می توانیم مدل virtual device و با گزینه Android version ، می توانیم نسخه اندروید نصب روی virtual device را مشخص کنیم.
یک virtual device را انتخاب کرده و بر روی گزینه Next کلیک می کنیم. پنجره زیر نمایش داده می شود که در آن می توانید یک نام دلخواه برای virtual device انتخاب کنید :


kelidestan.com_0001433671416APCpKgTxVzCGiWEQr7ksuiuwZ.jpg

سپس بر روی دکمه Next کلیک می کنیم. در این مرحله اطلاعات virtual device از اینترنت دریافت می شود. دقت کنید که ممکن است دوباره پنجره Sign in کردن نمایش داده شود. در صورت عدم وجود مشکل، اطلاعات دانلود می شوند :


kelidestan.com_0001433671416cut45ajjCStO3rX95derW2egl.jpg

صبر می کنیم تا دانلود پایان یابد و سپس بر روی دکمه Finish کلیک می کنیم :

kelidestan.com_0001433672930QkEb6jgu9HDTbKCmP8zma6jRN.jpg

اکنون virtual device مورد نظر در صفحه اصلی نرم افزار Genymotion نمایش داده می شود :


kelidestan.com_0001433672930kdkN96IM9jwOCIHwfDIZgVyOo.jpg

با انتخاب کردن virtual device و کلیک بر روی گزینه Start ، می توانیم virtual device را در یک پنجره جدید مشاهده کنیم (مثل روشن شدن گوشی عادی) :




kelidestan.com_0001433672930NE4Rs0mmT5N75QWRlKUOxMiF0.jpg

نصب یک فایل apk بر روی virtual device :
برای نصب یک فایل apk بر روی virtual device ، ابتدا باید virtual device در حال اجرا باشد، سپس فایل apk را با موس گرفته و به درون پنجره نمایش virtual device برده و کلید موس را رها می کنیم (drag and drop). با این کار، فایل apk به صورت خودکار بر روی virtual device نصب می شود :

kelidestan.com_0001433673951nbGABaxDOltY2jdYI9XrPtrLQ.jpg
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تفاوت بین نسخه اندروید (Android version) و API level و ذکر شماره های متناظر بین آنها

تفاوت بین نسخه اندروید (Android version) و API level و ذکر شماره های متناظر بین آنها

شاید تاکنون برایتان این سوال پیش آمده باشد که تفاوت بین نسخه اندروید (Android version) و API level چیست، زیرا معمولا در گوشی ها، نسخه اندروید (Android version) را ذکر می کنیم، اما هنگامی که یک پروژه اندروید می سازیم، باید در فایل AndroidManifest.xml ، شماره API level را ذکر کنیم (برای مشخصه های minSdkVersion و targetSdkVersion).


واقعیت این است که شماره های API level ، برای توسعه (development) می باشد و تغییرات آنها به صورت داخلی است و برنامه نویسان (توسعه دهندگان - developers) به آن تغییرات توجه دارند، اما شماره اندروید (Android version) برای عموم کاربران (users) می باشد و تغییراتی که در آن وجود دارد، به طور آشکار و قابل درک توسط کاربران (users) است.


در لینک زیر می توانید شماره های متناظر بین نسخه اندروید (Android version) و API level را بیابید (البته گوگل ایرانیان را تحریم کرده و باید با روش های خاصی این صفحه را باز کنید) :



developer.android.com/guide/appendix/api-levels.html

برای راحتی بیشتر شما، من جدول مورد نظر را در این صفحه قرار می دهم (برای دیدن تازه ترین اطلاعات، به همان لینک مراجعه کنید) :

android-279.jpg

همچنین بد نیست که نگاهی به شکل زیر بیندازید تا بتوانید میزان استفاده از نسخه های مختلف اندروید را متوجه بشوید :


android-280.jpg


دقت داشته باشید که اطلاعات شکل فوق، تنها برای نسخه 2.2 به بالا می باشد، زیرا این اطلاعات توسط فروشگاه اندروید جدید گوگل (Google Play Store) جمع آوری شده است که تنها نسخه 2.2 به بالا را پشتیبانی می کند. البته نشان داده شده که نسخه های پایین تر از 2.2 ، تنها 1 درصد از کل گوشی های اندروید را به خود اختصاص داده اند.
 
بالا