Gönderen Konu: [Anlatım] Samsung Edge Panel Portlama Nasıl Yapılır  (Okunma sayısı 764 defa)

Çevrimdışı bysalihidriscan

  • Rom Geliştiricisi
  • ****
  • Beğenmeler
  • -Beğenme Sayısı: 81
  • -Beğenilme Sayısı: 336
  • İleti: 1269
  • İnanıyorsanız Korkmayın... [Ali-İmran 139.Ayet]
  • Rom: Stock
  • Tlf Modeli: Note7 FE
  • Tlf Yazılımı: Android 8.0.x
[Anlatım] Samsung Edge Panel Portlama Nasıl Yapılır
« : 30 Ağustos 2018, 00:41:29 »
Samsung 6.0.1 Cihazlarınız İçin Edge Panel Portlama

Anlatım Tarafımca Türkçeye Çevrilmiştir Ve Denenmiştir.

Bu anlatım ile sizde kendi cihazınız için port yapabilirsiniz...


Anlatım
Porta başlamadan önce gerekli araçları kurmalısınız apktool java jdk ve Stock roma port yapmak istiyorsanız Romunuzu DeOdex hale getirmelisiniz port Smali Metodları üzerinden çalıştığı için Stock Odex Romlarda çalışmayacaktır...

Tüm gereksinimleri kurduysanız başlıyalım..

Romunuzda Framework.jar Ve Services.jarı alın Ve Decompile edin..

Bölüm 1


Services.jara girin Ve şu yolu bulun.
Alıntı
smali/com/android/server/SystemServer.smali

