مبلغی انتخاب کنید :




×
[تخصصی] بررسی و آشنایی با ساختار apk
آيا ميدانيد؟
کاربر ویژه شوید !

شارژ موبايل تبلیغات

^ Back to Top
اطلاع رسانی های سیاره پی دی ای
دسترسی به بخش کاربری سیاره پی دی ای
مشخصات گوشی موردنظر خود را بصورت زنده ببینید!
نمایش نتایج: از 1 به 1 از 1

موضوع: [تخصصی] بررسی و آشنایی با ساختار apk

  1. Top | #1


    تاریخ عضویت
    May 2012
    عنوان کاربر
    مدیر ارشد انجمن
    شماره عضويت
    6
    محل سکونت
    بوشهر
    نوشته ها
    2,374
    می پسندم
    1,573
    سپاس از شما
    8,720 بار در 2,214 پست
    اپراتور
    Iran
    مدال ها

    مدال اول مدال دوم مدال سوم مدال چهارم مدال پنجم
    اطلاعات کامپیوتر
    میزان امتیاز
    365

    [تخصصی] بررسی و آشنایی با ساختار apk

    این مطالب طبق تجربه ی شخصی نوشته شده است، به مرور زمان اصلاح و کامل خواهد شد.

    این مطلب هنوز کامل نیست.

    تیم آمستریس
    ------------------------------------------------------------------------------

    آیا میتوانیم هر فایلی را که خواستیم به فایل apk اضافه کنیم؟

    اضافه کردن فایل ها در اندروید، ساختار زنجیره واری دارد.

    در فایل های Apk تمامی فایل ها و مشخصات دارای کد هستند، این کدها با ساختار هگزادسیمال کد بندی شده اند ( ساختار 16 تایی).

    برای توضیح سئوال بالا یه مثال میزنم:
    فرض کنید می خواهید یک فایل گرافیک png را به فایل apk اضافه کنید.
    ابتدا باید فایل png مورد نظر را برای رزولوشن صفحه ی موبایل یا وسیله ی مورد نظرتان طراحی کنید.
    کد:
    HDPI
    MDPI
    X-HDPI
    LDPI
    سپس فایل مورد نظر را درون فولدر drawable-xxxx کپی بزنید.
    xxxx - مشخصات dpi وسیله ی مورد نظر شماست.

    پس از کپی فایل درون فولدر drawable ، باید آنرا در ساختار کلی فایل Apk معرفی کنید. به این منظور باید آنرا درون فایل public.xml معرفی کنید.
    کد:
    xxxxx.apk\res\values\public.xml
    فایل public.xml نشان دهنده ی تمام عناصر درون Apk میباشد، که هر یک دارای کد مخصوصی میباشد. در سیستم عامل اندروید، فایل ها بوسیله ی کدهای معرفی شده در public.xml ردیابی میشوند، نام ها تاثیری ندارند.

    در فایل public.xml، معمولا ساختار زیر تعریف میشوند:
    چندتا نمونه را ببینید: فایل Contacts.apk

    کد:
    <public type="attr" name="mimeType" id="0x7f010000" />
    کد:
     <public type="drawable" name="btn_create" id="0x7f02000c" />
    کد:
    <public type="layout" name="act_display_groups" id="0x7f030000" />
    کد:
    <public type="anim" name="quickcontact" id="0x7f040000"  />
    کد:
    <public type="xml" name="searchable"  id="0x7f050000" />
    کد:
    <public type="array"  name="dialog_items" id="0x7f060000" />
    کد:
    <public  type="id" name="left" id="0x7f070000" />
    کد:
    <public  type="color" name="textColorIconOverlay" id="0x7f080000"  />
    کد:
    <public type="dimen"  name="linked_contact_icon_size" id="0x7f090000"  />
    کد:
    <public type="string"  name="config_import_vcard_type" id="0x7f0b0000"  />
    کد:
    <public type="bool"  name="config_allow_import_from_sdcard" id="0x7f0a0000"  />
    کد:
    <public type="integer"  name="config_export_file_min_index" id="0x7f0c0000"  />
    کد:
    <public type="plurals" name="groupDescrip"  id="0x7f0d0000" />
    کد:
    <public type="style"  name="DialtactsTheme" id="0x7f0e0000" />
    کد:
    <public  type="menu" name="edit" id="0x7f0f0000" />
    در کدهای بالا، تمامی نوع های فایلی که برای Contacts.apk مشخص شده بود رو گذاشتم، تا به بررسی اونا بپردازیم.

    همونطور که میبینیم نوع فایل ها با public type معرفی میشوند.
    که از نوشته های بالا میبینیم که نوع فایل هایی که در این نرم افزار استفاده شده است به شرح زیر است:

    attr : بیشتر برای کد بندی پارامترهای معرفی شده بکار میرود. مشخصات این فایل ها از آدرس زیر قابل ردیابی است:
    کد:
    \res\values\attrs.xml
    drawable : برای کدبندی فایل های گرافیکی بکار میرود. فایل های گرافیکی درون فولدر های
    drawable و مقادیر تعریف شده در فایل
    کد:
    \res\values\drawables.xml
    قرار دارند.

    array : مثل مقادیر Attr اطلاع زیادی ازش ندارم. آدرس فایل های تعریف شده درون فایل زیر میباشند.
    کد:
    \res\values\arrays.xml
    id :برای کد بندی مشخصات بکار رفته در نرم افزار استفاده میشوند.

    color: مربوط به رنگ های تعریف شده در فایل زیر میباشند:
    کد:
    \res\values\colors.xml
    dimen : برای کد بندی اندازه هایی که در فایل زیر تعریف شده اند بکار میرود.
    کد:
    \res\values\dimens.xml
    layout : برای کدبندی لایه ها و ساختار اینترفیس نرم افزار بکار میرود. برای معرفی فایل های درون فولدرهای Layout بکار میرود.
    فولدر های Layout میتوانند بسته به اندازه های رزولوشن از یک تا چندین فولدر باشند. بستگی به قابلیت های نرم افزار دارد. ترتیب قرار گیری فایل های گرافیکی نرم افزار در این فولدر ها مشخص میشود.
    مثلا برای استتس بار ، ترتیب قرار گیری Toggles .
    کد:
    \res\layout
    anim : کد بندی انیمیشن هایی که برای نرم افزار تعریف میشوند (بیشتر برای ترانزیشن های صفحات بکار میرود.) فایل های تعریف شده درون فولدر anim هستند.


    xml : فایل های xml که درون فولدر xml تعریف میشوند. فایل ها در فولدر xml هستند.

    string : برای کد بندی استرینگ ها بکار میرود، استرینگ چیست؟
    استرینگ ها برای تعریف نام ها بیشتر کاربرد دارند، مثلا نام نرم افزار، نام منو ها، نام دکمه ها و هر متغییر دیگه ای که همراه با نام باشد، شما هر نوشته و یا متنی را که در نرم افزار میبینید در فایل استرینگ تعریف میشود.

    استرینگ ها در فایل زیر نوشته میشوند.
    کد:
    res/values/strings.xml
    در این مورد بیشتر توضیح خواهم داد.

    bool: برای کد بندی bool های تعریف شده در نرم افزار بکار میرود، شما میتوانید لیست bool ها را از فایل زیر ببینید:
    کد:
    res/values/bools.xml
    integer : برای تعریف مقادیر و داده های تعریف شده در فایل های xml بکار میرود.
    لیست اینتیجر ها را از فایل زیر میتوانید ببینید:
    کد:
    res/values/integers.xml
    plurals : برای کد بندی پلورلز بکار میرود، اطلاع دقیق ندارم. لیست پلورلز در فایل زیر است:
    کد:
    res/values/plurals.xml
    style : برای کد بندی استایل های طراحی شده (تم) در نرم افزار بکار میرود.
    تنظیمات استایل ها در فایل زیر گنجانده شده است:
    کد:
    res/values/styles.xml
    --------------------------------------------------
    فایل ها به چه ترتیبی کد بندی میشوند؟
    همونطور هم که در اول این تاپیک گفتم، فایل ها به ترتیب هگزادسیمال کدبندی میشوند:

    هگزادسیمال چیست؟
    کد بندی 16 تایی است، که به ترتیب از حروف زیر تشکیل میشود:

    کد:
    0 >1 >2 > 3> 4> 5> 6> 7> 8> 9> a> b> c >d >e >f
    ترتیب کد بندی در public.xml چگونه هست؟

    به id های تعریف شده در هر public type دقت کنید:
    کد:
     <public type="attr" name="mimeType" id="0x7f010000" />
    مقدار id = 0x7f010000 تعریف شده برای نوع attr میباشد.

    معمولا چهار یا پنج نوشته ی اول، ثابت هستند.
    نوع public type از حرف ششم شروع شده و برای public type بعدی به مقدار بالاتر ارتقا مییابد.

    به حروف ششم پابلیک تایپ های تعریف شده دقت کنید:
    کد:
    <public type="attr" name="mimeType" id="0x7f010000" />
    <public type="drawable" name="btn_create" id="0x7f020000" />
    <public type="layout" name="act_display_groups" id="0x7f030000" />
    <public type="anim" name="quickcontact" id="0x7f040000" />
    <public type="xml" name="searchable" id="0x7f050000" />
    <public type="array" name="dialog_items" id="0x7f060000" />
    <public type="id" name="left" id="0x7f070000" />
    <public type="color" name="textColorIconOverlay" id="0x7f080000" />
    <public type="dimen" name="linked_contact_icon_size" id="0x7f090000" />
    <public type="bool" name="config_allow_import_from_sdcard" id="0x7f0a0000" />
    <public type="string" name="config_import_vcard_type" id="0x7f0b0000" />
    <public type="integer" name="config_export_file_min_index" id="0x7f0c0000" />
    <public type="plurals" name="groupDescrip" id="0x7f0d0000" />
    <public type="style" name="DialtactsTheme" id="0x7f0e0000" />
    <public type="menu" name="edit" id="0x7f0f0000" />
    و ......

    با معرفی هر گونه type جدید، باید مقدار فوق را یک درجه بالاتر تعریف کنیم.


    تمامی فایل ها از 0000 شروع میشوند و تا آخرین مقدار همان TYPE فایل ادامه میابند.

    حالا این شرایط تعریف نوع PUBLIC TYPE بود، حالا در اینجا نحوه ی اضافه کردن فایل های دیگر از یک نوع خاص public type را یاد میگیریم:


    بالفرض ما میخواهیم ، 3 تا فایل جدید به drawable ها اضافه کنیم:
    3 تا فایل اضافه شونده باید به آخرین مقدار تعریف شده در drawable ها اضافه شود.

    در اینجا فرض میکنیم، که آخرین فایل تعریف شده با همان id اولیه است.

    برای مثال میخواهیم 3 فایل جدید به نام های زیر رو که برای رزولوشن hdpi ساخته ایم را به public.xml اضافه کنیم:
    کد:
    amestris_01.png
    amestris_02.png
    amestris_03.png
    میدانیم که id تعریف شده برای drawables مقدار زیر است:
    کد:
    <public type="drawable" name="btn_create" id="0x7f020000" />
    برای افزودن فایل های بعدی به طریق زیر عمل میکنیم:
    کد:
    <public type="drawable" name="btn_create" id="0x7f020000" />
    <public type="drawable" name="amestris_01" id="0x7f020001" />
    <public type="drawable" name="amestris_02" id="0x7f020002" />
    <public type="drawable" name="amestris_02" id="0x7f020003" />
    همین روند ادامه خواهد داشت.....

    حالا بالفرض میخواهیم ، یک استرینگ جدید تعریف کینم:

    برای اینکار ابتدا فایل strings.xml را باز میکنیم، و سپس استرینگ جدیدی را به همان ساختاری که تعریف شده را تعریف میکنیم:

    بالفرض میخواهیم برای string با نام amestris عبارت Amestris Team را اضافه کنیم.

    در فایل strings.xml باز شده، مقدار زیر را اضافه میکنیم:
    کد:
    <string name="amestris">Amestris Team</string>
    این عبارت نشان میدهد که هر جا string به نام amestris تعریف شود، عبارت Amestris Team نشان داده خواهد شد.

    حالا باید این استرینگ تعریف شده را به public.xml اضفه کنیم.
    به این منظور فایل public.xml را باز میکنیم و در قسمت strings اینگونه عمل میکنیم:

    میدانیم که آی دی استرینگ ها اینگونه هست:
    کد:
    <public type="string" name="config_import_vcard_type"  id="0x7f0b0000" />
    حالا ما استرینگ آمستریس را اضافه میکنیم:
    کد:
    <public type="string" name="config_import_vcard_type" id="0x7f0b0000" />
    <public type="string" name="amestris" id="0x7f0b0001" />
    فایل را ذخیره میکنیم.



    تیم آمستریس

    موضوعات مشابه:

    کاربران عزیز، لطفا سئوالات را در تاپیک مربوط به خودشون بپرسید ، از طریق پیام خصوصی هیچ گونه جوابی داده نخواهد شد.

    با حمایت مالی از انجمن ، شما هم با ما در بهبود و پیشرفت سایت سهیم باشید.


    لظفا برای فرستادن فایل های متنی از قبیل log و پیغام های خطای طولانی ،از HasteBin یا PasteBin استفاده کنید.

    9 کاربر پست M_Javad_Nazari عزیز را پسندیده اند .



  2. # ADS

کلمات کلیدی این موضوع

بوک مارک ها

بوک مارک ها

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •