ساختار (ANATOMY) برنامه اندروید
بسم الله الرحمن الرحیم
معماری برنامه های اندروید
فصل اول - بخش ششم
حال که شما اولین برنامه اندروید را ایجاد کرده اید زمان آ ن رسید است که ساختار یک پروژه اندروید را شرح دهیم. اولین قدم را با شرح فایل و پوشه ها که در Package Explorer وجود دارد شروع میکنیم.
Src
شامل فایل های که با پسوند .Java دارند می باشد.در این مثال یک فایل وجود داردکه mainActivity می باشد. که این فایل , فایل Source مربوط به activity برنامه می باشد. شما کد برنامه را در این فایل می نویسید.فایل java در زیر شاخه PackageName برنامه شما می باشد که در این مثال com.myadroid.helloandroid می باشد.
gen
شامل فایل R.java می باشد.که یک فایل تولید شده کامپایلر می باشد که به تمام منابع (Resource ) های برنامه اشاره دارد. به هیچ عنوان شما نباید این فایل را تغییر دهید.تمام منابع برنامه به صورت اتوماتیک در این کلاس اضافه می شود. که شما برای دسترسی به آن ها از این کلاس استفاده می کنید.
Android4.0
شامل یک فایل می باشد که تمام Class Library های که شما نیاز دارید در برنامه استفاده کنید را شامل می شود.
assets
(به معنی دارایی می باشد) شامل تمام asses های مربوط به برنامه می باشد. شمال فایل های XML و فایل های متنی و پایگاه داده می باشد.
Bin
شامل فایل های است که AVD در طول اجرای پروسس ایجاد می کند و فایل apk(Android Package) را شامل می شود. فایل apk یک application binary از برنامه کاربردی اندروید می باشد و شامل تمام چیزهای است که یک برنامه کاربردی اندروید نیاز دارد تا اجرا شود.
res
شامل تمام Resource های که در برنامه استفاده می شود می باشد که شامل چندین پوشه می باشد که در فصل 3 آن را شرح می دهیم.
AndroidManifest.xml
فایل manifest برنامه شما می باشد شما در اینجا تمام permission ها و اطلاعات مربوط به برنامه در این فایل تعیین می شود که در فصل 2 جزئیات بیشتری را شرح می دهیم.
فایل Activity_main.xml
شامل User Interface برنامه شما می باشد. دستورات زیر را نگاه کنید
<EditText
android:text="@string/hello"
string در آنجا به فایل String.Xml اشاره می کند که در res\value قرار دارد. بنابراین @string/hello اشاره دارد به String ایی به نام hello که در اینجا hello android میباشد.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloAndroid</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="hello"> HelloAndroid</string>
</resources>
هر زمان که شما "@string/hello"را به کار گرفتید اشاره به HelloAndroid دارد.
به شما پیشنهاد می کنم که تمام متن های خود را در String.Xml ذخیره کنید و توسط @String به انها دستیابی داشته باشید. در مواردی که شما نیاز دارید برنامه را به زبان های دیگر در بیاورید، کافی است یک کپی از محتوای فایل بگیرید و مقادیر آن را تغییر دهید
یکی دیگر از مهمترین فایل ها, فایل AndroidManifest.xml می باشد و در زیر محتوای فایل قابل مشاهده است :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myandroid.helloandroid"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="14" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.myandroid.helloandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
این فایل شامل اطلاعات مربوط به برنامه می باشد
Packagename
برنامه را تعرف می کند مانند com.myandroid.helloandroid
شماره نسخه
برنامه را مشخص می کند که در اینجا 1 می باشد از طریق attribute با نام android:versionCode این مقدار برای انکه بفهمیم نسخه چندم برنامه می باشد استفاد ه می شود می توانیم از آن برای اینکه متوجه شویم برنامه نیاز به Upgrade دارد یا خیر استفاده کنیم.
نام نسخه برنامه (version name)
که در اینجا 1.0 می باشد از طریق attribute با نام android:versionName مشخص می شود. این مقدار برای نمایش به کاربر می باشد. این مقدار باید ساختار به شکل <major>.<minor>.<point> داشته باشد
Attribute ایی با نام android:minSdkVersion
که elemen ایی با نام <uses-sdk> را دارد که کمترین نسخه از سیستم عامل اندروید را مشخص می کند که برنامه می تواند بر روی آن اجرا شود.
برنامه از تصویری به نام ic_launcher.png استفاد می کند که در پوشه drawable می باشد.
نام برنامه که string ایی به نام app_name می باشد که در فایل String.Xml تعریف شده است.
یک activity وجود دارد که توسط فایل MainActivity.java نمایش داده می شود. این برچسب activity های که در یک برنامه یکسان می باشند را نشان می دهد.
درون تعریف یک activity یک element به نام <intent-filter> وجود دارد.
Element ایی با نام action برای intent-filter با نام android.intent.action.MAIN که activity که نقطه شروع برنامه می باشد را مشخص میکند به عبارتی دیگر اولین activity که به کاربر نمایش داده می شود می باشد.
category برای intent-filter که در فصل 2 شرح می دهیم.
زمانی که شما یک فایل یا پوشه ی را به برنامه اضافه می کنید Eclipse به صورت اتوماتیک محتوای R.java را تولید می کنید که محتوای آن شامل :
/* AUTO-GENERATED FILE. DO NOT MODIFY
* This class was automatically generated by the
* aapt tool from the resource data it found. I
* should not be modified by hand.
*/
package com.myandroid.helloandroid;
public final class R
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int editText1=0x7f070000;
public static final int menu_settings=0x7f070001;
}
public static final class layout {
public static final int activity_main=0x7f030000;
}
public static final class menu {
public static final int activity_main=0x7f060000;
}
public static final class string {
public static final int app_name=0x7f040000
public static final int hello=0x7f040003;
public static final int hello_world=0x7f040001;
public static final int menu_settings=0x7f040002
public static final class style {
public static final int AppTheme=0x7f050001;
}
}
و سرانجام کدی که بین activity و UI آن (activity_main.xml) ارتباط برقرار می کند متدی به نام setContentView می باشد که در فایل MainActivity.java قرار دارد.
package com.myandroid.helloandroid;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
R.layout.activity_main اشاره به فایل activity_main.xml دارد که در پوشه Res\layout قرار دارد.
نام فایل ها به صورت اتوماتیک در فایل R.java ذخیره می شوند. متد onCreate یکی از چندین متدی می باشد که در زمان Load یک activity اجرا می شود.