Bu Smaliyi açın şu kodu arayın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
const-string/jumbo v6, "spengestureservice"
Bu kodu arattığınız zaman karşınıza şu şekilde orjinal metin kodu çıkacak.
Alıntı
const-string/jumbo v6, "spengestureservice"

    new-instance v7, Lcom/android/server/smartclip/SpenGestureManagerService;

    move-object/from16 v0, v208

    invoke-direct {v7, v5, v0}, Lcom/android/server/smartclip/SpenGestureManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V

    invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
    :try_end_7f
    .catch Ljava/lang/Throwable; {:try_start_7f .. :try_end_7f} :catch_50

    :goto_54
    :try_start_80
    const-string v6, "SystemServer"

    const-string v7, "SamplingProfiler Service"

    invoke-static {v6, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I

    const-string/jumbo v6, "samplingprofiler"

    new-instance v7, Lcom/android/server/SamplingProfilerService;

    invoke-direct {v7, v5}, Lcom/android/server/SamplingProfilerService;-><init>(Landroid/content/Context;)V

    invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V

Bu kodu arattıktan sonra şu satırı arayıp bulacaz.
Alıntı
const-string v7, "SamplingProfiler Service"

Bu satırı bulduktan sonra şu kodları [:goto_54]  bu :goto_54 sayı sizde değişebilir hatta her romda değişebilir bende 54 sizde başka olabilir dikkatli olun bu :goto_54 kodunu nasıl bulacağınızı sormak istersenizde [SamplingProfiller] Kodunun 2 üst satırında bulunuyor bukodu bulduktan sonra bunun  bi altına ekleyecez ve kod ları ekledikten sonra muhakkak bir satır boşluk olsun eklenecek kodlar şunlardır.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    move-object/from16 v0, p0

    iget-object v6, v0, Lcom/android/server/SystemServer;->mSystemServiceManager:Lcom/android/server/SystemServiceManager;

    const-string v7, "com.android.server.cocktailbar.CocktailBarManagerService"

    invoke-virtual {v6, v7}, Lcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;


kodlar eklendikten sonra şu şekilde olacaktır.
Alıntı
const-string/jumbo v6, "spengestureservice"

    new-instance v7, Lcom/android/server/smartclip/SpenGestureManagerService;

    move-object/from16 v0, v208

    invoke-direct {v7, v5, v0}, Lcom/android/server/smartclip/SpenGestureManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V

    invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
    :try_end_7f
    .catch Ljava/lang/Throwable; {:try_start_7f .. :try_end_7f} :catch_50

    :goto_54
    move-object/from16 v0, p0

    iget-object v6, v0, Lcom/android/server/SystemServer;->mSystemServiceManager:Lcom/android/server/SystemServiceManager;

    const-string v7, "com.android.server.cocktailbar.CocktailBarManagerService"

    invoke-virtual {v6, v7}, Lcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;
   
   :try_start_80
    const-string v6, "SystemServer"

    const-string v7, "SamplingProfiler Service"

    invoke-static {v6, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I

    const-string/jumbo v6, "samplingprofiler"

    new-instance v7, Lcom/android/server/SamplingProfilerService;

    invoke-direct {v7, v5}, Lcom/android/server/SamplingProfilerService;-><init>(Landroid/content/Context;)V

    invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
[/B]

Kaydedip çıkış yapın.

2.Smali düzenlemesi şu Yola gidin Ve Smali dosyasını açın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
smali/com/android/server/power/PowerManagerService.smali
Smali yi açtıktan sonra şu kodu arayın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
const-string v8, "SEC_PRODUCT_FEATURE_COMMON_SUPPORT_COCKTAIL_FW: false"
son kısımda olan [false] yi "true" yapıp kaydedip çıkıyoruz.

3.Smali Düzenlemesi şu Yola gidin ve Smaliyi açın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
smali/com/android/server/notification/NotificationManagerService$6.smali[/B]

Smaliyi açtıktan sonra şu kodu aratın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V
Bu yukarıdaki metodu buraya kadar olan kısmı seçin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.end method[/B]

bende orjınal metod şu şeklde.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V
    .locals 0

    return-void
.end method



Ve metodu komple şu Metod ile değiştirin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V
    .registers 14
    .param p1, "pkg"    # Ljava/lang/String;
    .param p2, "opPkg"    # Ljava/lang/String;
    .param p3, "id"    # I
    .param p4, "extra"    # Landroid/os/Bundle;
    .param p5, "userId"    # I

    .prologue
    .line 2020
    # invokes: Lcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
    invoke-static {p1}, Lcom/android/server/notification/NotificationManagerService;->access$3400(Ljava/lang/String;)V

    .line 2021
    iget-object v0, p0, Lcom/android/server/notification/NotificationManagerService$6;->this$0:Lcom/android/server/notification/NotificationManagerService;

    invoke-static {}, Landroid/os/Binder;->getCallingUid()I

    move-result v3

    invoke-static {}, Landroid/os/Binder;->getCallingPid()I

    move-result v4

    move-object v1, p1

    move-object v2, p2

    move v5, p3

    move-object v6, p4

    move v7, p5

    invoke-virtual/range {v0 .. v7}, Lcom/android/server/notification/NotificationManagerService;->enqueueEdgeNotificationInternal(Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Bundle;I)V

    .line 2023
    return-void
.end method

Aynı Smaliden çıkmadan Şu koduda aratın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V[/B]

Arattıktan sonra orjınal metin bende şu şeklde sizde başka şekilde olabilir.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V
    .locals 0

    return-void
.end method

Bu Metoduda komple Şu Metod ile Değiştirin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V
    .registers 12
    .param p1, "pkg"    # Ljava/lang/String;
    .param p2, "id"    # I
    .param p3, "extra"    # Landroid/os/Bundle;
    .param p4, "userId"    # I

    .prologue
    .line 2028
    # invokes: Lcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
    invoke-static {p1}, Lcom/android/server/notification/NotificationManagerService;->access$3400(Ljava/lang/String;)V

    .line 2029
    invoke-static {}, Landroid/os/Binder;->getCallingPid()I

    move-result v0

    invoke-static {}, Landroid/os/Binder;->getCallingUid()I

    move-result v1

    const/4 v3, 0x1

    const/4 v4, 0x0

    const-string v5, "cancelNotificationWithTag"

    move v2, p4

    move-object v6, p1

    invoke-static/range {v0 .. v6}, Landroid/app/ActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I

    move-result p4

    .line 2032
    iget-object v0, p0, Lcom/android/server/notification/NotificationManagerService$6;->this$0:Lcom/android/server/notification/NotificationManagerService;

    invoke-static {}, Landroid/os/Binder;->getCallingUid()I

    move-result v1

    invoke-static {}, Landroid/os/Binder;->getCallingPid()I

    move-result v2

    move-object v3, p1

    move v4, p2

    move-object v5, p3

    move v6, p4

    invoke-virtual/range {v0 .. v6}, Lcom/android/server/notification/NotificationManagerService;->removeEdgeNotificationInternal(IILjava/lang/String;ILandroid/os/Bundle;I)V

    .line 2034
    return-void
.end method
[/B]


Bölüm 2
Framework.jara Girin Ve Şu Yolu Bulun.

Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
smali/android/app/NotificationManager.smali[/B][/U]

Smali dosyasına girin Ve Şu kodu aratın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V[/B]

Bu kodu aratııktan sonra orjınal metin şu şekilde olacaktır veya benzeri olabilir.
Bendeki orjınal metin şu şekilde.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
    .locals 0

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    iput-object p1, p0, Landroid/app/NotificationManager;->mContext:Landroid/content/Context;

    return-void
.end method

Ve bu metod içinde şu satırlara dikkat edicez.
1.si eğer şu kodun altında
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
Şu kod varsa
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.registers 3
Varsa Eğer Şu kod ile Değiştirin Yoksa hiç dokunmayın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    .registers 4
Sonrasında şu satırı bulun.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    iput-object p1, p0, Landroid/app/NotificationManager;->mContext:Landroid/content/Context;
Bu satırı bulduktan sonra bi alt satırını gene boş bırakıp şu kodları ekleyin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    new-instance v0, Landroid/app/NotificationManager$EdgeNotificationManager;

    invoke-direct {v0, p1}, Landroid/app/NotificationManager$EdgeNotificationManager;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Landroid/app/NotificationManager;->mEdgeNotificationManager:Landroid/app/NotificationManager$EdgeNotificationManager;

Ekledikten Sonra şu şekilde gözükecektir.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
    .locals 0

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    iput-object p1, p0, Landroid/app/NotificationManager;->mContext:Landroid/content/Context;

    new-instance v0, Landroid/app/NotificationManager$EdgeNotificationManager;

    invoke-direct {v0, p1}, Landroid/app/NotificationManager$EdgeNotificationManager;-><init>(Landroid/content/Context;)V

    iput-object v0, p0, Landroid/app/NotificationManager;->mEdgeNotificationManager:Landroid/app/NotificationManager$EdgeNotificationManager;
 
    return-void
.end method
[/B]

Smaliyi kaydedin Ve çıkış yapın.

2.Smali Düzenlemesi Şu yola gidin ve smaliyi açın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
smali/android/app/SystemServiceRegistry.smali
Şu kodu aratın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    const-string/jumbo v0, "multiwindow_facade"
Bu metodda şu kodu aratın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V
Ve bi alt satırı gene boş olsun ve şu kodları ekleyin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    const-string v0, "CocktailBarService"

    const-class v1, Lcom/samsung/android/cocktailbar/CocktailBarManager;

    new-instance v2, Landroid/app/SystemServiceRegistry$85;

    invoke-direct {v2}, Landroid/app/SystemServiceRegistry$85;-><init>()V

    invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V

kodlar eklendikten sonra şu şekilde gözükecektir.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    const-string/jumbo v0, "multiwindow_facade"

    const-class v1, Lcom/samsung/android/multiwindow/MultiWindowFacade;

    new-instance v2, Landroid/app/SystemServiceRegistry$83;

    invoke-direct {v2}, Landroid/app/SystemServiceRegistry$83;-><init>()V

    invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V

    const-string v0, "CocktailBarService"

    const-class v1, Lcom/samsung/android/cocktailbar/CocktailBarManager;

    new-instance v2, Landroid/app/SystemServiceRegistry$85;

    invoke-direct {v2}, Landroid/app/SystemServiceRegistry$85;-><init>()V

    invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V
 
    const-string/jumbo v0, "spengestureservice"

Kodları ekledikten sonra bi alt satırda verilen smali dosyasını şu yola atın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
smali/android/app/
Smali linki: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın]edgepanelsmali.rar[/URL]

Ve framework.jar ve Services.jarı kapatın artık framework portunuz hazır.

Cihazınıza Ait System/etc bölümünden floating_feature.xml dosyasını alın notepad ile açın ve şu satırları arayın yoksa kendiniz ekleyin.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    <SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE></SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>
    <SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE></SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>

Bu kodları şu şekilde ayarlayın.
Kod: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın
    <SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>people,task,circle,panel</SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>
    <SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>-1</SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>
[/B][/B]

Kaydedip çıkın.

Flaşlanabilir Zip Olarak Oluşturma
Öncelikle portu tam olarak bitirmek için edge panel uygulamalarına ve permissions izinlerine sahip olmamız gerekir edge panel uygulamaları Note7 Stock romundan Portlanmıştır MultiLanguagedir.
EdgePanelApps Link: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın]EdgePanelApps.zip[/URL]
Zip Flaşlayıcı Link: Linkleri görebilmek için üye olmalısınız. Kayıt Olun yada Giriş Yapın]EdgePanelPort.zip[/URL]

