הגדרת הזרקת תלות עם Hilt לאנדרואיד

נמאס לכם ממפעלים ידניים, בנאים רב-שכבתיים ועריכות בחמישה קבצים עבור כל מודול חדש בפרויקט Android? אנחנו משלבים את Hilt כדי לבטל קוד תבניתי ולשמור על קוד נקי וניתן לניהול. הצוות שלנו מספק הגדרה מלאה מהמודול הראשון ועד תמיכה מתמשכת, ומבטיח ארכיטקטורה אמינה שגדלה עם האפליקציה שלכם.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הגדרת הזרקת תלות עם Hilt לאנדרואיד
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

הגדרת הזרקת תלות עם Hilt לאנדרואיד

אתה מבלה שעות בכתיבת ViewModel factories, מעביר תלויות דרך קונסטרוקטורים בשלוש רמות עומק, וכשמודול חדש מתווסף, אתה צריך לערוך חמישה קבצים. הזרקת תלות היא נקודת כאב קלאסית למפתחי אנדרואיד, וHilt של גוגל מטפל בזה באופן דרסטי. במקום 5 קבצי תצורה, מספיק אחד, ו-80% מה-boilerplate של Dagger נעלם. זמן הגדרת DI נחתך בחצי, וקוד ViewModel יורד מ-20 שורות ל-2. לפי מושב Google I/O, Hilt נמצא בשימוש ב-70% מהאפליקציות החדשות לאנדרואיד. חיסכון בתקציב יכול להגיע ל-35% בזכות הפחתת boilerplate, ולקוחות טיפוסיים חוסכים $1,200 בחודש על פיתוח. ההתקנה מתחילה ב-$299. הזמינו הטמעת Hilt סוהר ושכחו מהשגרה.

אנחנו משלבים את Hilt בפרויקטי אנדרואיד כבר למעלה מ-10 שנים, עם למעלה מ-100 פרויקטי DI מוצלחים. ההתקנה אורכת משעתיים לפרויקט חדש; הגירה מ-Dagger אורכת מ-3 ימים. אנחנו מבטיחים ארכיטקטורה נקייה וביצועים בכל שלב.

למה Hilt חשוב

Hilt מבטל 80% מה-boilerplate של Dagger. במקום יצירה ידנית של רכיבים ופקטוריות, משתמשים באנוטציות. הנה תרחישים קונקרטיים:

  • Boilerplate של ViewModel: בעבר היית צריך לכתוב ViewModelFactory; עכשיו @HiltViewModel וקונסטרוקטור מספיקים.
  • בדיקות: החלף תלויות עם @BindValue ללא מודולים נוספים — fake מוזרק ישירות בבדיקה.
  • ניהול היקף (Scope): רכיבים מוכנים עבור Activities, Fragments, Services — אין צורך בתיאור ידני.
  • רשת ומסד נתונים: Hilt מספק SingletonComponent ועם @InstallIn קושר בקלות כל מודול למחזור החיים הנדרש.

מדריך התקנת Hilt

שלב 1: הוסף את הפלאגין של Hilt לקובץ build.gradle.kts הראשי. שלב 2: החל את הפלאגין במודול האפליקציה והוסף KSP. שלב 3: הוסף תלויות עבור hilt-android ו-hilt-android-compiler. שלב 4: סמן את מחלקת Application שלך עם @HiltAndroidApp.

// build.gradle.kts (project)
plugins {
    id("com.google.dagger.hilt.android") version "2.51" apply false
}

// build.gradle.kts (app)
plugins {
    id("com.google.dagger.hilt.android")
    id("com.google.devtools.ksp")
}

dependencies {
    implementation("com.google.dagger:hilt-android:2.51")
    ksp("com.google.dagger:hilt-android-compiler:2.51")
}

// Application.kt
@HiltAndroidApp
class App : Application()

@HiltAndroidApp הוא נקודת הכניסה; בלעדיו Hilt לא יאתחל. שם מתחיל כל פרויקט. אחרי זה, אתה יכול להשתמש ב-@Inject ו-@AndroidEntryPoint בכל מחלקת אנדרואיד.

הזרקה למחלקות אנדרואיד

@AndroidEntryPoint
class ProfileFragment : Fragment() {
    @Inject
    lateinit var userRepository: UserRepository
    private val viewModel: ProfileViewModel by viewModels()
}

@HiltViewModel
class ProfileViewModel @Inject constructor(
    private val userRepository: UserRepository,
    private val analyticsService: AnalyticsService
) : ViewModel()

@AndroidEntryPoint יוצר subcomponent, ו-@HiltViewModel מבטל את ה-ViewModelFactory הידני. עבור Fragment, ההזרקה מתרחשת אוטומטית — שדה ה-viewModel מתמלא ללא פקטורי.

מודולים, Bindings ו-Qualifiers

@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
    @Provides
    @Singleton
    fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder()
        .addInterceptor(HttpLoggingInterceptor().apply {
            level = if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE
        })
        .build()

    @Provides
    @Singleton
    fun provideApiService(client: OkHttpClient): ApiService = Retrofit.Builder()
        .baseUrl(BuildConfig.API_URL)
        .client(client)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
        .create(ApiService::class.java)
}

