דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • 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. שיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36

שיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36

מתוזמן נעוץ נעול הועבר עזרה הדדית - אנדרואיד
20 פוסטים 8 כותבים 314 צפיות 9 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • עדלאידעע עדלאידע

    @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

    (למה התעוררת לכתוב את זה רק עכשיו?)

    כי רק עכשיו היה לי זמן לחקור איפה בדיוק הבעיה...

    מותר לשאול מי כיוון אותך לשם?

    עשיתי Logcat ב-ADB ובדקתי מה קורה כשאני פותח את האפליקציה הרביעית, ראיתי שהוא סוגר את האפליקציה הראשונה בגלל הפונקציה removeTask,
    חיפשתי את הפונקציה הזאת ב-SystemUI ולא מצאתי, חיפשתי ב-framework-res וראיתי את הפונקציה הרגילה של ניהול אפליקציות אבל היה שם משהו מוזר כאילו הוא מחכה לפונקציה שתדרוס אותו,
    אז האזנתי עם Frida לפונקציה removeTask וראיתי שמה שמפעיל אותה זה הפונקציה checkRecentTask בקלאס RecentTasks
    אז בדקתי ב-services.jar וב"ה מצאתי את הפונקציה.

    אם זה מעניין אותך זה הפונקציה:

    .method private checkRecentTask()V
    .registers 10
    code
    Code
    .line 1192
    iget-object v0, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
    
    iget-object v0, v0, Lcom/android/server/wm/ActivityTaskManagerService;->mContext:Landroid/content/Context;
    
    iget-object v1, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
    
    iget-object v1, v1, Lcom/android/server/wm/ActivityTaskManagerService;->mContext:Landroid/content/Context;
    
    const-string v1, "activity"
    
    invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
    
    move-result-object v0
    
    check-cast v0, Landroid/app/ActivityManager;
    
    .line 1194
    .local v0, "mAm":Landroid/app/ActivityManager;
    const/16 v1, 0xa
    
    .line 1195
    .local v1, "minNumTasksToQuery":I
    :try_start_12
    invoke-static {}, Landroid/app/ActivityManager;->getMaxRecentTasksStatic()I
    
    move-result v2
    
    invoke-static {v1, v2}, Ljava/lang/Math;->max(II)I
    
    move-result v2
    
    .line 1196
    .local v2, "numTasksToQuery":I
    const/4 v3, 0x3
    
    .line 1198
    .local v3, "flag":I
    invoke-virtual {v0, v2, v3}, Landroid/app/ActivityManager;->getRecentTasks(II)Ljava/util/List;
    
    move-result-object v4
    
    iput-object v4, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
    
    .line 1199
    invoke-interface {v4}, Ljava/util/List;->size()I
    
    move-result v4
    
    const/4 v5, 0x3
    
    if-le v4, v5, :cond_64
    
    .line 1200
    const/4 v4, 0x3
    
    .local v4, "i":I
    :goto_29
    iget-object v5, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
    
    invoke-interface {v5}, Ljava/util/List;->size()I
    
    move-result v5
    
    if-ge v4, v5, :cond_64
    
    .line 1201
    iget-object v5, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
    
    invoke-interface {v5, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
    
    move-result-object v5
    
    check-cast v5, Landroid/app/ActivityManager$RecentTaskInfo;
    
    .line 1202
    .local v5, "info":Landroid/app/ActivityManager$RecentTaskInfo;
    if-eqz v5, :cond_61
    
    .line 1203
    const-string v6, "kenTestTag"
    
    new-instance v7, Ljava/lang/StringBuilder;
    
    invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
    
    const-string/jumbo v8, "removeTask....."
    
    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
    move-result-object v7
    
    iget-object v8, v5, Landroid/app/ActivityManager$RecentTaskInfo;->realActivity:Landroid/content/ComponentName;
    
    invoke-virtual {v8}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
    
    move-result-object v8
    
    invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
    
    move-result-object v7
    
    invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
    
    move-result-object v7
    
    invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
    
    .line 1204
    iget-object v6, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
    
    iget v7, v5, Landroid/app/ActivityManager$RecentTaskInfo;->persistentId:I
    
    invoke-virtual {v6, v7}, Lcom/android/server/wm/ActivityTaskManagerService;->removeTask(I)Z
    :try_end_61
    .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_61} :catch_65
    
    .line 1200
    .end local v5    # "info":Landroid/app/ActivityManager$RecentTaskInfo;
    :cond_61
    add-int/lit8 v4, v4, 0x1
    
    goto :goto_29
    
    .line 1210
    .end local v1    # "minNumTasksToQuery":I
    .end local v2    # "numTasksToQuery":I
    .end local v3    # "flag":I
    .end local v4    # "i":I
    :cond_64
    goto :goto_6d
    
    .line 1208
    :catch_65
    move-exception v1
    
    .line 1209
    .local v1, "e":Ljava/lang/Exception;
    const-string v2, "ActivityTaskManager"
    
    const-string v3, "Failed to get recent tasks"
    
    invoke-static {v2, v3, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
    
    .line 1211
    .end local v1    # "e":Ljava/lang/Exception;
    :goto_6d
    return-void
    .end method
    

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

    @עדלאידע כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

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

    אפשר הסבר מה הכוונה? מה היה מוזר?

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

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

      @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

      (למה התעוררת לכתוב את זה רק עכשיו?)

      כי רק עכשיו היה לי זמן לחקור איפה בדיוק הבעיה...

      מותר לשאול מי כיוון אותך לשם?

      עשיתי Logcat ב-ADB ובדקתי מה קורה כשאני פותח את האפליקציה הרביעית, ראיתי שהוא סוגר את האפליקציה הראשונה בגלל הפונקציה removeTask,
      חיפשתי את הפונקציה הזאת ב-SystemUI ולא מצאתי, חיפשתי ב-framework-res וראיתי את הפונקציה הרגילה של ניהול אפליקציות אבל היה שם משהו מוזר כאילו הוא מחכה לפונקציה שתדרוס אותו,
      אז האזנתי עם Frida לפונקציה removeTask וראיתי שמה שמפעיל אותה זה הפונקציה checkRecentTask בקלאס RecentTasks
      אז בדקתי ב-services.jar וב"ה מצאתי את הפונקציה.

      אם זה מעניין אותך זה הפונקציה:

      .method private checkRecentTask()V
      .registers 10
      code
      Code
      .line 1192
      iget-object v0, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
      
      iget-object v0, v0, Lcom/android/server/wm/ActivityTaskManagerService;->mContext:Landroid/content/Context;
      
      iget-object v1, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
      
      iget-object v1, v1, Lcom/android/server/wm/ActivityTaskManagerService;->mContext:Landroid/content/Context;
      
      const-string v1, "activity"
      
      invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
      
      move-result-object v0
      
      check-cast v0, Landroid/app/ActivityManager;
      
      .line 1194
      .local v0, "mAm":Landroid/app/ActivityManager;
      const/16 v1, 0xa
      
      .line 1195
      .local v1, "minNumTasksToQuery":I
      :try_start_12
      invoke-static {}, Landroid/app/ActivityManager;->getMaxRecentTasksStatic()I
      
      move-result v2
      
      invoke-static {v1, v2}, Ljava/lang/Math;->max(II)I
      
      move-result v2
      
      .line 1196
      .local v2, "numTasksToQuery":I
      const/4 v3, 0x3
      
      .line 1198
      .local v3, "flag":I
      invoke-virtual {v0, v2, v3}, Landroid/app/ActivityManager;->getRecentTasks(II)Ljava/util/List;
      
      move-result-object v4
      
      iput-object v4, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
      
      .line 1199
      invoke-interface {v4}, Ljava/util/List;->size()I
      
      move-result v4
      
      const/4 v5, 0x3
      
      if-le v4, v5, :cond_64
      
      .line 1200
      const/4 v4, 0x3
      
      .local v4, "i":I
      :goto_29
      iget-object v5, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
      
      invoke-interface {v5}, Ljava/util/List;->size()I
      
      move-result v5
      
      if-ge v4, v5, :cond_64
      
      .line 1201
      iget-object v5, p0, Lcom/android/server/wm/RecentTasks;->tasks2:Ljava/util/List;
      
      invoke-interface {v5, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
      
      move-result-object v5
      
      check-cast v5, Landroid/app/ActivityManager$RecentTaskInfo;
      
      .line 1202
      .local v5, "info":Landroid/app/ActivityManager$RecentTaskInfo;
      if-eqz v5, :cond_61
      
      .line 1203
      const-string v6, "kenTestTag"
      
      new-instance v7, Ljava/lang/StringBuilder;
      
      invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
      
      const-string/jumbo v8, "removeTask....."
      
      invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
      
      move-result-object v7
      
      iget-object v8, v5, Landroid/app/ActivityManager$RecentTaskInfo;->realActivity:Landroid/content/ComponentName;
      
      invoke-virtual {v8}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
      
      move-result-object v8
      
      invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
      
      move-result-object v7
      
      invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
      
      move-result-object v7
      
      invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
      
      .line 1204
      iget-object v6, p0, Lcom/android/server/wm/RecentTasks;->mService:Lcom/android/server/wm/ActivityTaskManagerService;
      
      iget v7, v5, Landroid/app/ActivityManager$RecentTaskInfo;->persistentId:I
      
      invoke-virtual {v6, v7}, Lcom/android/server/wm/ActivityTaskManagerService;->removeTask(I)Z
      :try_end_61
      .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_61} :catch_65
      
      .line 1200
      .end local v5    # "info":Landroid/app/ActivityManager$RecentTaskInfo;
      :cond_61
      add-int/lit8 v4, v4, 0x1
      
      goto :goto_29
      
      .line 1210
      .end local v1    # "minNumTasksToQuery":I
      .end local v2    # "numTasksToQuery":I
      .end local v3    # "flag":I
      .end local v4    # "i":I
      :cond_64
      goto :goto_6d
      
      .line 1208
      :catch_65
      move-exception v1
      
      .line 1209
      .local v1, "e":Ljava/lang/Exception;
      const-string v2, "ActivityTaskManager"
      
      const-string v3, "Failed to get recent tasks"
      
      invoke-static {v2, v3, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
      
      .line 1211
      .end local v1    # "e":Ljava/lang/Exception;
      :goto_6d
      return-void
      .end method
      

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

      @עדלאידע מי קורא לפונקציה system ui או blueshark?
      (אגב זה רק מחזק את ההשערה שלי שהרום שמגיע עם המכשיר זה בעצם gsi שהלבישו עליו...)

      למה באתיל תגובה 1 תגובה אחרונה
      0
      • פ פיני10

        @עדלאידע מי קורא לפונקציה system ui או blueshark?
        (אגב זה רק מחזק את ההשערה שלי שהרום שמגיע עם המכשיר זה בעצם gsi שהלבישו עליו...)

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

        @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

        (אגב זה רק מחזק את ההשערה שלי שהרום שמגיע עם המכשיר זה בעצם gsi שהלבישו עליו...)

        מה ההו"א?

        פ תגובה 1 תגובה אחרונה
        0
        • למה באתיל למה באתי

          @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

          (אגב זה רק מחזק את ההשערה שלי שהרום שמגיע עם המכשיר זה בעצם gsi שהלבישו עליו...)

          מה ההו"א?

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

          @למה-באתי שהרום המקורי של המכשיר הוא באמת אנדרואיד 13 ולא משהו יותר נמוך...

          למה באתיל תגובה 1 תגובה אחרונה
          0
          • פ פיני10

            @למה-באתי שהרום המקורי של המכשיר הוא באמת אנדרואיד 13 ולא משהו יותר נמוך...

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

            @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

            @למה-באתי שהרום המקורי של המכשיר הוא באמת אנדרואיד 13 ולא משהו יותר נמוך...

            מה מביא אותך להסכמה שזה GSI?

            פ תגובה 1 תגובה אחרונה
            0
            • למה באתיל למה באתי

              @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

              @למה-באתי שהרום המקורי של המכשיר הוא באמת אנדרואיד 13 ולא משהו יותר נמוך...

              מה מביא אותך להסכמה שזה GSI?

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

              @למה-באתי אין לי הסכמה שזה gsi אלא הנחה כזאת שאני לא בטוח שהיא נכונה

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

                @עדלאידע כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

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

                אפשר הסבר מה הכוונה? מה היה מוזר?

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

                @מישהו12 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

                @עדלאידע כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

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

                אפשר הסבר מה הכוונה? מה היה מוזר?

                היה שם בקובץ integers.xml את הערך הבא:

                config_maxNumVisibleRecentTasks = "-1"
                

                מה שבפועל לא נכון כי תכלס' ההגבלה היא 3...
                ובמקום פשוט לכתוב שם את הערך 3 היצרן בחר לקבוע את ההגבלה בקומבינה מטופשת ישירות ב-services.jar...

                תגובה 1 תגובה אחרונה
                1
                • עדלאידעע עדלאידע

                  אז אחרי שעות של זיהוי ותיקון הבעיה,
                  מצאתי את הבאג המכוון של היצרן שדאג לנו לשלל באגים במכשיר,
                  היצרן שלנו הוסיף בsmali של services.jar פונקציה שדואגת שלא יהיה יותר משלוש אפליקציות ביישומים אחרונים

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

                  אז ערכתי את הפונקציה הזאת שבכלל לא תתחיל, ויצרתי מודול מאג'יסק שדוחף את ה-services.jar המתוקן לסיסטם,
                  פשוט להתקין את המודול ולהפעיל מחדש, כמובן דורש רוט...
                  Recent Apps Limit Fix.zip

                  ליוצרי הגירסאות, זה הservices.jar המתוקן, לשים ב-/system/framework

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

                  @עדלאידע המודל לא עובד לי בהתקנה אני מקבל שגיאה שהפתיחה של הזיפ נכשלה

                  E שניאור שמחש 2 תגובות תגובה אחרונה
                  0
                  • פ פיני10

                    @עדלאידע המודל לא עובד לי בהתקנה אני מקבל שגיאה שהפתיחה של הזיפ נכשלה

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

                    @פיני10 אם אתה רוצה עשיתי גרסה מסודרת

                    תגובה 1 תגובה אחרונה
                    0
                    • פ פיני10

                      @עדלאידע המודל לא עובד לי בהתקנה אני מקבל שגיאה שהפתיחה של הזיפ נכשלה

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

                      @פיני10 כתב בשיתוף | תיקון הבאג של ה-3 אפליקציות ביישומים אחרונים ב-m36:

                      @עדלאידע המודל לא עובד לי בהתקנה אני מקבל שגיאה שהפתיחה של הזיפ נכשלה

                      איזה גרסת מגיסק יש לך?

                      "אם לא תנסה, איך תדע?"

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

                      • התחברות

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

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