דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. אנדרואיד - כללי
  3. הפורום למפתחים
  4. מדריך | מבנה קובץ APK

מדריך | מבנה קובץ APK

מתוזמן נעוץ נעול הועבר הפורום למפתחים
7 פוסטים 5 כותבים 763 צפיות 9 Watching
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מישהו12מ מנותק
    מישהו12מ מנותק
    מישהו12
    מדריכים
    כתב נערך לאחרונה על ידי
    #1

    כל הזכויות שמורות. אין להעתיק!

    כיוון שהרבה כאן שאלו על עריכת אפליקציות, וכתבתי כמה וכמה פעמים שזה עסק מורכב ודורש היכרות עם מבנה הAPK, ואין דרך אחת, החלטתי לכתוב מדריך.
    אבל...
    זה עסק מסובך, וארוך, אז לא היה לי כוח לכתוב לבד.
    ביקשתי מצ'אט GPT, וערכתי את מה שהוא כתב לפי הידע שלי. (וזה המון עבודה. התרשימים, העריכה, הדיוק שלו, להפנות אותו לכתוב על הדברים הנצרכים)

    אז בואו נתחיל.

    שלב ראשון - מבנה קובץ הAPK

    16b481f1-1af0-436e-acaa-9ab95af00e09-image.png
    קבצים מסומנים בכחול, תיקיות בכתום

    AndroidManifest.xml: קובץ זה מכיל מידע קריטי על האפליקציה כמו שם החבילה, פעילויות (activities), הרשאות (permissions) ועוד.

    META-INF/: תיקיה זו מכילה קבצים הקשורים לאימות והחתימה הדיגיטלית של האפליקציה.

    MANIFEST.MF: קובץ זה מכיל רשימה של כל הקבצים ב-APK עם חתימותיהם.
    CERT.RSA ו-CERT.SF: קבצים אלו מכילים את החתימה הדיגיטלית של האפליקציה.

    lib/: תיקיה זו מכילה ספריות קוד מקוריות (native libraries) שתומכות בארכיטקטורות שונות של מעבדים כמו ARM, x86 ועוד.
    assets/: תיקיה זו מכילה קבצים נוספים שמשתמשי האפליקציה יכולים לגשת אליהם בזמן ריצה.

    res/: תיקיה זו מכילה את כל משאבי האפליקציה כמו קבצי תמונה, קבצי XML, פריסות (layouts) ועוד.

    classes.dex: קובץ זה מכיל את הקוד הבינארי של האפליקציה בפורמט Dalvik Executable (DEX). או בקיצור - SMALI.

    resources.arsc: קובץ זה מכיל מידע על המשאבים של האפליקציה בצורה מכווצת. (ועורכי הAPK מבוססי APKTOOL, מחלצים את התיקיות והקבצים שבתוכו לתוך תיקיית res)

    שלב שני - תיקיות lib וassets

    תיקיות אלו לא נמצאות בכל האפליקציות, בתיקיית lib יהיו ספריות קוד שבהם האפליקציה עושה שימוש.
    בתיקיית assets - קבצים חיצוניים, למשל קבצי טקסט, שהאפליקציה עושה בהם שימוש.

    שלב שלישי - תיקית res

    c7959b7f-0c6a-4f95-8153-042108ce4c7c-image.png

    תיקיית res (קיצור של Resources) מכילה את כל המשאבים הסטטיים שהאפליקציה שלך משתמשת בהם. המשאבים האלו יכולים לכלול פריסות ממשק משתמש, מחרוזות, תמונות, ערכים שונים ועוד. להלן פירוט על התיקיות השונות הנמצאות בתיקיית res ועל סוגי הקבצים שהן מכילות:

    שימו לב! אני מתאר כאן את תיקיית res לאחר פריקת קובץ הresources.arsc לתוכה. בMT MANAGER התיקיות השייכות אליו יהיו בתוכו, ולא בתיקיית res.

    1. res/layout
      תיקיה זו מכילה קבצי XML המגדירים את הפריסות (layouts) של המסכים באפליקציה. כל קובץ XML מגדיר את מבנה רכיבי הממשק על המסך, בהתאם לאקטיביטי אליו הוא משוייך.

    דוגמה לקובץ פריסה (activity_main.xml):

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!" />
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click Me" />
    </LinearLayout>
    
    1. res/values
      תיקיה זו מכילה קבצי XML המגדירים ערכים שונים כמו מחרוזות, צבעים, מימדים, סגנונות ועוד.

    דוגמאות לקבצים בתיקיה res/values:
    בתוך תיקיה זו, יהיו תיקיות של השפות השונות, ובתוכם קבצי הXML השונים.
    values-en - אנגלית
    values-ar - ערבית
    values-iw - עברית.
    לפעמים מוסיפים גם את האיזור
    values-en-rUS - אנגלית ארה"ב
    values-iw-rIL - עברית ישראל

    strings.xml: מכיל מחרוזות טקסט. (קבצי השפה)

    <resources>
        <string name="app_name">MyApp</string>
        <string name="hello_world">Hello, World!</string>
    </resources>
    

    colors.xml: מכיל הגדרות צבעים.

    
    <resources>
        <color name="primaryColor">#FF6200EE</color>
        <color name="secondaryColor">#FF03DAC5</color>
    </resources>
    
    

    dimens.xml: מכיל הגדרות מימדים.

    <resources>
        <dimen name="default_margin">16dp</dimen>
        <dimen name="default_text_size">14sp</dimen>
    </resources>
    

    styles.xml: מכיל הגדרות סגנונות.

    <resources>
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorPrimary">@color/primaryColor</item>
            <item name="colorPrimaryDark">@color/primaryColorDark</item>
            <item name="colorAccent">@color/accentColor</item>
        </style>
    </resources>
    
    1. res/drawable
      תיקיה זו מכילה קבצי גרפיקה כמו תמונות (PNG, JPG) וקבצי XML המגדירים צורות וציורים מורכבים.

    דוגמה לקובץ צורה (shape.xml):

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="#FF6200EE"/>
        <corners android:radius="8dp"/>
    </shape>
    
    1. res/mipmap
      תיקיה זו מכילה אייקונים של האפליקציה בגדלים שונים עבור מכשירים שונים. בדרך כלל ישנם תת-תיקיות כמו mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi ו-mipmap-xxxhdpi.

    2. res/anim ו-res/animator
      תיקיות אלו מכילות קבצי XML המגדירים אנימציות ואנימטורים שמשתמשים בהם באפליקציה.

    דוגמה לקובץ אנימציה (fade_in.xml):

    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="500"/>
    
    1. res/menu
      תיקיה זו מכילה קבצי XML המגדירים תפריטים (menus) שמופיעים באפליקציה, כגון תפריטי אפשרויות ותפריטי קונטקסט.

    דוגמה לקובץ תפריט (menu_main.xml):

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:id="@+id/action_settings"
            android:title="@string/action_settings"
            android:orderInCategory="100"
            android:showAsAction="never" />
    </menu>
    
    1. res/xml
      תיקיה זו מכילה קבצי XML כלליים שניתן להשתמש בהם להגדרות שונות של האפליקציה, כמו תצורות, הגדרות אבטחה ועוד.

    דוגמה לקובץ תצורה (preferences.xml):

    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <EditTextPreference
            android:key="username"
            android:title="Username"
            android:summary="Enter your username" />
    </PreferenceScreen>
    
    1. res/raw
      תיקיה זו מכילה קבצים גולמיים (raw) שאינם מפוענחים מראש. ניתן להשתמש בקבצים אלו כקבצי נתונים שמישומים באפליקציה, כמו קבצי אודיו, וידאו, טקסט ועוד.

    דוגמה לשימוש בקובץ גולמי:

    <mediaPlayer>
        android:src="@raw/sample_audio"
    </mediaPlayer>
    

    שלב רביעי - קובץ הdex

    השלב המסובך ביותר, ולא הצלחתי להוציא מChatGPT הסבר נוח.
    בגדול, אם נפרק אותו עם APK TOOL, או עם DEX EDITOR PLUS בMT MANAGER.
    נגיע לקוד הsmali של אקטיבטי לפי הנתיב שלו.
    למשל כאן מסומן הקובץ של האקטיביטי MmsApp באפליקציה שהPacakgeName הוא com.android.mms
    a1d72357-5f5d-4cc0-a9be-b41784e7a980-image.png

    הבלוג שלי
    https://aiv-dev.com/he-IL/

    ד עם ישראל חייע מ 3 תגובות תגובה אחרונה
    50
    • מישהו12מ מישהו12

      כל הזכויות שמורות. אין להעתיק!

      כיוון שהרבה כאן שאלו על עריכת אפליקציות, וכתבתי כמה וכמה פעמים שזה עסק מורכב ודורש היכרות עם מבנה הAPK, ואין דרך אחת, החלטתי לכתוב מדריך.
      אבל...
      זה עסק מסובך, וארוך, אז לא היה לי כוח לכתוב לבד.
      ביקשתי מצ'אט GPT, וערכתי את מה שהוא כתב לפי הידע שלי. (וזה המון עבודה. התרשימים, העריכה, הדיוק שלו, להפנות אותו לכתוב על הדברים הנצרכים)

      אז בואו נתחיל.

      שלב ראשון - מבנה קובץ הAPK

      16b481f1-1af0-436e-acaa-9ab95af00e09-image.png
      קבצים מסומנים בכחול, תיקיות בכתום

      AndroidManifest.xml: קובץ זה מכיל מידע קריטי על האפליקציה כמו שם החבילה, פעילויות (activities), הרשאות (permissions) ועוד.

      META-INF/: תיקיה זו מכילה קבצים הקשורים לאימות והחתימה הדיגיטלית של האפליקציה.

      MANIFEST.MF: קובץ זה מכיל רשימה של כל הקבצים ב-APK עם חתימותיהם.
      CERT.RSA ו-CERT.SF: קבצים אלו מכילים את החתימה הדיגיטלית של האפליקציה.

      lib/: תיקיה זו מכילה ספריות קוד מקוריות (native libraries) שתומכות בארכיטקטורות שונות של מעבדים כמו ARM, x86 ועוד.
      assets/: תיקיה זו מכילה קבצים נוספים שמשתמשי האפליקציה יכולים לגשת אליהם בזמן ריצה.

      res/: תיקיה זו מכילה את כל משאבי האפליקציה כמו קבצי תמונה, קבצי XML, פריסות (layouts) ועוד.

      classes.dex: קובץ זה מכיל את הקוד הבינארי של האפליקציה בפורמט Dalvik Executable (DEX). או בקיצור - SMALI.

      resources.arsc: קובץ זה מכיל מידע על המשאבים של האפליקציה בצורה מכווצת. (ועורכי הAPK מבוססי APKTOOL, מחלצים את התיקיות והקבצים שבתוכו לתוך תיקיית res)

      שלב שני - תיקיות lib וassets

      תיקיות אלו לא נמצאות בכל האפליקציות, בתיקיית lib יהיו ספריות קוד שבהם האפליקציה עושה שימוש.
      בתיקיית assets - קבצים חיצוניים, למשל קבצי טקסט, שהאפליקציה עושה בהם שימוש.

      שלב שלישי - תיקית res

      c7959b7f-0c6a-4f95-8153-042108ce4c7c-image.png

      תיקיית res (קיצור של Resources) מכילה את כל המשאבים הסטטיים שהאפליקציה שלך משתמשת בהם. המשאבים האלו יכולים לכלול פריסות ממשק משתמש, מחרוזות, תמונות, ערכים שונים ועוד. להלן פירוט על התיקיות השונות הנמצאות בתיקיית res ועל סוגי הקבצים שהן מכילות:

      שימו לב! אני מתאר כאן את תיקיית res לאחר פריקת קובץ הresources.arsc לתוכה. בMT MANAGER התיקיות השייכות אליו יהיו בתוכו, ולא בתיקיית res.

      1. res/layout
        תיקיה זו מכילה קבצי XML המגדירים את הפריסות (layouts) של המסכים באפליקציה. כל קובץ XML מגדיר את מבנה רכיבי הממשק על המסך, בהתאם לאקטיביטי אליו הוא משוייך.

      דוגמה לקובץ פריסה (activity_main.xml):

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
      
          <TextView
              android:id="@+id/textView"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello World!" />
      
          <Button
              android:id="@+id/button"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Click Me" />
      </LinearLayout>
      
      1. res/values
        תיקיה זו מכילה קבצי XML המגדירים ערכים שונים כמו מחרוזות, צבעים, מימדים, סגנונות ועוד.

      דוגמאות לקבצים בתיקיה res/values:
      בתוך תיקיה זו, יהיו תיקיות של השפות השונות, ובתוכם קבצי הXML השונים.
      values-en - אנגלית
      values-ar - ערבית
      values-iw - עברית.
      לפעמים מוסיפים גם את האיזור
      values-en-rUS - אנגלית ארה"ב
      values-iw-rIL - עברית ישראל

      strings.xml: מכיל מחרוזות טקסט. (קבצי השפה)

      <resources>
          <string name="app_name">MyApp</string>
          <string name="hello_world">Hello, World!</string>
      </resources>
      

      colors.xml: מכיל הגדרות צבעים.

      
      <resources>
          <color name="primaryColor">#FF6200EE</color>
          <color name="secondaryColor">#FF03DAC5</color>
      </resources>
      
      

      dimens.xml: מכיל הגדרות מימדים.

      <resources>
          <dimen name="default_margin">16dp</dimen>
          <dimen name="default_text_size">14sp</dimen>
      </resources>
      

      styles.xml: מכיל הגדרות סגנונות.

      <resources>
          <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
              <item name="colorPrimary">@color/primaryColor</item>
              <item name="colorPrimaryDark">@color/primaryColorDark</item>
              <item name="colorAccent">@color/accentColor</item>
          </style>
      </resources>
      
      1. res/drawable
        תיקיה זו מכילה קבצי גרפיקה כמו תמונות (PNG, JPG) וקבצי XML המגדירים צורות וציורים מורכבים.

      דוגמה לקובץ צורה (shape.xml):

      <shape xmlns:android="http://schemas.android.com/apk/res/android">
          <solid android:color="#FF6200EE"/>
          <corners android:radius="8dp"/>
      </shape>
      
      1. res/mipmap
        תיקיה זו מכילה אייקונים של האפליקציה בגדלים שונים עבור מכשירים שונים. בדרך כלל ישנם תת-תיקיות כמו mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi ו-mipmap-xxxhdpi.

      2. res/anim ו-res/animator
        תיקיות אלו מכילות קבצי XML המגדירים אנימציות ואנימטורים שמשתמשים בהם באפליקציה.

      דוגמה לקובץ אנימציה (fade_in.xml):

      <alpha xmlns:android="http://schemas.android.com/apk/res/android"
          android:fromAlpha="0.0"
          android:toAlpha="1.0"
          android:duration="500"/>
      
      1. res/menu
        תיקיה זו מכילה קבצי XML המגדירים תפריטים (menus) שמופיעים באפליקציה, כגון תפריטי אפשרויות ותפריטי קונטקסט.

      דוגמה לקובץ תפריט (menu_main.xml):

      <menu xmlns:android="http://schemas.android.com/apk/res/android">
          <item
              android:id="@+id/action_settings"
              android:title="@string/action_settings"
              android:orderInCategory="100"
              android:showAsAction="never" />
      </menu>
      
      1. res/xml
        תיקיה זו מכילה קבצי XML כלליים שניתן להשתמש בהם להגדרות שונות של האפליקציה, כמו תצורות, הגדרות אבטחה ועוד.

      דוגמה לקובץ תצורה (preferences.xml):

      <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
          <EditTextPreference
              android:key="username"
              android:title="Username"
              android:summary="Enter your username" />
      </PreferenceScreen>
      
      1. res/raw
        תיקיה זו מכילה קבצים גולמיים (raw) שאינם מפוענחים מראש. ניתן להשתמש בקבצים אלו כקבצי נתונים שמישומים באפליקציה, כמו קבצי אודיו, וידאו, טקסט ועוד.

      דוגמה לשימוש בקובץ גולמי:

      <mediaPlayer>
          android:src="@raw/sample_audio"
      </mediaPlayer>
      

      שלב רביעי - קובץ הdex

      השלב המסובך ביותר, ולא הצלחתי להוציא מChatGPT הסבר נוח.
      בגדול, אם נפרק אותו עם APK TOOL, או עם DEX EDITOR PLUS בMT MANAGER.
      נגיע לקוד הsmali של אקטיבטי לפי הנתיב שלו.
      למשל כאן מסומן הקובץ של האקטיביטי MmsApp באפליקציה שהPacakgeName הוא com.android.mms
      a1d72357-5f5d-4cc0-a9be-b41784e7a980-image.png

      ד מנותק
      ד מנותק
      דודי ענהאל
      כתב נערך לאחרונה על ידי דודי ענהאל
      #2

      @מישהו12 מושלם!!! תודה רבה רבה!!!
      ניתן יהיה לשאול כאן שאלות?

      מישהו12מ תגובה 1 תגובה אחרונה
      0
      • ד דודי ענהאל

        @מישהו12 מושלם!!! תודה רבה רבה!!!
        ניתן יהיה לשאול כאן שאלות?

        מישהו12מ מנותק
        מישהו12מ מנותק
        מישהו12
        מדריכים
        כתב נערך לאחרונה על ידי
        #3

        @דודי-ענהאל למה לא?

        הבלוג שלי
        https://aiv-dev.com/he-IL/

        ב תגובה 1 תגובה אחרונה
        1
        • מישהו12מ מישהו12

          @דודי-ענהאל למה לא?

          ב מנותק
          ב מנותק
          בן ציון
          כתב נערך לאחרונה על ידי
          #4

          @מישהו12
          אולי לעשות תגובות על המדריך בנפרד ולנעול את המדריך
          כמו שיש בהרבה מדריכים
          נראה לי שיהיה יותר מסודר

          תגובה 1 תגובה אחרונה
          2
          • מישהו12מ מישהו12

            כל הזכויות שמורות. אין להעתיק!

            כיוון שהרבה כאן שאלו על עריכת אפליקציות, וכתבתי כמה וכמה פעמים שזה עסק מורכב ודורש היכרות עם מבנה הAPK, ואין דרך אחת, החלטתי לכתוב מדריך.
            אבל...
            זה עסק מסובך, וארוך, אז לא היה לי כוח לכתוב לבד.
            ביקשתי מצ'אט GPT, וערכתי את מה שהוא כתב לפי הידע שלי. (וזה המון עבודה. התרשימים, העריכה, הדיוק שלו, להפנות אותו לכתוב על הדברים הנצרכים)

            אז בואו נתחיל.

            שלב ראשון - מבנה קובץ הAPK

            16b481f1-1af0-436e-acaa-9ab95af00e09-image.png
            קבצים מסומנים בכחול, תיקיות בכתום

            AndroidManifest.xml: קובץ זה מכיל מידע קריטי על האפליקציה כמו שם החבילה, פעילויות (activities), הרשאות (permissions) ועוד.

            META-INF/: תיקיה זו מכילה קבצים הקשורים לאימות והחתימה הדיגיטלית של האפליקציה.

            MANIFEST.MF: קובץ זה מכיל רשימה של כל הקבצים ב-APK עם חתימותיהם.
            CERT.RSA ו-CERT.SF: קבצים אלו מכילים את החתימה הדיגיטלית של האפליקציה.

            lib/: תיקיה זו מכילה ספריות קוד מקוריות (native libraries) שתומכות בארכיטקטורות שונות של מעבדים כמו ARM, x86 ועוד.
            assets/: תיקיה זו מכילה קבצים נוספים שמשתמשי האפליקציה יכולים לגשת אליהם בזמן ריצה.

            res/: תיקיה זו מכילה את כל משאבי האפליקציה כמו קבצי תמונה, קבצי XML, פריסות (layouts) ועוד.

            classes.dex: קובץ זה מכיל את הקוד הבינארי של האפליקציה בפורמט Dalvik Executable (DEX). או בקיצור - SMALI.

            resources.arsc: קובץ זה מכיל מידע על המשאבים של האפליקציה בצורה מכווצת. (ועורכי הAPK מבוססי APKTOOL, מחלצים את התיקיות והקבצים שבתוכו לתוך תיקיית res)

            שלב שני - תיקיות lib וassets

            תיקיות אלו לא נמצאות בכל האפליקציות, בתיקיית lib יהיו ספריות קוד שבהם האפליקציה עושה שימוש.
            בתיקיית assets - קבצים חיצוניים, למשל קבצי טקסט, שהאפליקציה עושה בהם שימוש.

            שלב שלישי - תיקית res

            c7959b7f-0c6a-4f95-8153-042108ce4c7c-image.png

            תיקיית res (קיצור של Resources) מכילה את כל המשאבים הסטטיים שהאפליקציה שלך משתמשת בהם. המשאבים האלו יכולים לכלול פריסות ממשק משתמש, מחרוזות, תמונות, ערכים שונים ועוד. להלן פירוט על התיקיות השונות הנמצאות בתיקיית res ועל סוגי הקבצים שהן מכילות:

            שימו לב! אני מתאר כאן את תיקיית res לאחר פריקת קובץ הresources.arsc לתוכה. בMT MANAGER התיקיות השייכות אליו יהיו בתוכו, ולא בתיקיית res.

            1. res/layout
              תיקיה זו מכילה קבצי XML המגדירים את הפריסות (layouts) של המסכים באפליקציה. כל קובץ XML מגדיר את מבנה רכיבי הממשק על המסך, בהתאם לאקטיביטי אליו הוא משוייך.

            דוגמה לקובץ פריסה (activity_main.xml):

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
            
                <TextView
                    android:id="@+id/textView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Hello World!" />
            
                <Button
                    android:id="@+id/button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Click Me" />
            </LinearLayout>
            
            1. res/values
              תיקיה זו מכילה קבצי XML המגדירים ערכים שונים כמו מחרוזות, צבעים, מימדים, סגנונות ועוד.

            דוגמאות לקבצים בתיקיה res/values:
            בתוך תיקיה זו, יהיו תיקיות של השפות השונות, ובתוכם קבצי הXML השונים.
            values-en - אנגלית
            values-ar - ערבית
            values-iw - עברית.
            לפעמים מוסיפים גם את האיזור
            values-en-rUS - אנגלית ארה"ב
            values-iw-rIL - עברית ישראל

            strings.xml: מכיל מחרוזות טקסט. (קבצי השפה)

            <resources>
                <string name="app_name">MyApp</string>
                <string name="hello_world">Hello, World!</string>
            </resources>
            

            colors.xml: מכיל הגדרות צבעים.

            
            <resources>
                <color name="primaryColor">#FF6200EE</color>
                <color name="secondaryColor">#FF03DAC5</color>
            </resources>
            
            

            dimens.xml: מכיל הגדרות מימדים.

            <resources>
                <dimen name="default_margin">16dp</dimen>
                <dimen name="default_text_size">14sp</dimen>
            </resources>
            

            styles.xml: מכיל הגדרות סגנונות.

            <resources>
                <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
                    <item name="colorPrimary">@color/primaryColor</item>
                    <item name="colorPrimaryDark">@color/primaryColorDark</item>
                    <item name="colorAccent">@color/accentColor</item>
                </style>
            </resources>
            
            1. res/drawable
              תיקיה זו מכילה קבצי גרפיקה כמו תמונות (PNG, JPG) וקבצי XML המגדירים צורות וציורים מורכבים.

            דוגמה לקובץ צורה (shape.xml):

            <shape xmlns:android="http://schemas.android.com/apk/res/android">
                <solid android:color="#FF6200EE"/>
                <corners android:radius="8dp"/>
            </shape>
            
            1. res/mipmap
              תיקיה זו מכילה אייקונים של האפליקציה בגדלים שונים עבור מכשירים שונים. בדרך כלל ישנם תת-תיקיות כמו mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi ו-mipmap-xxxhdpi.

            2. res/anim ו-res/animator
              תיקיות אלו מכילות קבצי XML המגדירים אנימציות ואנימטורים שמשתמשים בהם באפליקציה.

            דוגמה לקובץ אנימציה (fade_in.xml):

            <alpha xmlns:android="http://schemas.android.com/apk/res/android"
                android:fromAlpha="0.0"
                android:toAlpha="1.0"
                android:duration="500"/>
            
            1. res/menu
              תיקיה זו מכילה קבצי XML המגדירים תפריטים (menus) שמופיעים באפליקציה, כגון תפריטי אפשרויות ותפריטי קונטקסט.

            דוגמה לקובץ תפריט (menu_main.xml):

            <menu xmlns:android="http://schemas.android.com/apk/res/android">
                <item
                    android:id="@+id/action_settings"
                    android:title="@string/action_settings"
                    android:orderInCategory="100"
                    android:showAsAction="never" />
            </menu>
            
            1. res/xml
              תיקיה זו מכילה קבצי XML כלליים שניתן להשתמש בהם להגדרות שונות של האפליקציה, כמו תצורות, הגדרות אבטחה ועוד.

            דוגמה לקובץ תצורה (preferences.xml):

            <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
                <EditTextPreference
                    android:key="username"
                    android:title="Username"
                    android:summary="Enter your username" />
            </PreferenceScreen>
            
            1. res/raw
              תיקיה זו מכילה קבצים גולמיים (raw) שאינם מפוענחים מראש. ניתן להשתמש בקבצים אלו כקבצי נתונים שמישומים באפליקציה, כמו קבצי אודיו, וידאו, טקסט ועוד.

            דוגמה לשימוש בקובץ גולמי:

            <mediaPlayer>
                android:src="@raw/sample_audio"
            </mediaPlayer>
            

            שלב רביעי - קובץ הdex

            השלב המסובך ביותר, ולא הצלחתי להוציא מChatGPT הסבר נוח.
            בגדול, אם נפרק אותו עם APK TOOL, או עם DEX EDITOR PLUS בMT MANAGER.
            נגיע לקוד הsmali של אקטיבטי לפי הנתיב שלו.
            למשל כאן מסומן הקובץ של האקטיביטי MmsApp באפליקציה שהPacakgeName הוא com.android.mms
            a1d72357-5f5d-4cc0-a9be-b41784e7a980-image.png

            עם ישראל חייע מנותק
            עם ישראל חייע מנותק
            עם ישראל חיי
            כתב נערך לאחרונה על ידי עם ישראל חיי
            #5

            @מישהו12
            מדריך ממש מקצועי ויעיל 🏆 👍

            תגובה 1 תגובה אחרונה
            0
            • מישהו12מ מישהו12 התייחס לנושא זה
            • מישהו12מ מישהו12

              כל הזכויות שמורות. אין להעתיק!

              כיוון שהרבה כאן שאלו על עריכת אפליקציות, וכתבתי כמה וכמה פעמים שזה עסק מורכב ודורש היכרות עם מבנה הAPK, ואין דרך אחת, החלטתי לכתוב מדריך.
              אבל...
              זה עסק מסובך, וארוך, אז לא היה לי כוח לכתוב לבד.
              ביקשתי מצ'אט GPT, וערכתי את מה שהוא כתב לפי הידע שלי. (וזה המון עבודה. התרשימים, העריכה, הדיוק שלו, להפנות אותו לכתוב על הדברים הנצרכים)

              אז בואו נתחיל.

              שלב ראשון - מבנה קובץ הAPK

              16b481f1-1af0-436e-acaa-9ab95af00e09-image.png
              קבצים מסומנים בכחול, תיקיות בכתום

              AndroidManifest.xml: קובץ זה מכיל מידע קריטי על האפליקציה כמו שם החבילה, פעילויות (activities), הרשאות (permissions) ועוד.

              META-INF/: תיקיה זו מכילה קבצים הקשורים לאימות והחתימה הדיגיטלית של האפליקציה.

              MANIFEST.MF: קובץ זה מכיל רשימה של כל הקבצים ב-APK עם חתימותיהם.
              CERT.RSA ו-CERT.SF: קבצים אלו מכילים את החתימה הדיגיטלית של האפליקציה.

              lib/: תיקיה זו מכילה ספריות קוד מקוריות (native libraries) שתומכות בארכיטקטורות שונות של מעבדים כמו ARM, x86 ועוד.
              assets/: תיקיה זו מכילה קבצים נוספים שמשתמשי האפליקציה יכולים לגשת אליהם בזמן ריצה.

              res/: תיקיה זו מכילה את כל משאבי האפליקציה כמו קבצי תמונה, קבצי XML, פריסות (layouts) ועוד.

              classes.dex: קובץ זה מכיל את הקוד הבינארי של האפליקציה בפורמט Dalvik Executable (DEX). או בקיצור - SMALI.

              resources.arsc: קובץ זה מכיל מידע על המשאבים של האפליקציה בצורה מכווצת. (ועורכי הAPK מבוססי APKTOOL, מחלצים את התיקיות והקבצים שבתוכו לתוך תיקיית res)

              שלב שני - תיקיות lib וassets

              תיקיות אלו לא נמצאות בכל האפליקציות, בתיקיית lib יהיו ספריות קוד שבהם האפליקציה עושה שימוש.
              בתיקיית assets - קבצים חיצוניים, למשל קבצי טקסט, שהאפליקציה עושה בהם שימוש.

              שלב שלישי - תיקית res

              c7959b7f-0c6a-4f95-8153-042108ce4c7c-image.png

              תיקיית res (קיצור של Resources) מכילה את כל המשאבים הסטטיים שהאפליקציה שלך משתמשת בהם. המשאבים האלו יכולים לכלול פריסות ממשק משתמש, מחרוזות, תמונות, ערכים שונים ועוד. להלן פירוט על התיקיות השונות הנמצאות בתיקיית res ועל סוגי הקבצים שהן מכילות:

              שימו לב! אני מתאר כאן את תיקיית res לאחר פריקת קובץ הresources.arsc לתוכה. בMT MANAGER התיקיות השייכות אליו יהיו בתוכו, ולא בתיקיית res.

              1. res/layout
                תיקיה זו מכילה קבצי XML המגדירים את הפריסות (layouts) של המסכים באפליקציה. כל קובץ XML מגדיר את מבנה רכיבי הממשק על המסך, בהתאם לאקטיביטי אליו הוא משוייך.

              דוגמה לקובץ פריסה (activity_main.xml):

              <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical">
              
                  <TextView
                      android:id="@+id/textView"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Hello World!" />
              
                  <Button
                      android:id="@+id/button"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Click Me" />
              </LinearLayout>
              
              1. res/values
                תיקיה זו מכילה קבצי XML המגדירים ערכים שונים כמו מחרוזות, צבעים, מימדים, סגנונות ועוד.

              דוגמאות לקבצים בתיקיה res/values:
              בתוך תיקיה זו, יהיו תיקיות של השפות השונות, ובתוכם קבצי הXML השונים.
              values-en - אנגלית
              values-ar - ערבית
              values-iw - עברית.
              לפעמים מוסיפים גם את האיזור
              values-en-rUS - אנגלית ארה"ב
              values-iw-rIL - עברית ישראל

              strings.xml: מכיל מחרוזות טקסט. (קבצי השפה)

              <resources>
                  <string name="app_name">MyApp</string>
                  <string name="hello_world">Hello, World!</string>
              </resources>
              

              colors.xml: מכיל הגדרות צבעים.

              
              <resources>
                  <color name="primaryColor">#FF6200EE</color>
                  <color name="secondaryColor">#FF03DAC5</color>
              </resources>
              
              

              dimens.xml: מכיל הגדרות מימדים.

              <resources>
                  <dimen name="default_margin">16dp</dimen>
                  <dimen name="default_text_size">14sp</dimen>
              </resources>
              

              styles.xml: מכיל הגדרות סגנונות.

              <resources>
                  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
                      <item name="colorPrimary">@color/primaryColor</item>
                      <item name="colorPrimaryDark">@color/primaryColorDark</item>
                      <item name="colorAccent">@color/accentColor</item>
                  </style>
              </resources>
              
              1. res/drawable
                תיקיה זו מכילה קבצי גרפיקה כמו תמונות (PNG, JPG) וקבצי XML המגדירים צורות וציורים מורכבים.

              דוגמה לקובץ צורה (shape.xml):

              <shape xmlns:android="http://schemas.android.com/apk/res/android">
                  <solid android:color="#FF6200EE"/>
                  <corners android:radius="8dp"/>
              </shape>
              
              1. res/mipmap
                תיקיה זו מכילה אייקונים של האפליקציה בגדלים שונים עבור מכשירים שונים. בדרך כלל ישנם תת-תיקיות כמו mipmap-mdpi, mipmap-hdpi, mipmap-xhdpi, mipmap-xxhdpi ו-mipmap-xxxhdpi.

              2. res/anim ו-res/animator
                תיקיות אלו מכילות קבצי XML המגדירים אנימציות ואנימטורים שמשתמשים בהם באפליקציה.

              דוגמה לקובץ אנימציה (fade_in.xml):

              <alpha xmlns:android="http://schemas.android.com/apk/res/android"
                  android:fromAlpha="0.0"
                  android:toAlpha="1.0"
                  android:duration="500"/>
              
              1. res/menu
                תיקיה זו מכילה קבצי XML המגדירים תפריטים (menus) שמופיעים באפליקציה, כגון תפריטי אפשרויות ותפריטי קונטקסט.

              דוגמה לקובץ תפריט (menu_main.xml):

              <menu xmlns:android="http://schemas.android.com/apk/res/android">
                  <item
                      android:id="@+id/action_settings"
                      android:title="@string/action_settings"
                      android:orderInCategory="100"
                      android:showAsAction="never" />
              </menu>
              
              1. res/xml
                תיקיה זו מכילה קבצי XML כלליים שניתן להשתמש בהם להגדרות שונות של האפליקציה, כמו תצורות, הגדרות אבטחה ועוד.

              דוגמה לקובץ תצורה (preferences.xml):

              <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
                  <EditTextPreference
                      android:key="username"
                      android:title="Username"
                      android:summary="Enter your username" />
              </PreferenceScreen>
              
              1. res/raw
                תיקיה זו מכילה קבצים גולמיים (raw) שאינם מפוענחים מראש. ניתן להשתמש בקבצים אלו כקבצי נתונים שמישומים באפליקציה, כמו קבצי אודיו, וידאו, טקסט ועוד.

              דוגמה לשימוש בקובץ גולמי:

              <mediaPlayer>
                  android:src="@raw/sample_audio"
              </mediaPlayer>
              

              שלב רביעי - קובץ הdex

              השלב המסובך ביותר, ולא הצלחתי להוציא מChatGPT הסבר נוח.
              בגדול, אם נפרק אותו עם APK TOOL, או עם DEX EDITOR PLUS בMT MANAGER.
              נגיע לקוד הsmali של אקטיבטי לפי הנתיב שלו.
              למשל כאן מסומן הקובץ של האקטיביטי MmsApp באפליקציה שהPacakgeName הוא com.android.mms
              a1d72357-5f5d-4cc0-a9be-b41784e7a980-image.png

              מ מנותק
              מ מנותק
              מיגו להוציא
              כתב נערך לאחרונה על ידי
              #6

              @מישהו12

              ממה שראיתי למעשה באפליקציות, לפעמים שמים "קבצים גולמיים" (קבצי שמע או תמונות למשל) בתיקיית assets ולפעמים ב-res/raw

              מה הגדר בזה?

              מישהו12מ תגובה 1 תגובה אחרונה
              0
              • מ מיגו להוציא

                @מישהו12

                ממה שראיתי למעשה באפליקציות, לפעמים שמים "קבצים גולמיים" (קבצי שמע או תמונות למשל) בתיקיית assets ולפעמים ב-res/raw

                מה הגדר בזה?

                מישהו12מ מנותק
                מישהו12מ מנותק
                מישהו12
                מדריכים
                כתב נערך לאחרונה על ידי
                #7

                @מיגו-להוציא כתב במדריך | מבנה קובץ APK:

                @מישהו12

                ממה שראיתי למעשה באפליקציות, לפעמים שמים "קבצים גולמיים" (קבצי שמע או תמונות למשל) בתיקיית assets ולפעמים ב-res/raw

                מה הגדר בזה?

                תאורטית אפשר בקוד אפשר להגדיר שיהיה בכל מקום שרוצים...
                דיברתי פה על המקובל.

                הבלוג שלי
                https://aiv-dev.com/he-IL/

                תגובה 1 תגובה אחרונה
                0

                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • חוקי הפורום
                • לא נפתר
                • משתמשים
                • חיפוש גוגל בפורום
                • צור קשר