[Anlatım] Samsung Edge Panel Portlama 6.0.1+ Ve Üstü Tüm Romlar İçin

bysalihidriscan

Samsung Yönetici
Yönetici
#1
Samsung 6.0.1 Cihazlarınız İçin Edge Panel Portlama


İlkler Herzaman TurkDevs'dedir.

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.
smali/com/android/server/SystemServer.smali
Bu Smaliyi açın şu kodu arayın.
Kod:
 const-string/jumbo v6, "spengestureservice"
Bu kodu arattığınız zaman karşınıza şu şekilde orjinal metin kodu çıkacak.
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.
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:
    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.
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
Kaydedip çıkış yapın.

2.Smali düzenlemesi şu Yola gidin Ve Smali dosyasını açın.
Kod:
smali/com/android/server/power/PowerManagerService.smali
Smali yi açtıktan sonra şu kodu arayın.
Kod:
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:
smali/com/android/server/notification/NotificationManagerService$6.smali
Smaliyi açtıktan sonra şu kodu aratın.
Kod:
.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:
.end method
bende orjınal metod şu şeklde.
Kod:
.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:
.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:
.method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V
Arattıktan sonra orjınal metin bende şu şeklde sizde başka şekilde olabilir.
Kod:
.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:
.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ölüm 2
Framework.jara Girin Ve Şu Yolu Bulun.

Kod:
smali/android/app/NotificationManager.smali
Smali dosyasına girin Ve Şu kodu aratın.
Kod:
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
Bu kodu aratııktan sonra orjınal metin şu şekilde olacaktır veya benzeri olabilir.
Bendeki orjınal metin şu şekilde.
Kod:
.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:
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
Şu kod varsa
Kod:
.registers 3
Varsa Eğer Şu kod ile Değiştirin Yoksa hiç dokunmayın.
Kod:
    .registers 4
Sonrasında şu satırı bulun.
Kod:
    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:
    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:
.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
Smaliyi kaydedin Ve çıkış yapın.

2.Smali Düzenlemesi Şu yola gidin ve smaliyi açın.
Kod:
smali/android/app/SystemServiceRegistry.smali
Şu kodu aratın.
Kod:
    const-string/jumbo v0, "multiwindow_facade"
Bu metodda şu kodu aratın.
Kod:
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:
    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:
    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:
smali/android/app/
Smali linki:
Linkleri görebilmek için Giriş yap veya üye ol.


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:
    <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:
    <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>
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 Giriş yap veya üye ol.

Zip Flaşlayıcı Link:
Linkleri görebilmek için Giriş yap veya üye ol.


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:
Üst