להורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!
-
קודם כל תודה לד' יתברך, זה פרוייקט שחשבתי שיקח לי שבוע, וסיימתי ביום..
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.היתרונות כאן נראה לי ברורים, לא צריך להוריד APK, להעלות לשרת וכו', האפלקציות תמיד מעודכנות וכו'.
את האפליקציה ערכתי עם AI Studio, והצלחתי להגיע למגבלה היומית..
בעזרת ד' בלנ"ד מאוחר יותר אציג את השינויים בקוד.ישנו קובץ JSON שמאוחסן ברשת (את שלי שמתי בGITHUB, שמכיל את רשימת האפליקיצות המותרות, בעזרת ד' אני עובד על הממשק לעריכה נוחה.
עוד דבר, את האפליקציה תרגמתי עם AI סטודיו גם כן, אז מחילה אם יש מילים לא מובנות או משהו, דווחו ואתקן בלנ"ד.
אני מביא כאן את ה"דוגמית", יש שם ארבעה אפליקציות.
להורדת האפליקציה
קובץ הJSON אמור להראות כך:[ "com.whatsapp", "com.tranzmate", "com.waze", "tfilon.tfilon" ]
אפשר ליצור קובץ כזה בגיטהאב, ללחוץ על RAW, ואז להתעיק את הקישור.
חפשו בMT מנג'ר את השורה הזאת:
https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json
ותחליפו אותה עם הקישור לJSON שלכם, ויש לכם חנות אפליקציות שאתם מחליטים איזה אפליקציות יהיו בה!
השינויים בספויילר:
להוסיף בנתיב com/aurora/store
את הclass:
AuroraApp$2
(ליד הקלאס AuroraApp)# classes.dex .class Lcom/aurora/store/AuroraApp$2; .super Ljava/lang/Object; # interfaces .implements Ljava/lang/Runnable; # annotations .annotation system Ldalvik/annotation/EnclosingMethod; value = Lcom/aurora/store/AuroraApp;->onCreate()V .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x0 name = null .end annotation # instance fields .field final synthetic this$0:Lcom/aurora/store/AuroraApp; # direct methods .method constructor <init>(Lcom/aurora/store/AuroraApp;)V .registers 2 iput-object p1, p0, Lcom/aurora/store/AuroraApp$2;->this$0:Lcom/aurora/store/AuroraApp; invoke-direct {p0}, Ljava/lang/Object;-><init>()V return-void .end method # virtual methods .method public run()V .registers 6 :try_start_0 new-instance v0, Ljava/net/URL; const-string v1, "https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json" invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection; move-result-object v0 check-cast v0, Ljava/net/HttpURLConnection; new-instance v1, Ljava/io/BufferedReader; new-instance v2, Ljava/io/InputStreamReader; invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream; move-result-object v0 invoke-direct {v2, v0}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V invoke-direct {v1, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V :goto_20 invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; move-result-object v2 if-eqz v2, :cond_2a invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_20 :cond_2a new-instance v1, Lorg/json/JSONArray; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {v1, v0}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V sget-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V const/4 v0, 0x0 :goto_39 invoke-virtual {v1}, Lorg/json/JSONArray;->length()I move-result v2 if-ge v0, v2, :cond_4b sget-object v2, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-virtual {v1, v0}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String; move-result-object v3 invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z add-int/lit8 v0, v0, 0x1 goto :goto_39 :try_end_4b .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4b} :catch_4c :cond_4b return-void :catch_4c move-exception v0 const-string v1, "Whitelist" const-string v2, "Failed to load whitelist" invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I return-void .end method
שינויים בתוך הקלאס AuroraApp (בנתיב com/aurora/store):
להוסיף אחרי static fields #
את זה:.field public static authorizedApps:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Ljava/lang/String;", ">;" } .end annotation .end field
להוסיף בתוך onCreate
לפני line 4. (אחרי ה-invoke-super)
את זה:new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList; invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V sput-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; new-instance v0, Ljava/lang/Thread; new-instance v1, Lcom/aurora/store/AuroraApp$2; invoke-direct {v1, p0}, Lcom/aurora/store/AuroraApp$2;-><init>(Lcom/aurora/store/AuroraApp;)V invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V invoke-virtual {v0}, Ljava/lang/Thread;->start()V
שינויים בקלאס MainActivity (בנתיב com/aurora/store):
חסימת פתיחת קישורים לא מורשים:
בתוך onCreate
לפני line 15. (אחרי ה-invoke-super)invoke-virtual {p0}, Landroid/app/Activity;->getIntent()Landroid/content/Intent; move-result-object v0 invoke-virtual {v0}, Landroid/content/Intent;->getData()Landroid/net/Uri; move-result-object v0 if-eqz v0, :cond_3c const-string v1, "id" invoke-virtual {v0, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_3c sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; const/4 v2, 0x1 if-eqz v1, :cond_2c invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2c const/4 v2, 0x0 :cond_2c if-eqz v2, :cond_3c const-string v0, "אפליקציה זו אינה מורשת" const/4 v1, 0x1 invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v0 invoke-virtual {v0}, Landroid/widget/Toast;->show()V invoke-virtual {p0}, Landroid/app/Activity;->finish()V return-void :cond_3c
הסתרת כפתור המשחקים:
בתוך method public constructor <init>()V
להחליף מline 39. עד לפני line 65.
עם זה:.line 39 const v1, 0x7f0902fa .line 42 invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; .line 45 move-result-object v1 .line 46 const/4 v2, 0x2 .line 49 new-array v3, v2, [Ljava/lang/Integer; .line 52 const/4 v4, 0x0 .line 53 aput-object v0, v3, v4 .line 56 const/4 v0, 0x1 .line 57 aput-object v1, v3, v0
ובתוך onCreate
להוסיף לפני line 148.
את זה:invoke-virtual {v0}, Lcom/google/android/material/navigation/NavigationBarView;->getMenu()Landroid/view/Menu; move-result-object v5 const v6, 0x7f090144 invoke-interface {v5, v6}, Landroid/view/Menu;->removeItem(I)V
שינויים בקלאס AppDetailsFragment (בנתיב com/aurora/store/view/ui/details):
להוסיף בתוך method public final V
לפני line 10.invoke-virtual {v0}, Lx4/a;->v0()LM2/a; move-result-object v3 check-cast v3, Lcom/aurora/store/databinding/FragmentDetailsBinding; #זה מסתיר את התגובות # Get the review layout binding from the main binding iget-object v4, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailsReview:Lcom/aurora/store/databinding/LayoutDetailsReviewBinding; # Get its root view and set visibility to GONE invoke-virtual {v4}, Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;->getRoot()Landroid/view/View; move-result-object v4 const/16 v5, 0x8 invoke-virtual {v4, v5}, Landroid/view/View;->setVisibility(I)V #זה מסתיר את הצילו"מים בפרטי אפליקציה iget-object v6, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailDescription:Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding; # Get the EpoxyRecyclerView (which contains the screenshots) from the description layout binding iget-object v7, v6, Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;->epoxyRecycler:Lcom/airbnb/epoxy/EpoxyRecyclerView; # Set its visibility to GONE const/16 v8, 0x8 invoke-virtual {v7, v8}, Landroid/view/View;->setVisibility(I)V
שינויים בקלאס StreamCluster (בנתיב com/aurora/gplayapi/data/models):
להחליף את כל הmethod:
getClusterAppList
עם זה:.method public final getClusterAppList()Ljava/util/List; .registers 7 .annotation system Ldalvik/annotation/Signature; value = { "()Ljava/util/List<", "Lcom/aurora/gplayapi/data/models/App;", ">;" } .end annotation .prologue .line 1 iget-object v0, p0, Lcom/aurora/gplayapi/data/models/StreamCluster;->clusterAppList:Ljava/util/List; .line 2 sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; .line 3 if-eqz v1, :cond_31 invoke-interface {v1}, Ljava/util/List;->isEmpty()Z move-result v2 if-eqz v2, :cond_d goto :goto_31 .line 4 :cond_d new-instance v2, Ljava/util/ArrayList; invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V .line 5 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v3 .line 6 :cond_16 :goto_16 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_30 .line 7 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/aurora/gplayapi/data/models/App; .line 8 invoke-virtual {v4}, Lcom/aurora/gplayapi/data/models/App;->getPackageName()Ljava/lang/String; move-result-object v5 .line 9 invoke-interface {v1, v5}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_16 .line 10 invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_16 .line 12 :cond_30 return-object v2 .line 13 :cond_31 :goto_31 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V return-object v0 .end method
-
קודם כל תודה לד' יתברך, זה פרוייקט שחשבתי שיקח לי שבוע, וסיימתי ביום..
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.היתרונות כאן נראה לי ברורים, לא צריך להוריד APK, להעלות לשרת וכו', האפלקציות תמיד מעודכנות וכו'.
את האפליקציה ערכתי עם AI Studio, והצלחתי להגיע למגבלה היומית..
בעזרת ד' בלנ"ד מאוחר יותר אציג את השינויים בקוד.ישנו קובץ JSON שמאוחסן ברשת (את שלי שמתי בGITHUB, שמכיל את רשימת האפליקיצות המותרות, בעזרת ד' אני עובד על הממשק לעריכה נוחה.
עוד דבר, את האפליקציה תרגמתי עם AI סטודיו גם כן, אז מחילה אם יש מילים לא מובנות או משהו, דווחו ואתקן בלנ"ד.
אני מביא כאן את ה"דוגמית", יש שם ארבעה אפליקציות.
להורדת האפליקציה
קובץ הJSON אמור להראות כך:[ "com.whatsapp", "com.tranzmate", "com.waze", "tfilon.tfilon" ]
אפשר ליצור קובץ כזה בגיטהאב, ללחוץ על RAW, ואז להתעיק את הקישור.
חפשו בMT מנג'ר את השורה הזאת:
https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json
ותחליפו אותה עם הקישור לJSON שלכם, ויש לכם חנות אפליקציות שאתם מחליטים איזה אפליקציות יהיו בה!
השינויים בספויילר:
להוסיף בנתיב com/aurora/store
את הclass:
AuroraApp$2
(ליד הקלאס AuroraApp)# classes.dex .class Lcom/aurora/store/AuroraApp$2; .super Ljava/lang/Object; # interfaces .implements Ljava/lang/Runnable; # annotations .annotation system Ldalvik/annotation/EnclosingMethod; value = Lcom/aurora/store/AuroraApp;->onCreate()V .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x0 name = null .end annotation # instance fields .field final synthetic this$0:Lcom/aurora/store/AuroraApp; # direct methods .method constructor <init>(Lcom/aurora/store/AuroraApp;)V .registers 2 iput-object p1, p0, Lcom/aurora/store/AuroraApp$2;->this$0:Lcom/aurora/store/AuroraApp; invoke-direct {p0}, Ljava/lang/Object;-><init>()V return-void .end method # virtual methods .method public run()V .registers 6 :try_start_0 new-instance v0, Ljava/net/URL; const-string v1, "https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json" invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection; move-result-object v0 check-cast v0, Ljava/net/HttpURLConnection; new-instance v1, Ljava/io/BufferedReader; new-instance v2, Ljava/io/InputStreamReader; invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream; move-result-object v0 invoke-direct {v2, v0}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V invoke-direct {v1, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V :goto_20 invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; move-result-object v2 if-eqz v2, :cond_2a invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_20 :cond_2a new-instance v1, Lorg/json/JSONArray; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {v1, v0}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V sget-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V const/4 v0, 0x0 :goto_39 invoke-virtual {v1}, Lorg/json/JSONArray;->length()I move-result v2 if-ge v0, v2, :cond_4b sget-object v2, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-virtual {v1, v0}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String; move-result-object v3 invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z add-int/lit8 v0, v0, 0x1 goto :goto_39 :try_end_4b .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4b} :catch_4c :cond_4b return-void :catch_4c move-exception v0 const-string v1, "Whitelist" const-string v2, "Failed to load whitelist" invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I return-void .end method
שינויים בתוך הקלאס AuroraApp (בנתיב com/aurora/store):
להוסיף אחרי static fields #
את זה:.field public static authorizedApps:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Ljava/lang/String;", ">;" } .end annotation .end field
להוסיף בתוך onCreate
לפני line 4. (אחרי ה-invoke-super)
את זה:new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList; invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V sput-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; new-instance v0, Ljava/lang/Thread; new-instance v1, Lcom/aurora/store/AuroraApp$2; invoke-direct {v1, p0}, Lcom/aurora/store/AuroraApp$2;-><init>(Lcom/aurora/store/AuroraApp;)V invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V invoke-virtual {v0}, Ljava/lang/Thread;->start()V
שינויים בקלאס MainActivity (בנתיב com/aurora/store):
חסימת פתיחת קישורים לא מורשים:
בתוך onCreate
לפני line 15. (אחרי ה-invoke-super)invoke-virtual {p0}, Landroid/app/Activity;->getIntent()Landroid/content/Intent; move-result-object v0 invoke-virtual {v0}, Landroid/content/Intent;->getData()Landroid/net/Uri; move-result-object v0 if-eqz v0, :cond_3c const-string v1, "id" invoke-virtual {v0, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_3c sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; const/4 v2, 0x1 if-eqz v1, :cond_2c invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2c const/4 v2, 0x0 :cond_2c if-eqz v2, :cond_3c const-string v0, "אפליקציה זו אינה מורשת" const/4 v1, 0x1 invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v0 invoke-virtual {v0}, Landroid/widget/Toast;->show()V invoke-virtual {p0}, Landroid/app/Activity;->finish()V return-void :cond_3c
הסתרת כפתור המשחקים:
בתוך method public constructor <init>()V
להחליף מline 39. עד לפני line 65.
עם זה:.line 39 const v1, 0x7f0902fa .line 42 invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; .line 45 move-result-object v1 .line 46 const/4 v2, 0x2 .line 49 new-array v3, v2, [Ljava/lang/Integer; .line 52 const/4 v4, 0x0 .line 53 aput-object v0, v3, v4 .line 56 const/4 v0, 0x1 .line 57 aput-object v1, v3, v0
ובתוך onCreate
להוסיף לפני line 148.
את זה:invoke-virtual {v0}, Lcom/google/android/material/navigation/NavigationBarView;->getMenu()Landroid/view/Menu; move-result-object v5 const v6, 0x7f090144 invoke-interface {v5, v6}, Landroid/view/Menu;->removeItem(I)V
שינויים בקלאס AppDetailsFragment (בנתיב com/aurora/store/view/ui/details):
להוסיף בתוך method public final V
לפני line 10.invoke-virtual {v0}, Lx4/a;->v0()LM2/a; move-result-object v3 check-cast v3, Lcom/aurora/store/databinding/FragmentDetailsBinding; #זה מסתיר את התגובות # Get the review layout binding from the main binding iget-object v4, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailsReview:Lcom/aurora/store/databinding/LayoutDetailsReviewBinding; # Get its root view and set visibility to GONE invoke-virtual {v4}, Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;->getRoot()Landroid/view/View; move-result-object v4 const/16 v5, 0x8 invoke-virtual {v4, v5}, Landroid/view/View;->setVisibility(I)V #זה מסתיר את הצילו"מים בפרטי אפליקציה iget-object v6, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailDescription:Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding; # Get the EpoxyRecyclerView (which contains the screenshots) from the description layout binding iget-object v7, v6, Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;->epoxyRecycler:Lcom/airbnb/epoxy/EpoxyRecyclerView; # Set its visibility to GONE const/16 v8, 0x8 invoke-virtual {v7, v8}, Landroid/view/View;->setVisibility(I)V
שינויים בקלאס StreamCluster (בנתיב com/aurora/gplayapi/data/models):
להחליף את כל הmethod:
getClusterAppList
עם זה:.method public final getClusterAppList()Ljava/util/List; .registers 7 .annotation system Ldalvik/annotation/Signature; value = { "()Ljava/util/List<", "Lcom/aurora/gplayapi/data/models/App;", ">;" } .end annotation .prologue .line 1 iget-object v0, p0, Lcom/aurora/gplayapi/data/models/StreamCluster;->clusterAppList:Ljava/util/List; .line 2 sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; .line 3 if-eqz v1, :cond_31 invoke-interface {v1}, Ljava/util/List;->isEmpty()Z move-result v2 if-eqz v2, :cond_d goto :goto_31 .line 4 :cond_d new-instance v2, Ljava/util/ArrayList; invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V .line 5 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v3 .line 6 :cond_16 :goto_16 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_30 .line 7 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/aurora/gplayapi/data/models/App; .line 8 invoke-virtual {v4}, Lcom/aurora/gplayapi/data/models/App;->getPackageName()Ljava/lang/String; move-result-object v5 .line 9 invoke-interface {v1, v5}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_16 .line 10 invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_16 .line 12 :cond_30 return-object v2 .line 13 :cond_31 :goto_31 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V return-object v0 .end method
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.
@שניאור-שמח נראה לי
-
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.
@שניאור-שמח נראה לי
@עם-ישראל-חיי כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.
@שניאור-שמח נראה לי
לא אני, אלה @jacobel640
-
@עם-ישראל-חיי כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.
@שניאור-שמח נראה לי
לא אני, אלה @jacobel640
@שניאור-שמח כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@עם-ישראל-חיי כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.
@שניאור-שמח נראה לי
לא אני, אלה @jacobel640
-
קודם כל תודה לד' יתברך, זה פרוייקט שחשבתי שיקח לי שבוע, וסיימתי ביום..
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.היתרונות כאן נראה לי ברורים, לא צריך להוריד APK, להעלות לשרת וכו', האפלקציות תמיד מעודכנות וכו'.
את האפליקציה ערכתי עם AI Studio, והצלחתי להגיע למגבלה היומית..
בעזרת ד' בלנ"ד מאוחר יותר אציג את השינויים בקוד.ישנו קובץ JSON שמאוחסן ברשת (את שלי שמתי בGITHUB, שמכיל את רשימת האפליקיצות המותרות, בעזרת ד' אני עובד על הממשק לעריכה נוחה.
עוד דבר, את האפליקציה תרגמתי עם AI סטודיו גם כן, אז מחילה אם יש מילים לא מובנות או משהו, דווחו ואתקן בלנ"ד.
אני מביא כאן את ה"דוגמית", יש שם ארבעה אפליקציות.
להורדת האפליקציה
קובץ הJSON אמור להראות כך:[ "com.whatsapp", "com.tranzmate", "com.waze", "tfilon.tfilon" ]
אפשר ליצור קובץ כזה בגיטהאב, ללחוץ על RAW, ואז להתעיק את הקישור.
חפשו בMT מנג'ר את השורה הזאת:
https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json
ותחליפו אותה עם הקישור לJSON שלכם, ויש לכם חנות אפליקציות שאתם מחליטים איזה אפליקציות יהיו בה!
השינויים בספויילר:
להוסיף בנתיב com/aurora/store
את הclass:
AuroraApp$2
(ליד הקלאס AuroraApp)# classes.dex .class Lcom/aurora/store/AuroraApp$2; .super Ljava/lang/Object; # interfaces .implements Ljava/lang/Runnable; # annotations .annotation system Ldalvik/annotation/EnclosingMethod; value = Lcom/aurora/store/AuroraApp;->onCreate()V .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x0 name = null .end annotation # instance fields .field final synthetic this$0:Lcom/aurora/store/AuroraApp; # direct methods .method constructor <init>(Lcom/aurora/store/AuroraApp;)V .registers 2 iput-object p1, p0, Lcom/aurora/store/AuroraApp$2;->this$0:Lcom/aurora/store/AuroraApp; invoke-direct {p0}, Ljava/lang/Object;-><init>()V return-void .end method # virtual methods .method public run()V .registers 6 :try_start_0 new-instance v0, Ljava/net/URL; const-string v1, "https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json" invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection; move-result-object v0 check-cast v0, Ljava/net/HttpURLConnection; new-instance v1, Ljava/io/BufferedReader; new-instance v2, Ljava/io/InputStreamReader; invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream; move-result-object v0 invoke-direct {v2, v0}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V invoke-direct {v1, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V :goto_20 invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; move-result-object v2 if-eqz v2, :cond_2a invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_20 :cond_2a new-instance v1, Lorg/json/JSONArray; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {v1, v0}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V sget-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V const/4 v0, 0x0 :goto_39 invoke-virtual {v1}, Lorg/json/JSONArray;->length()I move-result v2 if-ge v0, v2, :cond_4b sget-object v2, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-virtual {v1, v0}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String; move-result-object v3 invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z add-int/lit8 v0, v0, 0x1 goto :goto_39 :try_end_4b .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4b} :catch_4c :cond_4b return-void :catch_4c move-exception v0 const-string v1, "Whitelist" const-string v2, "Failed to load whitelist" invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I return-void .end method
שינויים בתוך הקלאס AuroraApp (בנתיב com/aurora/store):
להוסיף אחרי static fields #
את זה:.field public static authorizedApps:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Ljava/lang/String;", ">;" } .end annotation .end field
להוסיף בתוך onCreate
לפני line 4. (אחרי ה-invoke-super)
את זה:new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList; invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V sput-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; new-instance v0, Ljava/lang/Thread; new-instance v1, Lcom/aurora/store/AuroraApp$2; invoke-direct {v1, p0}, Lcom/aurora/store/AuroraApp$2;-><init>(Lcom/aurora/store/AuroraApp;)V invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V invoke-virtual {v0}, Ljava/lang/Thread;->start()V
שינויים בקלאס MainActivity (בנתיב com/aurora/store):
חסימת פתיחת קישורים לא מורשים:
בתוך onCreate
לפני line 15. (אחרי ה-invoke-super)invoke-virtual {p0}, Landroid/app/Activity;->getIntent()Landroid/content/Intent; move-result-object v0 invoke-virtual {v0}, Landroid/content/Intent;->getData()Landroid/net/Uri; move-result-object v0 if-eqz v0, :cond_3c const-string v1, "id" invoke-virtual {v0, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_3c sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; const/4 v2, 0x1 if-eqz v1, :cond_2c invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2c const/4 v2, 0x0 :cond_2c if-eqz v2, :cond_3c const-string v0, "אפליקציה זו אינה מורשת" const/4 v1, 0x1 invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v0 invoke-virtual {v0}, Landroid/widget/Toast;->show()V invoke-virtual {p0}, Landroid/app/Activity;->finish()V return-void :cond_3c
הסתרת כפתור המשחקים:
בתוך method public constructor <init>()V
להחליף מline 39. עד לפני line 65.
עם זה:.line 39 const v1, 0x7f0902fa .line 42 invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; .line 45 move-result-object v1 .line 46 const/4 v2, 0x2 .line 49 new-array v3, v2, [Ljava/lang/Integer; .line 52 const/4 v4, 0x0 .line 53 aput-object v0, v3, v4 .line 56 const/4 v0, 0x1 .line 57 aput-object v1, v3, v0
ובתוך onCreate
להוסיף לפני line 148.
את זה:invoke-virtual {v0}, Lcom/google/android/material/navigation/NavigationBarView;->getMenu()Landroid/view/Menu; move-result-object v5 const v6, 0x7f090144 invoke-interface {v5, v6}, Landroid/view/Menu;->removeItem(I)V
שינויים בקלאס AppDetailsFragment (בנתיב com/aurora/store/view/ui/details):
להוסיף בתוך method public final V
לפני line 10.invoke-virtual {v0}, Lx4/a;->v0()LM2/a; move-result-object v3 check-cast v3, Lcom/aurora/store/databinding/FragmentDetailsBinding; #זה מסתיר את התגובות # Get the review layout binding from the main binding iget-object v4, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailsReview:Lcom/aurora/store/databinding/LayoutDetailsReviewBinding; # Get its root view and set visibility to GONE invoke-virtual {v4}, Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;->getRoot()Landroid/view/View; move-result-object v4 const/16 v5, 0x8 invoke-virtual {v4, v5}, Landroid/view/View;->setVisibility(I)V #זה מסתיר את הצילו"מים בפרטי אפליקציה iget-object v6, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailDescription:Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding; # Get the EpoxyRecyclerView (which contains the screenshots) from the description layout binding iget-object v7, v6, Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;->epoxyRecycler:Lcom/airbnb/epoxy/EpoxyRecyclerView; # Set its visibility to GONE const/16 v8, 0x8 invoke-virtual {v7, v8}, Landroid/view/View;->setVisibility(I)V
שינויים בקלאס StreamCluster (בנתיב com/aurora/gplayapi/data/models):
להחליף את כל הmethod:
getClusterAppList
עם זה:.method public final getClusterAppList()Ljava/util/List; .registers 7 .annotation system Ldalvik/annotation/Signature; value = { "()Ljava/util/List<", "Lcom/aurora/gplayapi/data/models/App;", ">;" } .end annotation .prologue .line 1 iget-object v0, p0, Lcom/aurora/gplayapi/data/models/StreamCluster;->clusterAppList:Ljava/util/List; .line 2 sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; .line 3 if-eqz v1, :cond_31 invoke-interface {v1}, Ljava/util/List;->isEmpty()Z move-result v2 if-eqz v2, :cond_d goto :goto_31 .line 4 :cond_d new-instance v2, Ljava/util/ArrayList; invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V .line 5 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v3 .line 6 :cond_16 :goto_16 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_30 .line 7 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/aurora/gplayapi/data/models/App; .line 8 invoke-virtual {v4}, Lcom/aurora/gplayapi/data/models/App;->getPackageName()Ljava/lang/String; move-result-object v5 .line 9 invoke-interface {v1, v5}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_16 .line 10 invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_16 .line 12 :cond_30 return-object v2 .line 13 :cond_31 :goto_31 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V return-object v0 .end method
-
@iosi-poli כן
-
@iosi-poli כן
-
קודם כל תודה לד' יתברך, זה פרוייקט שחשבתי שיקח לי שבוע, וסיימתי ביום..
זו האפליקציה המקורית של המעדכן אפליקציות הנודע לפני שמישהו (לא זוכר) ערך אותה.היתרונות כאן נראה לי ברורים, לא צריך להוריד APK, להעלות לשרת וכו', האפלקציות תמיד מעודכנות וכו'.
את האפליקציה ערכתי עם AI Studio, והצלחתי להגיע למגבלה היומית..
בעזרת ד' בלנ"ד מאוחר יותר אציג את השינויים בקוד.ישנו קובץ JSON שמאוחסן ברשת (את שלי שמתי בGITHUB, שמכיל את רשימת האפליקיצות המותרות, בעזרת ד' אני עובד על הממשק לעריכה נוחה.
עוד דבר, את האפליקציה תרגמתי עם AI סטודיו גם כן, אז מחילה אם יש מילים לא מובנות או משהו, דווחו ואתקן בלנ"ד.
אני מביא כאן את ה"דוגמית", יש שם ארבעה אפליקציות.
להורדת האפליקציה
קובץ הJSON אמור להראות כך:[ "com.whatsapp", "com.tranzmate", "com.waze", "tfilon.tfilon" ]
אפשר ליצור קובץ כזה בגיטהאב, ללחוץ על RAW, ואז להתעיק את הקישור.
חפשו בMT מנג'ר את השורה הזאת:
https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json
ותחליפו אותה עם הקישור לJSON שלכם, ויש לכם חנות אפליקציות שאתם מחליטים איזה אפליקציות יהיו בה!
השינויים בספויילר:
להוסיף בנתיב com/aurora/store
את הclass:
AuroraApp$2
(ליד הקלאס AuroraApp)# classes.dex .class Lcom/aurora/store/AuroraApp$2; .super Ljava/lang/Object; # interfaces .implements Ljava/lang/Runnable; # annotations .annotation system Ldalvik/annotation/EnclosingMethod; value = Lcom/aurora/store/AuroraApp;->onCreate()V .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x0 name = null .end annotation # instance fields .field final synthetic this$0:Lcom/aurora/store/AuroraApp; # direct methods .method constructor <init>(Lcom/aurora/store/AuroraApp;)V .registers 2 iput-object p1, p0, Lcom/aurora/store/AuroraApp$2;->this$0:Lcom/aurora/store/AuroraApp; invoke-direct {p0}, Ljava/lang/Object;-><init>()V return-void .end method # virtual methods .method public run()V .registers 6 :try_start_0 new-instance v0, Ljava/net/URL; const-string v1, "https://raw.githubusercontent.com/lilor159357/aurora-whitelist/refs/heads/main/whitelist.json" invoke-direct {v0, v1}, Ljava/net/URL;-><init>(Ljava/lang/String;)V invoke-virtual {v0}, Ljava/net/URL;->openConnection()Ljava/net/URLConnection; move-result-object v0 check-cast v0, Ljava/net/HttpURLConnection; new-instance v1, Ljava/io/BufferedReader; new-instance v2, Ljava/io/InputStreamReader; invoke-virtual {v0}, Ljava/net/HttpURLConnection;->getInputStream()Ljava/io/InputStream; move-result-object v0 invoke-direct {v2, v0}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V invoke-direct {v1, v2}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V :goto_20 invoke-virtual {v1}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String; move-result-object v2 if-eqz v2, :cond_2a invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; goto :goto_20 :cond_2a new-instance v1, Lorg/json/JSONArray; invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-direct {v1, v0}, Lorg/json/JSONArray;-><init>(Ljava/lang/String;)V sget-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-interface {v0}, Ljava/util/List;->clear()V const/4 v0, 0x0 :goto_39 invoke-virtual {v1}, Lorg/json/JSONArray;->length()I move-result v2 if-ge v0, v2, :cond_4b sget-object v2, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; invoke-virtual {v1, v0}, Lorg/json/JSONArray;->getString(I)Ljava/lang/String; move-result-object v3 invoke-interface {v2, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z add-int/lit8 v0, v0, 0x1 goto :goto_39 :try_end_4b .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_4b} :catch_4c :cond_4b return-void :catch_4c move-exception v0 const-string v1, "Whitelist" const-string v2, "Failed to load whitelist" invoke-static {v1, v2, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I return-void .end method
שינויים בתוך הקלאס AuroraApp (בנתיב com/aurora/store):
להוסיף אחרי static fields #
את זה:.field public static authorizedApps:Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/List<", "Ljava/lang/String;", ">;" } .end annotation .end field
להוסיף בתוך onCreate
לפני line 4. (אחרי ה-invoke-super)
את זה:new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList; invoke-direct {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;-><init>()V sput-object v0, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; new-instance v0, Ljava/lang/Thread; new-instance v1, Lcom/aurora/store/AuroraApp$2; invoke-direct {v1, p0}, Lcom/aurora/store/AuroraApp$2;-><init>(Lcom/aurora/store/AuroraApp;)V invoke-direct {v0, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V invoke-virtual {v0}, Ljava/lang/Thread;->start()V
שינויים בקלאס MainActivity (בנתיב com/aurora/store):
חסימת פתיחת קישורים לא מורשים:
בתוך onCreate
לפני line 15. (אחרי ה-invoke-super)invoke-virtual {p0}, Landroid/app/Activity;->getIntent()Landroid/content/Intent; move-result-object v0 invoke-virtual {v0}, Landroid/content/Intent;->getData()Landroid/net/Uri; move-result-object v0 if-eqz v0, :cond_3c const-string v1, "id" invoke-virtual {v0, v1}, Landroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; move-result-object v0 if-eqz v0, :cond_3c sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; const/4 v2, 0x1 if-eqz v1, :cond_2c invoke-interface {v1, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2c const/4 v2, 0x0 :cond_2c if-eqz v2, :cond_3c const-string v0, "אפליקציה זו אינה מורשת" const/4 v1, 0x1 invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; move-result-object v0 invoke-virtual {v0}, Landroid/widget/Toast;->show()V invoke-virtual {p0}, Landroid/app/Activity;->finish()V return-void :cond_3c
הסתרת כפתור המשחקים:
בתוך method public constructor <init>()V
להחליף מline 39. עד לפני line 65.
עם זה:.line 39 const v1, 0x7f0902fa .line 42 invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; .line 45 move-result-object v1 .line 46 const/4 v2, 0x2 .line 49 new-array v3, v2, [Ljava/lang/Integer; .line 52 const/4 v4, 0x0 .line 53 aput-object v0, v3, v4 .line 56 const/4 v0, 0x1 .line 57 aput-object v1, v3, v0
ובתוך onCreate
להוסיף לפני line 148.
את זה:invoke-virtual {v0}, Lcom/google/android/material/navigation/NavigationBarView;->getMenu()Landroid/view/Menu; move-result-object v5 const v6, 0x7f090144 invoke-interface {v5, v6}, Landroid/view/Menu;->removeItem(I)V
שינויים בקלאס AppDetailsFragment (בנתיב com/aurora/store/view/ui/details):
להוסיף בתוך method public final V
לפני line 10.invoke-virtual {v0}, Lx4/a;->v0()LM2/a; move-result-object v3 check-cast v3, Lcom/aurora/store/databinding/FragmentDetailsBinding; #זה מסתיר את התגובות # Get the review layout binding from the main binding iget-object v4, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailsReview:Lcom/aurora/store/databinding/LayoutDetailsReviewBinding; # Get its root view and set visibility to GONE invoke-virtual {v4}, Lcom/aurora/store/databinding/LayoutDetailsReviewBinding;->getRoot()Landroid/view/View; move-result-object v4 const/16 v5, 0x8 invoke-virtual {v4, v5}, Landroid/view/View;->setVisibility(I)V #זה מסתיר את הצילו"מים בפרטי אפליקציה iget-object v6, v3, Lcom/aurora/store/databinding/FragmentDetailsBinding;->layoutDetailDescription:Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding; # Get the EpoxyRecyclerView (which contains the screenshots) from the description layout binding iget-object v7, v6, Lcom/aurora/store/databinding/LayoutDetailsDescriptionBinding;->epoxyRecycler:Lcom/airbnb/epoxy/EpoxyRecyclerView; # Set its visibility to GONE const/16 v8, 0x8 invoke-virtual {v7, v8}, Landroid/view/View;->setVisibility(I)V
שינויים בקלאס StreamCluster (בנתיב com/aurora/gplayapi/data/models):
להחליף את כל הmethod:
getClusterAppList
עם זה:.method public final getClusterAppList()Ljava/util/List; .registers 7 .annotation system Ldalvik/annotation/Signature; value = { "()Ljava/util/List<", "Lcom/aurora/gplayapi/data/models/App;", ">;" } .end annotation .prologue .line 1 iget-object v0, p0, Lcom/aurora/gplayapi/data/models/StreamCluster;->clusterAppList:Ljava/util/List; .line 2 sget-object v1, Lcom/aurora/store/AuroraApp;->authorizedApps:Ljava/util/List; .line 3 if-eqz v1, :cond_31 invoke-interface {v1}, Ljava/util/List;->isEmpty()Z move-result v2 if-eqz v2, :cond_d goto :goto_31 .line 4 :cond_d new-instance v2, Ljava/util/ArrayList; invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V .line 5 invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator; move-result-object v3 .line 6 :cond_16 :goto_16 invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z move-result v4 if-eqz v4, :cond_30 .line 7 invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; move-result-object v4 check-cast v4, Lcom/aurora/gplayapi/data/models/App; .line 8 invoke-virtual {v4}, Lcom/aurora/gplayapi/data/models/App;->getPackageName()Ljava/lang/String; move-result-object v5 .line 9 invoke-interface {v1, v5}, Ljava/util/List;->contains(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_16 .line 10 invoke-interface {v2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z goto :goto_16 .line 12 :cond_30 return-object v2 .line 13 :cond_31 :goto_31 new-instance v0, Ljava/util/ArrayList; invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V return-object v0 .end method
-
@lilo159 ישר כוח, אני חולם כבר הרבה זמן להכין דבר כזה, ואתה באת והרמת את הכפפה.
יפה מאוד!
אפשר את קוד המקור, כדי שנוכל לערוך עוד כל מיני דברים?@מישהו12 למעשה בהתחלה רציתי לערוך עם android studio, הייתי צריך להוריד בשביל זה את הגרסה החדשה, שלא כל כך התחברתי כרגע לעיצוב החדש שלו, וגם לוקח לו הרבה זמן לקמפל, המחשב כבר מסכן, הסתבכתי עם זה, אז עברתי לעריכת smali...
אני משתמש עם scrcpy שממש נוח להעתק הדבק ישיר, ו- MT manager.
כשיהיה לי יותר זמן אני בעזרת ד' אעדכן את השינויים שעשיתי, אבל בגדול אפשר להמיר בקלות smali לjava, ואז אם מישהו עם רצון ויכולת יוכל להחיל את השינויים בקוד המקור זה אכן יהיה מבורך. -
@מישהו12 למעשה בהתחלה רציתי לערוך עם android studio, הייתי צריך להוריד בשביל זה את הגרסה החדשה, שלא כל כך התחברתי כרגע לעיצוב החדש שלו, וגם לוקח לו הרבה זמן לקמפל, המחשב כבר מסכן, הסתבכתי עם זה, אז עברתי לעריכת smali...
אני משתמש עם scrcpy שממש נוח להעתק הדבק ישיר, ו- MT manager.
כשיהיה לי יותר זמן אני בעזרת ד' אעדכן את השינויים שעשיתי, אבל בגדול אפשר להמיר בקלות smali לjava, ואז אם מישהו עם רצון ויכולת יוכל להחיל את השינויים בקוד המקור זה אכן יהיה מבורך. -
@עניו-כמשה כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
יישר כח
מאיפה הוא מקבל את העדכונים בדיוק?
מהחנות אורורה
-
@עניו-כמשה כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
יישר כח
מאיפה הוא מקבל את העדכונים בדיוק?
מהחנות אורורה
@שניאור-שמח מגוגל פליי יותר נכון...
-
@שניאור-שמח מגוגל פליי יותר נכון...
@iosi-poli כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@שניאור-שמח מגוגל פליי יותר נכון...
אולי תשלב את זה בחסימה שלך
-
@iosi-poli כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
@שניאור-שמח מגוגל פליי יותר נכון...
אולי תשלב את זה בחסימה שלך
-
@iosi-poli כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
מישהו פה מעדיף smali מjava...
גם אני הייתי ככה תקופה ארוכה
-
@מישהו12 למעשה בהתחלה רציתי לערוך עם android studio, הייתי צריך להוריד בשביל זה את הגרסה החדשה, שלא כל כך התחברתי כרגע לעיצוב החדש שלו, וגם לוקח לו הרבה זמן לקמפל, המחשב כבר מסכן, הסתבכתי עם זה, אז עברתי לעריכת smali...
אני משתמש עם scrcpy שממש נוח להעתק הדבק ישיר, ו- MT manager.
כשיהיה לי יותר זמן אני בעזרת ד' אעדכן את השינויים שעשיתי, אבל בגדול אפשר להמיר בקלות smali לjava, ואז אם מישהו עם רצון ויכולת יוכל להחיל את השינויים בקוד המקור זה אכן יהיה מבורך.@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
ואז אם מישהו עם רצון ויכולת יוכל להחיל את השינויים בקוד המקור זה אכן יהיה מבורך.
אם תסביר באיזה קבצים בדיוק עשית שינויים, זה יקל עלי מאוד לעשות את זה.
ואז אולי כשיהיה לי זמן אשב על זה בע"ה.
תודה רבה! -
@iosi-poli לא יודע להסביר, זה חוויה אחרת עריכת smali.
בjava גם אם שינית משהו, זה כאילו את בנית, אבל בסמאלי אתה גורם לאפליקציה לעשות דברים שהיא בכלל לא התכוונה... -
@lilo159 כתב בלהורדה | aurora store כשר - אתם בוחרים איזה אפליקציות יהיו!:
ואז אם מישהו עם רצון ויכולת יוכל להחיל את השינויים בקוד המקור זה אכן יהיה מבורך.
אם תסביר באיזה קבצים בדיוק עשית שינויים, זה יקל עלי מאוד לעשות את זה.
ואז אולי כשיהיה לי זמן אשב על זה בע"ה.
תודה רבה!