Zip flaşlayıcıyı indirin masaüstüne çıkartın edge panel uygulamalarını indirin zipten çıkarıp zip flaşlayıcının içindeki system klasörüne atın system klasörünün içine framework adlı klasör oluşturup portlamış olduğunuz frameworkları içine atın ve "floating_feature.xml" dosyanızıda etc nin içine atın ve zip olarak sıkıştırın artık flashlanabilir zipinizde hazır ve twrp den flashlayabilirsiniz.


Not:Edge panel bizim cihazımıza ait olmadığı için genel portlardaki sorunlar olabilir ancak çok kullanışlı olduğu kesindir.




« Son Düzenleme: 30 Ağustos 2018, 00:48:09 Gönderen: bysalihidriscan »

 

Güncel Konular

Yardım "Üzgünüz bir seferde 30 medya öğesinden daha fazla paylaşamazsınız" Gönderen: onurmemo77
[22 Nisan 2019, 11:18:34]


SM-A300HQ Galaxy A3 Türkiye - A300HXXU1AOD3_4.4.4 Resmi Sürümü Gönderen: kuark13
[22 Nisan 2019, 02:59:37]


T50 Takvim Deposu lazım acil! Gönderen: alperen3844
[20 Nisan 2019, 19:16:15]


[Note4][TedyBeaR]Rom[DreamUX] Full Note5 Port Rom[N910C/H] Gönderen: makan
[19 Nisan 2019, 23:32:14]