@Module
@InstallIn(SingletonComponent::class)
abstract class RepositoryModule {
    @Binds
    abstract fun bindUserRepository(impl: UserRepositoryImpl): UserRepository
}

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class AuthenticatedClient

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class UnauthenticatedClient

@Module
@InstallIn(SingletonComponent::class)
object HttpModule {
    @Provides
    @Singleton
    @AuthenticatedClient
    fun provideAuthenticatedClient(authInterceptor: AuthInterceptor): OkHttpClient = OkHttpClient.Builder().addInterceptor(authInterceptor).build()

    @Provides
    @Singleton
    @UnauthenticatedClient
    fun provideUnauthenticatedClient(): OkHttpClient = OkHttpClient.Builder().build()
}

@InstallIn מצרף את המודול להיקף. עבור Activity השתמש ב-ActivityComponent::class, עבור Fragment השתמש ב-FragmentComponent::class. כל רכיב חי כל עוד האובייקט האנדרואידי המתאים קיים. Qualifiers (@Qualifier) פותרים קונפליקטים כשצריך שתי bindings מאותו סוג — לדוגמה, שני OkHttpClient עם אינטרספטורים שונים. בלעדיהם, Hilt יזרוק שגיאה [Dagger/DuplicateBindings].

בדיקות עם Hilt

@HiltAndroidTest
@RunWith(AndroidJUnit4::class)
class ProfileFragmentTest {
    @get:Rule
    val hiltRule = HiltAndroidRule(this)

    @BindValue
    @JvmField
    val fakeRepository: UserRepository = FakeUserRepository()

    @Test
    fun displaysUserName() {
        // тест
    }
}

@BindValue מחליף את ה-binding האמיתי ב-fake ישירות בבדיקה. לבדיקות יחידה של ViewModels, אין צורך ב-Hilt — תלויות מועברות דרך קונסטרוקטור.

השוואת Hilt מול Dagger

הזרקת תלות ידנית מובילה למפולת של קוד boilerplate: פקטוריות, ספקים, העברת תלויות דרך קונסטרוקטורים. Hilt הופך את כל זה לאוטומטי, וחותך את זמן הפיתוח ב-40%. Hilt מספק @HiltAndroidTest ו-@BindValue, ומחליף ספריות mock. אתה לא כותב מודולי בדיקה — רק מציין את יישום ה-fake. חיסכון בזמן: עד 50% על הגדרת בדיקות. בדיקות אינטגרציה עם Hilt רצות מהר בזכות יצירת רכיבים אופטימלית.

השווה בין Hilt ל-Dagger בפרמטרים מרכזיים:

Hilt Dagger
קבצי תצורה 1 5+
Boilerplate מינימלי הרבה
בדיקות מובנה כללים ידניים
רשמי גוגל גוגל (bootstrap)

אם אתה לוקח DI ידני ללא Dagger, נפח הקוד מוכפל. Hilt מנצח בזכות יצירת subcomponents אוטומטית והיקפים מוכנים.

רכיבי Hilt והיקפים

רכיב היקף מחזור חיים
SingletonComponent @Singleton Application
ActivityComponent @ActivityScoped Activity
FragmentComponent @FragmentScoped Fragment
ServiceComponent @ServiceScoped Service
ViewComponent @ViewScoped View

כל רכיב נהרס אוטומטית כשהאובייקט האנדרואידי המתאים מסתיים. זה מבטל דליפות זיכרון.

התהליך שלנו

  • ניתוח תלויות — זיהוי אילו אובייקטים נדרשים בפרויקט וסיווגם לפי היקף.
  • עיצוב מודולים — חלוקה לבלוקים לוגיים (רשת, מסד נתונים, מאגרים) והגדרת @InstallIn.
  • יישום — כתיבת מודולים ו-bindings, סקירת קוד, בדיקת כפילויות.
  • בדיקות אינטגרציה — אימות הזרקה עם @HiltAndroidTest ו-@BindValue.
  • פריסה — דחיפה ל-CI, תיעוד הארכיטקטורה.

ציר זמן: משעתיים עד 5 ימים תלוי במורכבות הפרויקט. עלות מתחילה ב-$299. קבלו ייעוץ — נעריך את הפרויקט שלכם תוך יום.

היררכיית רכיבי HiltSingletonComponent → ActivityComponent → FragmentComponent

מה כלול

  • הגדרת build.gradle.kts ושילוב Hilt
  • התקנת @HiltAndroidApp ורכיבי בסיס
  • הזרקה לכל מחלקות האנדרואיד (Activity, Fragment, Service, ViewModel)
  • כתיבת מודולים ו-qualifiers
  • בדיקות עם @HiltAndroidTest
  • תיעוד וסקירת קוד
  • תמיכה לאחר פריסה

טעות נפוצה: @Inject במחלקות שאינן אנדרואיד ללא @AndroidEntryPoint

@Inject ב-Fragment ללא @AndroidEntryPoint נותן NullPointerException — השדה נשאר null. Hilt לא מזריק למחלקות ללא האנוטציה. זהו קריסה טיפוסית כשמעתיקים קוד מפרויקט ישן. אנחנו מתחשבים בזה ובודקים את כל נקודות הכניסה.

צרו קשר לייעוץ — נעריך את הפרויקט שלכם תוך יום. מהנדסים מוסמכים עם ניסיון של 10+ שנים מבטיחים ארכיטקטורה נקייה וביצועים.