N7100 Galaxy Note 2 Rom Tavsiye, Öneri, Sohbet ve İstekleri Gönderen: Shritzen
[18 Nisan 2019, 19:23:31]


Resurrection Remix RR-N-v5.8.10 (YARDIM MM) Gönderen: kosekli
[18 Nisan 2019, 13:18:28]


Stock Rom bootloop sorunu Gönderen: brs34
[16 Nisan 2019, 21:54:29]


SARILMIŞ BAYRAĞA ŞEHİT NAAŞI Gönderen: ORHAN AFACAN
[14 Nisan 2019, 21:28:11]


[6.0.1][N7/N8/S8 Port] MagMa-NX VX1 (N900/N9000Q) Gönderen: Bug12
[12 Nisan 2019, 16:23:41]


Note 2 Kitkat (4.4.2) de oluşan şebeke ve ağda kayıtlı değil sorunu Gönderen: iyikotucirkin
[11 Nisan 2019, 22:13:27]


n910x Galaxy Note 4 Custom Rom Tercihleriniz ve Önerileriniz Gönderen: kavgamm11
[10 Nisan 2019, 02:00:29]


Custom Rom 7.1.2 Ekran Geç Uyanma Sorunu Gönderen: lumina
[09 Nisan 2019, 21:21:16]


N7100 Galaxy Note 2 N7100XXUFND4 Türkiye 4.4.2 Factory Firmware (4 Dosyalı) Gönderen: yunus3456
[08 Nisan 2019, 22:49:42]


G930F Galaxy S7 CF-Auto-Root (Tek Yükleme ile Root İşlemi) Gönderen: adali
[08 Nisan 2019, 20:30:32]


N910CQ Galaxy Note 4 Türkiye - N910CXXU2DRI1_6.0.1_Factory_Firmware_20.10.2018 Gönderen: lumina
[08 Nisan 2019, 18:09:58]


G935F Galaxy S7 Edge Injustice Edition-TUR-G935FXXU3ERJE 8.0.0 Factory Firmware Gönderen: helezon
[07 Nisan 2019, 16:59:02]


N7100 Galaxy Note 2 4.4.2 Stock ZSUFNJ2 (Tamamen stock - 7 Saat Ekran Süresi) Gönderen: karacaa3
[05 Nisan 2019, 17:29:36]


Samsun Tab A sm-t287 radyo problemi Gönderen: Goztepemiz
[05 Nisan 2019, 09:31:04]


[ROM][8.0][TW][N920C/I/G/S/L/K/8]Floyd N7FE Port Gönderen: akifoktar
[04 Nisan 2019, 10:20:06]


BANA 15 TEMMUZU HATIRLATIYOR Gönderen: ORHAN AFACAN
[03 Nisan 2019, 14:38:14]