نقد و بررسی scrcpy – کنترل دیوایس اندرویدی توسط سیستم!

استاندارد

درود خدمت دوستان عزیز

 

  • پروژه scrcpy چیست و چه کاربردی دارد؟

بسته scrcpy بهتون کمک میکنه که بتونید از طریق کامپیوتر یا لپ تاپ دیوایس اندرویتونو کنترل کنید , فرض کنید دارید با سیستم کار میکنید و یهو یه پیام میاد و میخوایید که بخونید و باید برید گوشی رو بردارید و پیام رو بخونید اما اگه قبلش با scrcpy کانکت شده باشید به گوشی دیگه نیازی نیست گوشی رو بردارید و راحت از طریق سیستم پیام رو میخونید و جواب میدید یا فرض کنید قراره یک برنامه رو نصب کنید روی گوشی راحت میتونید با drag&drop برنامه داخل scrcpy برنامه رو نصب کنید روی گوشی!

  • پیشنیاز ها
  1. اندروید 5 یا بلاتر از 5!
  2. شما به دو روش میتونید از طریق scrpy کانکت بشید به دیوایس اندرویدی(وایرلس | پورت یو اس بی )
  • پیش نیاز متصل شدن از طریق کابل یو اس بی : فعال بودن اشکال زدایی یو اس بی و یا همان usb debugging
  • پیش نیاز متصل شدن از طریق وای فای : 1- دیوایس اندرویدی و سیستم در یک شبکه باشند 2- روت بودن گوشی 3 – نرم افزار WIFI ADB

برای درک هرچه بهتر میتونید ی سری به این مقاله بزنید! D:

  • کراس پلتفرم بودن scrcpy

به طور کلی کراس پلتفرم بودن به این معناست که برنامه بدون نیاز به تغییرات در سورس کد قابل اجرا در سیستم های مختلف هست و scrcpy میتونه روی mac , linux , windows بدون مشکل اجرا بشه!

  • راه اندازی scrcpy از طریق پورت یو اس بی

همانطور که در بالا گفته شد در این حالت نیاز است که یو اس بی دیباگینگ گوشی فعال و گوشی به سیستم متصل بشه!
کارکرد scrcpy به صورتیه که وقتی اجرا میکنید چک میکنه اگه adb گوشی رو شناخته باشه مستقیم متصل میشه به گوشی …

خب طبق این تصویر usb debugging گوشی رو فعال کنید …

برای اینکه مطمن بشیم گوشی به سیستم متصل شده باید تایپ کنیم adb devices و باید دیوایس اندرویدی مارو شناخته باشه به این تصویر دقت کنید …

خب از اونجایی که اکثرتون ویندوز استفاده میکنید محوریت این آموزش هم ویندوز هست …
ممکنه بعد از این پست نسخه جدیدی از scrcpy منتشر بشه پس لینک منبع رو میزارم از همونجا خودتون دانلود کنید!
از این لینک میتونید متناسب با معماری سیستمتون scrcpy رو دریافت کنید و فایل zip رو اکسترکت کنید و وارد پوشه مربوط به scrcpy بشید و کلید Shift رو نگه دارید و راست کلیک کنید و Open Command Window Here رو انتخاب کنید , به این تصویر دقت کنید …
داخل cmd تایپ کنید scrcpy و اینتر بزنید اگه adb گوشی رو شناخته باشه scrcpy بدون مشکل کانکت میشه به گوشیتون و با این صحنه زیبا رو به رو میشید! D:

و تمام! D:

  • راه اندازی scrcpy از طریق وایرلس

واسه این بخش نیازه که این مقاله رو بخونید!

adb گوشی رو که شناخت , از این لینک میتونید متناسب با معماری سیستمتون scrcpy رو دریافت کنید و فایل zip رو اکسترکت کنید و وارد پوشه مربوط به scrcpy بشید و کلید Shift رو نگه دارید و راست کلیک کنید و Open Command Window Here رو انتخاب کنید , به این تصویر دقت کنید …
داخل cmd تایپ کنید scrcpy و اینتر بزنید اگه adb گوشی رو شناخته باشه scrcpy بدون مشکل کانکت میشه به گوشیتون و با این صحنه زیبا رو به رو میشید! D:

و تمام!

  • کیبورد شورتکات های scrcpy

scrcpy فقط یک رابط کاربری خالص از گوشی اندرویدی رو بهتون نشون میده فرض کنید میخوایید صدارو کم کنید یا زیاد کنید کلید پاور رو بگیرید یا … اینجا این کیبورد شورتکات ها به کارتون میاد که لیست کیبورد شورتکات هایی که scrcpy ساپورت میکنه توی این تصویر قرار داده شده …

  • نصب فایل apk در scrcpy

فقط کافیه فایل رو drag&drop کنید ینی در واقع با موس فایل رو بکشید و بندازید داخل scrcpy تا فایل apk نصب بشه روی گوشی …

 

  • پایان

امیدوارم که این مقاله کاربردی واستون مفید بوده باشه …

لینک بحث در رابطه با این پست در انجمن : لینک

 

 

آموزش تغییر نام و آیکون برنامه های اندروید در خود گوشی

استاندارد

با سلام

تمام برنامه های اندروید دارایی یک نام و یک آیکون هستند

که معرفه برنامه ها می باشد

اگر بخواهید خودتان نام و آیکون برنامه را تغییر دهید

روشهای متفاوتی وجود دارد

در این آموزش با استفاده از خود گوشی و یک برنامه به راحتی این کار را انجام دهید

برنامه های زیادی برای این کار وجود دارند

تمام این برنامه ها هم به روت نیاز دارند

یکی از بهترین این برنامه ها APK Editor می باشد

که نسخه فول و خریداری شده رو میتونید از لینک زیر دانلود کنید

APK_Editor_Pro_v1.9.0

برنامه را نصب کنید

وقتی برنامه را باز کنید دو گزینه دارید

Select an Apk File : با این گزینه یک فایل APK از حافظه انتخاب و ویرایش کنید

Select APK from the app : با این گزینه از برنامه های انتخاب شده یک برنامه را انتخاب می کنید

بعد از انتخاب برنامه بر روی Common Edit option را بزنید

گزینه های زیر را مشاهده می کنید

Package Name, version code, SDK version

به آنها دست نزنید

گزینه App name در آنجا می توانید نام برنامه را انتخاب کنید

و بعدش در زیر گزینه save را بزنید

بعد از مدتی تغییرات اعمال می شود

می توانید برنامه را نصب کنید

اما قبلش حتما پکیج قبلی برنامه را حذف کنید

تا اینجا نام را تغییر دادیم

برای تغییر آیکون معمولا لانچرها و انواع آیکون پکها وجود دارند

ولی در اینجا با استفاده از APK Editor نیز هر آیکونی می خواهید را می توانید بگذارید

برنامه را انتخاب و گزینه common edit را انتخاب کنید

گزینه ای مانند تغییر نام برایتان می آید

در بالا عکس آیکون برنامه را می بینید

بر روی آن زده تا از حافظه هر آیکونی با فرمت png را قرار دهید

مانند عملیات بالا ذخیر و بعد نصب کنید

تمام موفق باشید

آموزش شیشه ای مخفی کردن نوار اعلان در قفل گوشی

استاندارد

با سلام

در برخی رامها در قفل صفحه نوار اعلان مشکی می باشد و ظاهر خوبی در قفل صفحه ندارد

در آموزش امروز چگونگی شیشه ای کردن نوار اعلان یا مخفی کردن آن را آموزش می دهیم

ابزار مورد نیاز

وارد بودن به دیکامپایل و ریکامپایل

smali/baksmali

notepad++

7zip

شیشه ای کردن

برای شیشه ای کردن نوار اعلان

فایل android.policy.ja را دیکامپایل کنید

فایل  com/android/internal/policy/impl/KeyguardViewManager.smali را ویرایش کنید

متد .method public declared-synchronized show()V را پیدا کنید

دنبال مقدار 0x100800 باشید

آن را به  0x10900 تغییر دهید

فایل android.policy.jar را ریکامپایل کنید

تمام

مخفی کردن

فایل android.policy.jar را دیکامپایل کنید

فایل com/android/internal/policy/impl/KeyguardViewManager.smali را ویرایش کنید

متد  .method public declared-synchronized show()V را پیدا کنید برای ویرایش

در زیر خط 161 و بالایی خط 162 کد زیر را وارد کنید

const/4 v2, 0x0

    invoke-virtual {p0, v2}, Lcom/android/internal/policy/impl/KeyguardViewManager;->setStatusBarShow(Z)V

 

فایل android.policy.jar را ریکامپایل کنید

تمام

آموزش پورت برنامه های کوچک سونی برای رامهای CM

استاندارد

با سلام

برنامه های کوچک سونی small app در رامهی سونی وجود دارند

با ما باشید با اموزش چگونگی پورت این برنامه ها برای رامهای سیانوژن

ما در نظر میگیریم که شما کامپایل و دیکامپایل را بلدید

مستقیم میریم برای آموزش

فایل framework-res.apk را دیکامپایل کنید

به مسیر res/values/strings.xml بروید

کدهای زیر را در پایان قرار دهید

<string name="permlab_externalTaskSwitcher">Start as an external task switcher</string>
    <string name="permdesc_externalTaskSwitcher">Allows the application to be an external task switcher replacing the native task switcher</string>
    <string name="permlab_smallapp">Small application overlay</string>
    <string name="permdesc_smallapp">Allows running movable small applications on top of other applications.</string>

فایل AndroidManifest.xml را باز کنید

کد زیر را اضافه کنید

<permission android:name="android.permission.SYSTEM_ALERT_WINDOW" android:label="@string/permlab_systemAlertWindow" android:description="@string/permdesc_systemAlertWindow" android:protectionLevel="dangerous" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" />

کد زیر را نیز اضافه کنید

<permission android:name="com.sony.smallapp.permission.SMALLAPP" android:label="@string/permlab_smallapp" android:description="@string/permdesc_smallapp" android:protectionLevel="dangerous" />

 

همانند تصویر زیر میشود

تمام فایل framework-res.apk را ریکامپایل کنید

فایل android.policy.jar را دیکامپایل کنید

فایل com\android\internal\policy\impl\PhoneWindowManager.smal را باز کنید

دو کد زیر را در زیر کد

.field static final SHOW_PROCESSES_ON_ALT_MENU:Z = false

قرار دهید

.field static final SHOW_STARTING_ANIMATIONS:Z = true   ----------------------این کد را اگر نداشتید اضافه کنید

.field static final SMALLAPP_LAYER:I = 0x3

اکنون کدهای زیر را پیدا کنید

.method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I
    .locals 4
    .parameter "attrs"

    .prologue
    const/4 v2, 0x0

    .line 1588
    iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I

    .line 1590
    .local v1, type:I
    const/16 v3, 0x7d0

    if-lt v1, v3, :cond_0

    const/16 v3, 0xbb7

    if-le v1, v3, :cond_1

    .line 1622
    :cond_0
    :goto_0
    return v2

    .line 1594
    :cond_1
    const/4 v0, 0x0

    .line 1595
    .local v0, permission:Ljava/lang/String;
    sparse-switch v1, :sswitch_data_0

    .line 1614
    const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"

    .line 1616
    :goto_1
    :sswitch_0
    if-eqz v0, :cond_0

    .line 1617
    iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

    invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

    move-result v3

    if-eqz v3, :cond_0

    .line 1619
    const/4 v2, -0x8

    goto :goto_0

    .line 1611
    :sswitch_1
    const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

    .line 1612
    goto :goto_1

    .line 1595
    nop

    :sswitch_data_0
    .sparse-switch
        0x7d2 -> :sswitch_1
        0x7d3 -> :sswitch_1
        0x7d5 -> :sswitch_0
        0x7d6 -> :sswitch_1
        0x7d7 -> :sswitch_1
        0x7da -> :sswitch_1
        0x7db -> :sswitch_0
        0x7dd -> :sswitch_0
        0x7e7 -> :sswitch_0
    .end sparse-switch
.end method

و کدهای را با کد زیر جایگزین کنید

.method public checkAddPermission(Landroid/view/WindowManager$LayoutParams;)I
    .locals 4
    .parameter "attrs"

    .prologue
    const/4 v2, 0x0

    .line 1115
    iget v1, p1, Landroid/view/WindowManager$LayoutParams;->type:I

    .line 1117
    .local v1, type:I
    const/16 v3, 0x7d0

    if-lt v1, v3, :cond_0

    const/16 v3, 0xbb7

    if-le v1, v3, :cond_1

    .line 1152
    :cond_0
    :goto_0
    return v2

    .line 1121
    :cond_1
    const/4 v0, 0x0

    .line 1122
    .local v0, permission:Ljava/lang/String;
    sparse-switch v1, :sswitch_data_0

    .line 1144
    const-string v0, "android.permission.INTERNAL_SYSTEM_WINDOW"

    .line 1146
    :goto_1
    :sswitch_0
    if-eqz v0, :cond_0

    .line 1147
    iget-object v3, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;

    invoke-virtual {v3, v0}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I

    move-result v3

    if-eqz v3, :cond_0

    .line 1149
    const/4 v2, -0x8

    goto :goto_0

    .line 1137
    :sswitch_1
    const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

    .line 1138
    goto :goto_1

    .line 1141
    :sswitch_2
    const-string v0, "com.sony.smallapp.permission.SMALLAPP"

    .line 1142
    goto :goto_1

    .line 1122
    :sswitch_data_0
    .sparse-switch
        0x7d2 -> :sswitch_1
        0x7d3 -> :sswitch_1
        0x7d5 -> :sswitch_0
        0x7d6 -> :sswitch_1
        0x7d7 -> :sswitch_1
        0x7da -> :sswitch_1
        0x7db -> :sswitch_0
        0x7dd -> :sswitch_0
        0xbb5 -> :sswitch_2
        0xbb6 -> :sswitch_2
    .end sparse-switch
.end method

فایل android.policy.jar را ریکامپایل کنید

فایل framework.jar را ریکامپایل کنید

فایل زیری که براتون میزارم را کامل در مسیر classout/com کپی کنید

مقداری برنامه هم نیاز دارید در مسیر system/etc و system/framework کپی کنید

آنها را در فایل زیر نیز براتون میزارم

یک لانچر اکسپریا نصب کنید و از برنامه های کوچک سونی استفاده کنید

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

استاندارد

سامسونگ چند روز قبل از رونمایی پرچمداران جدید خود یعنی گلکسی اس 8 و اس 8 پلاس، دستیار هوشمند جدید خود را با نام Bixby معرفی کرد و طبق انتظار این دستیار هوشمند با پرچمداران جدید غول کره ای همراه شد. سامسونگ با بیکسبی قصد دارد به رقابت با دیگر دستیار های دیجیتالی مطرح بازار مانند سیری اپل، کورتانا مایکروسافت، گوگل اسیستنت و الکسا آمازون بپردازد اما این دستیار هوشمند هنوز در اول راه است و جای توسعه ی زیادی دارد.

مطمئنا کاربران زیادی در انتظار ارائه ی بیکسبی برای گوشی های سامسونگ قدیمی تر خود هستند اما سامسونگ هیچ برنامه ای برای انتشار این برنامه در گوگل پلی و عرضه ی آن برای دیگر گوشی های خود ندارد.

هر چند این کار شاید در آینده صورت بگیرد اما اگر از دسته کاربرانی هستید که برای تجربه ی کاربری بیکسبی عجله دارید، توسعه دهندگان XDA توانسته اند بیکسبی و برخی دیگر از اپلیکیشن های گلکسی اس 8 را بر روی گلکسی اس 7 نصب کنند. در ادامه ی مطلب به توضیح آموزش نصب بیکسبی و ویژگی Always on Display گلکسی اس 8 سامسونگ بر روی دیگر گوشی های سامسونگ میپردازیم.

این کار پیش نیاز خاصی ندارد اما مهم ترین پیش نیاز دستگاه شما برای نصب بیکسبی، نصب بودن اندروید 7 نوگا بر روی آن است و نصب بیکسبی در دستگاه هایی که از اندروید پائین تر برخوردار هستند دست کم در حال حاضر ممکن نیست. به سراغ آموزش نصب میرویم : ( مرحله به مرحله پیش بروید )

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

 

نصب لانچر گلکسی اس 8:

  1. فایل نصب لانچر را از انتهای مطلب دانلود کنید.
  2. کش و دیتای برنامه ی Touchwiz Home را از داخل تنظیمات دستگاه پاک کنید.
آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

 

  1. فایل دانلود شده ی لانچر را نصب کنید.
  2. در صورتی که لانچر کرش شد، باری دیگر دیتا و کش آن را پاک کنید.
  3. دکمه ی هوم را فشار دهید. اکنون میبایست با صفحه ی هوم مشابه گلکسی اس 8 روبرو شوید.
آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر


نصب بیسکبی:

  1. فایل بیکسبی را از انتهای مطلب دانلود و نصب کنید.
  2. سپس یک لمس طولانی بر روی صفحه ی هوم گوشی انجام دهید و به تنظیمات لانچر بروید.
  3. در صورت غیر فعال بودن بیکسبی آن را فعال کنید.
  4. دستگاه را ریبوت کنید.
آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

 

  1. در صفحه ی هوم، به سمت چپ سوایپ کنید تا با بیکسبی مواجه شوید.
  2. برای راه اندازی بیکسبی انجام مراحلی مانند موافقت با دسترسی ها لازم است. تمام دسترسی های خواسته شده را قبول کنید.
آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

 

نصب AOD ( قابلیت Always on Display Mode )

  1. فایل نصب AOD را از انتهای مطلب دانلود کنید.
  2. AOD دستگاه خود را غیر فعال و دیتای آن را از داخل تنظیمات پاک کنید.
آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

آموزش نصب دستیار هوشمند Bixby بر روی گلکسی های قدیمی تر

 

  1. فایل APK دانلود شده را نصب کنید.
  2. ممکن است گوشی شما کمی هنگ و کرش کند، برای حل این مشکل ممکن است نیاز باشد چندین بار دیتای AOD را پاک کنید.
  3. به تنظیمات مراجعه کنید و AOD را مجددا پیکربندی کنید.

آموزش قرار دادن بنر در About Phone

استاندارد

با سلام

با آموزش قرار دادن بنر در بالایی قسمت About Phone در خدمت شما هستیم

این آموزش برای امضاء رامهای ساخته شده توسط توسعه دهندگان بسیار مفید می باشد

با ما همراه باشید

پیش نیازها

برای شروع فایل زیر را دانلود نمایید

فایل Settings خود را دیکامپایل کنید

از فایل دانلود شده پوشه res را به Settings خود کپی کنید

اکنون به مسیر res/xml بروید

فایل device_info_settings.xml را باز کنید(با برنامه نوت پد ++)

در همان اول زیر کد

xmlns:android="http://schemas.android.com/apk/res/android">

این کد را وارد کنید

<PreferenceCategory android:layout="@layout/gsmdevelopers" android:key="blah" android:title="" />

 

خوب دقیقا مثل عکس زیر می شود

فایل را ذخیره کنید

به مسیر /res/drawable/ بروید

عکس gsmdevelopers را آنگونه که می خواهید ویرایش کنید

فرمت عکس باید png بماند و نام تغییر نکند

برای تغییر سایز عکس نیز می توانید اعداد موجود در فایل gsmdevelopers.xml را ویرایش کنید

در آخر فایل را ریکامپایل کرده و تمام

نکته آخر در مورد سایز عکس

بنده طبق سایز گوشی خودم عکس را تنظیم کردم

سایز گوشی بنده هم 1080×1920 می باشد

اگر می خواهید سایز رو تغییر بدید 1080 که عرض می باشد را تغییر نمی دهید

همچنین می توانید به جایی سایز width بنویسید “fill_parent” تا خود به خود سایز اندازه شود

1920 را من به مقدار 20 درصد کم کردم تا در بالا قرار بگیرید شما هر سایز و اندازه ای متوانید قرار دهید

هرگونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد

آموزش شفاف کردن نوار اعلان و منوی کشوی اعلانها

استاندارد

با سلام

در این آموزش چگونگی تغییر رنگ نوار وضعیت و منوی کشوی اعلانها را آموزش می دهم

ما رنگ را بصورت شفاف در می آوریم ولی طبق آموزش می تونید رنگ دلخواه را نیز قرار دهید

با ما همراه باشید

موارد مورد نیاز:

توانایی کار با APKTOOL و دیکامپایل فایل

باز کردن فایلهای smali

گرفتن کدهای هکس رنگ با برنامه color picker یا فوتوشاپ

برنامه ARGB hex converter برای گرفتن کدهای شفاف

برنامه Notepad++

در مرحله اول دو فایل SystemUI.apk و framwork-res.apk را دیکامپایل کنید

یک توضیح کلی درباره نوع رنگها و کدهاش بگم

وقتی 00 میذاریم یعنی تمام شفاف

وقتی 3F میزاریم 75 درصد شفافیت میدیم

وقتی 7F میزاریم 50 درصد شفافیت میدیم

وقتی BF میزاریم 25 درصد شفافیت میدیم

وقتی FF میزاریم 0 درصد شفاف میشه(مات)

نوار اعلان

برای تغییر نوار اعلان بالا طبق دستور العمل زیر عمل کنید

به مسیر SystemUI.apk\res\values بروید

فایل drawables.xml را باز کنید

به کد زیر تمرکز کنید

<item type="drawable" name="status_bar_background">#ff1e1e1e</item>

در کد بالا به دو ff دقت کنید

آنها را تغییر بدید به 00 شفاف می شود(برای تغییرهای دیگر به توضحات اولیه آموزش دقت کنید)

بقیه کد 1e1e1e رنگ خاکستری RGB می باشد

آنرا سیاه کنید با تغییر آن به 000000

پس برای کاملا شفاف کردن کد ما کلا 00 می شود

به نمونه زیر دقت کنید

<item type="drawable" name="status_bar_background">#3F000000</item>

کد بالا 75 درصد شفافیت می باشد

منو رو به پایین

این بخش که رو به پایین می باشد خودش 6 بخش می باشد

بخش اول منوی بالایی:

به مسیر SystemUI.apk\res\layout بروید

فایل tw_status_bar_expanded_header.xml را باز کنید

<LinearLayout android:gravity="center_vertical" android:orientation="horizontal" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="39.0dip" android:baselineAligned="false"

در کد بالا بازم با تغییر 00 می شود رنگ را تغییر داد

همچنین برای تغییر رنگ دکمه تنظیمات کد زیر را

<RelativeLayout android:id="@id/settings_button" android:background="@drawable/tw_quick_panel_setting_button_bg" android:focusable="true" android:visibility="visible" android:layout_width="@dimen/status_bar_expanded_setting_width" android:layout_height="39.0dip">

قسمت @drawable/tw_quick_panel_setting_button_bg را حذف با یک کد رنگ ARGB با شروع # جایگزین کنید

پشت زمینه:

پشت زمینه یک عکس می باشد

در مسیر drawable بروید

و دنبال نام tw_quick_panel_quick_setting_button_bg_normal.9.pn g بگردید

یا دنبال tw_quick_panel_quick_setting_button_bg_pressed.9.p ng باشید

آنها را ویرایش یا با عکسی دیگر جایگزین کنید

پنل تنظیم روشنایی:

به مسیر SystemUI.apk\res\layout بروید

فایل tw_status_bar_expanded.xml را باز کنید

<LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip">

کد رنگ موجود را به هرنگی دلتان می خواهد تغییر بدهید

بک گراند پنل اعلانات:

هدر

به مسیر SystemUI.apk\res\layout بروید

فایل tw_status_bar_expanded.xml را باز کنید

<LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">

کد رنگ موجود سیاه خاکستری با شفافیت است به هر رنگی می خواهید تغییرش دهید

هدر نوار اعلان:

به مسیر SystemUI.apk\res\layout بروید

فایل tw_status_bar_expanded.xml را باز کنید

<LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height">

بازم مانند بالا سیاه خاکستری می باشد با شفافیت به هر رنگی می خواهید تغییرش دهید

دکمه پاک کردن اعلانها:

به مسیر SystemUI.apk\res\drawable-xhdpi بروید

فایل tw_quick_panel_clearbtn_focus.9.png

فایل tw_quick_panel_clearbtn_normal.9.png

فایل tw_quick_panel_clearbtn_press.9.png

و فایل tw_quick_panel_clearbtn_select.9.png را می توان ویرایش کرد برای تغییر دکمه پاک کردن اعلانها

خود پنل اعلانها:

به مسیر SystemUI.apk\res\layout بروید

فایل tw_status_bar_expanded.xml را باز کنید

<FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left"

در اینجا کد hex نیست و یک عکس به نام notification_panel_bg.9.png می باشد

به مسیر drawable-xhdpi بروید و با هر عکسی که شفاف می باشد جایگزینش کنید

اعلانها:

به مسیر SystemUI/smali/com/android/systemui/statusbar/phone/ بروید

فایل PhoneStatusBar.smali را باز کنید

دنبال 0x100- باشید

دو کد می باشند که آنها را از

const/high16 v15, -0x100

به

const/high16 v15, 0x0

تغییر بدهید

اکنون فایل framework-res.apk را دیکامپایل کنید

به مسیر framework-res/res/values/ بروید

فایل drawables.xml را باز کنید

<item type="drawable" name="notification_item_background_color">#ff000000</item>

در کد رنگ ff را به 00 تغییر بدهید تا شفاف شوند

فایل framework-res.apk با درجه 0 فشرده سازی ریکامپایل کنید

فوتر:

این قسمت آسانترین قسمت می باشد

فقط به مسیر SystemUI.apk\res\drawable-xhdpi بروید

فایل tw_status_bar_close_off.png و tw_status_bar_close_on.png را با هر فایل شفاف دیگر جایگزین کنید

نوشته ای در نوار اعلان

برای تغییر نوشته فقط کافی در مسیر SystemUI/res/values/drawables.xml دنبال کد رنگ hex و حرف textبگردید

<item type="drawable" name="notification_number_text_color">#ffffffff</item>

در مسیر SystemUI/res/layout/tw_quick_setting_button.xml

<TextView android:textSize="@dimen/quick_setting_button_text_size" android:textColor="#ffafc5dc" android:gravity="center" android:id="@id/btn_text" android:layout_width="fill_parent" android:layout_height="@dimen/quick_setting_button_text_height" android:includeFontPadding="false" />

در مسیر SystemUI/res/layout/tw_status_bar_expanded_header.xml

<com.android.systemui.statusbar.policy.Clock android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Clock" android:textColor="#ffffffff" android:id="@id/clock" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.0dip" android:layout_marginTop="-3.0dip" android:singleLine="true" systemui:ampmSmall="true" />
    <com.android.systemui.statusbar.policy.DateView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Date" android:textColor="#ffcbcbcb" android:ellipsize="none" android:id="@id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8.0dip" android:layout_marginRight="4.0dip" android:maxLines="2" />

در مسیر SystemUI/res/layout/tw_status_bar.xml

<TextView android:textSize="12.0dip" android:textColor="#ffa6a6a6" android:layout_gravity="center" android:id="@id/battery_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/status_bar_network_name_separator" />

            <com.android.systemui.statusbar.policy.Clock android:textSize="@dimen/status_bar_clock_text_size" android:textColor="#ff959595" android:ellipsize="none" android:gravity="left|center" android:id="@id/clock" android:paddingLeft="3.0dip" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="true" android:includeFontPadding="false" />

تمام موفق باشید

هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد

آموزش اضافه کردن ترافیک اینترنت در اعلانیه ها

استاندارد

حتما در کاستوم رامها دیده اید که در نوار وضعیت سرعت دریافت و ارسال اینترنت را می توان به نمایش گذاشت

ما چگونگی افزودن این قابلیت را در این آموزش به شما یاد می دهیم(network traffic data)

در این آموزش در نظر گرفته شده که شما با دیکامپایل و کامپایل آشنا هستید

و اگر هم بلد نیستید در سایت آموزشهای محتلف و زیادی هست از اونا می تونید کمک بگیرید

ما با دو apk کار میکنیم در این آموزش SystemUI و Settings  یا SecSettings بستگی به رام هر دو را دیکامپایل کنید و فایل زیر را دانلود و استخراج کنید

SystemUI

با کپی فایلهای smali از فایلی که دانلود کردید شروع کنید و آنها در مسیر خود کپی کنید

فایلهای .png را نیز کپی کنید اگر رزولوشین شما xxhdpi نبود آنها را تغییر بدهید بعد کپی کنید

پوشه values را باز کنید در پوشه ای که دانلود کردید چهار فایل زیپ  xml وجود دارد

colors, dimens, ids و styles آنها را باز کنید و کدهای آنها را با مال گوشی خود جایگزین کنید

به مسیر layout/status_bar.xml بروید کد زیر را هر جا دلتون خواست اضافه کنید

<com.android.systemui.statusbar.policy.NetworkTraffic android:id="@id/networkTraffic" android:layout_width="wrap_content" android:layout_height="fill_parent" android:singleLine="false" />

جای که قرار میدید فایل رو همونجا در نوار اعلانها نمایش داده می شود

اکنون SystemUI خود را کامپایل و دوباره دیکامپایل کنید

به مسیر res/values/public.xml بروید فایل را باز کنید و در صفحه جدا باز نگاه دارید

به مسیر smali/com/android/systemui/statusbar/policy/NetworkTraffic.smali بروید فایل را باز کنید

در اینجا باید از فایل smali دنبال ایدی شبکه باشید و در public.xml جایگزین کنید

از کدهای زیر کمک بگیرید برای این کار

0x7f0c00c9    <public type="dimen" name="net_traffic_single_text_size"
0x7f0c00ca    <public type="dimen" name="net_traffic_multi_text_size"
0x7f02042a    <public type="drawable" name="stat_sys_network_traffic_updown"
0x7f020429    <public type="drawable" name="stat_sys_network_traffic_up"
0x7f020428    <public type="drawable" name="stat_sys_network_traffic_down"

وقتی تمام ایدیها را درست کردید فایل SystemUI را کامپایل کنید و به گوشی انتقال دهید

Settings

اینجا هم نیز مانند فایل SystemUI فایلهای که دانلود کردید را جایگزین فایل خود بکنید

فایل network_traffic.xml را نیز از زیپ به مسیر res/xml, dialog_color_picker.xml کپی کنید

فایل seek_bar_preference را نیز در مسیر res/layout کپی کنید

اون پنج xml را نیز همانند بالا کدها را کپی کنید

فایل ic_action_set و ic_settings_backup.png را نیز در مسیر res/drawable-xxhdpi کپی کنید

فایل Settings را کامپایل و در جا دیکامپایل کنید

فایل res/values/public.xml را باز کنید

باز به مسیر smali بروید و ایدیها را از public.xml جایگزین کنید

NetworkTraffic.smali

0x7f0e000f    <public type="integer" name="maskUp"
0x7f0e0010    <public type="integer" name="maskDown"
0x7f0e0011    <public type="integer" name="maskUnit"
0x7f0e0012    <public type="integer" name="maskPeriod"
0x7f09188a    <public type="string" name="network_traffic_color_reset"
0x7f09188b    <public type="string" name="network_traffic_color_reset_message"
0x7f091677    <public type="string" name="ok"
0x7f090198    <public type="string" name="cancel"
0x7f0700ef    <public type="xml" name="network_traffic"
0x7f09188a    <public type="string" name="network_traffic_color_reset"
0x7f02021d    <public type="drawable" name="ic_settings_backup"

 

SeekBarPreference.smali

0x7f0b0696    <public type="id" name="seekBarPrefBarContainer"
0x7f040229    <public type="layout" name="seek_bar_preference"
0x7f0b0694    <public type="id" name="seekBarPrefValue"
0x7f0b0693    <public type="id" name="seekBarPrefUnitsRight"
0x7f0b0695    <public type="id" name="seekBarPrefUnitsLeft"

 

ColorPickerDialog.smali

0x7f04022b    <public type="layout" name="dialog_color_picker”
0x7f091920    <public type="string" name="dialog_color_picker"
0x7f0b069f    <public type="id" name="color_picker_view"
0x7f0b06a2    <public type="id" name="old_color_panel"
0x7f0b069a    <public type="id" name="new_color_panel"
0x7f0b069b    <public type="id" name="white_panel"
0x7f0b069d    <public type="id" name="black_panel"
0x7f0b069c    <public type="id" name="cyan_panel"
0x7f0b069e    <public type="id" name="red_panel"
0x7f0b06a0    <public type="id" name="green_panel"
0x7f0b06a1    <public type="id" name="yellow_panel"
0x7f0b06a5    <public type="id" name="hex"
0x7f0b06a6    <public type="id" name="enter"
0x7f0b069a    <public type="id" name="new_color_panel"
0x7f020035    <public type=“drawable” name=“ic_action_set”

 

در آخر نیز برای اضافه کردن گزینه به تنظیمات کد زیر را در هر جایی که دوست دارید قرار دهید

به عنوان مثال در آخر فایل display_settings.xml می توان قرارش داد

فایل خود را کامپایل کنید تمام

هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد

آموزش پورت برنامه های شرکتی(آنالیز و عیب یابی)

استاندارد

با سلام

در آموزش قبلی چگونگی پورت برنامه را آموزش دادیم اکنون با ما باشید تا چگونگی آنالیز و رفع اشکال برنامه ای که پورت کردیم را بررسی کنیم

آموزش پورت برنامه های شرکتی

 

از لینک بالا می تونید آموزش پورت برنامه را ببینید

بسته شدن برنامه موقع اجرا میتونه سه دلیل داشته باشه که عبارت هستند از

  1. کم بودن کتابخانه های فریمورک
  2. ناقص بودن فایلهای so.
  3. متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

از روشهای زیر برای رفع اشکال استفاده کنید

کم بودن کتابخانه های فریمورک

شما باید به فایل AndroidManifest.xml نگاه کنید تا ببینید چه فریمورکهای نیاز دارید

به عکس زیر دقت کنید

همانند علامتی که بالا زدیم طبق نام از مسیر system/framework و مسیر system/etc/permissions فایلها را کپی کنید به مسیری که درست کردید برای برنامه

ناقص بودن فایلهای so.

اینجا کمی سخت بفهمیم که برنامه چه فایلهای so. نیازی دارد

باید logcat را نصب  و عیب یابی کنید

مثلا ligcat چنین خطایی میزنه

can’t find class libUXVisualizer

در اینجا شما در مسیر system/lib باید فایل libUXVisualizer.so به رامی که می خواهید پورت کنید انتقال دهید

متود جاوا و عملکرد آن با رام کنونی شما همخوانی ندارد

فاکتورهای زیادی باعث کرش برنامه می شوند

در مثال ما برنامه سونی بیشتر با اشکال GetString مواجه می شوند

خطاهای مانند زیر

بعد از دیدن این log چه باید بکینم؟

  1. برنامه را با استفاده از framework-res.apk دیکامپایل کنید
  2. به مسیر smali/com/sonyericsson/metadatacleanup/util/ بروید
  3. فایل StorageManagerIf.smali را باز کنید
  4. خط 262 را پیدا کنید

  1. فایل framework-res.apk  خودتان را دیکامپایل کنید
  2. به مسیر res/value/ بروید
  3. فایل Public.xml را باز کنید
  4. طبق StorageManagerIf.smali در خط 262 یک کد مشابه هست
const-string v2, "storage_internal"

پس storage_internal را در Public.xml خود جستجو کنید

کد زیر را نیز کپی کنید برای تغییر

const-string v2, "storage_internal"

    invoke-direct {p0, v1, v2}, Lcom/sonyericsson/metadatacleanup/util/StorageManagerIf;->getString(Landroid/content/res/Resources;Ljava/lang/String;)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v2

برای کوچک کردن کد

const v2, 0x10405ad

در آخر کد شبیه زیر می شود

.line 262
    .local v0, "description":Ljava/lang/String;
    const v2, 0x10405ad

    if-eqz v2, :cond_0

در logcat خطاهای زیادی ممکن بوجود بیاد باید مثل بالا دنبال فایلها باشید و کدها را تغییر بدید

وقتی تمام شد فایلها را ریکامپایل ساین و ذخیره کنید

هرگونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد

آموزش پورت برنامه های شرکتی

استاندارد

با سلام

در این آموزش چگونگی پورت یک برنامه مختص یک گوشی شرکتی مانند برنامه های سونی بر روی گوشیهای دیگر را آموزش می دهیم

پیش نیازها

پیش نیازها برای انجام آموزش:

  1. دانستن کامپایل و دیکامپایل فایلهای APK
  2. توانایی پیدا کردن فایلهای کتابخانه ای و فریمورک در برنامه
  3. توانایی استفاده از LogCat

نیازمندیها برای استخراج برنامه از رام

اول از همه نیازه که یک رام زیپ دئودکس شده را دانلود کنید تا برنامه مورد نظر برای پورت را از آن استخراج کنید

فایلهای زیر را استخراج و به فایل زیپ قابل فلش تبدیل میکنید

فایل نصبی برنامه در مسیر system>app یا priv-app

فایل So در مسیر system>lib

فایل jar در مسیر system>framework

فایل xml دسترسی فریمورک در مسیر system>etc>permissions

چگونه بفهمیم به کدام lib نیاز داریم

اگر lib درپوشه خود نرم افزار نبود(خود گوگل از اندروید 5 آن را در خود نرم افزار قرار داده است) دنبال نام نرم افزار در مسیر system>lib باشید

یا موقع نصب برنامه logcat بگیرید در آنجا نوشته کخ مثلا فلان برنامه در کجا فایل lib پیدا نشد

اگر خود lib در نرم افزار وجود داشت،فقط لازم آنرا استخراج کنید و so را کپی کنید

برای کپی کردن so فایل برنامه را باز کنید

مثال ما آلبوم گوشیهای سونی می باشد

فایل SemcAlbum.apk را با winrar باز کنید

پوشه lib را استخراج بعد از برنامه پاکش کنید

نام com.sonyericsson.album.apk را به SemcAlbum.apk تغییر دهید

یک پوشه با نام SemcAlbum ایجاد کنید

درونش یک پوشه به نام lib درست کنید

در پوشه lib نیز یک پوشه به نام arm درست کنید

برید به پوشه lib که استخراج کردید و فایلهای so. را انتقال بدید به پوشه SemcAlbum/lib/arm/ که بالا درست کردید

برای فهمیدن اینکه کدام کتابخانه های فریمورک نیاز هست

برنامه را دیکامپایل کنید با خود فریمورک رامی که برنامه را از آن استخراج کردید

فایل AndroidManifest.xml را باز کنید

به کدهای زیر دقت کنید

<uses-library android:name="com.sony.device" android:required="true" />
<uses-library android:name="com.sony.device" android:required="false" />

کدهای علامت زده شده بالا را در فایل AndroidManifest رامی که می خواهید پورت کنید کپی کنید

همچنین فایلهای xml را نیز کپی کنید از مسیر system>etc>permissions

به عنوان نمونه در کد بالا com.sonyericsson.navigationbar اشاره به com.sonyericsson.navigationbar.xml می باشد

در کدهای بالا true به معنی این که برنامه نیاز به فریمورک داره برای اجرا

و false نیز به معنی اجرا شدن برنامه بدون فریمورک است ولی بعضی قابلیتهای برنامه که به فریمورک نیاز دارند عمل نمی کنند

می تونید برنامه را زیپ کنید

اگر برنامه متوقف میشد از آن logcat بگیرید برای رفع اشکال

اگر با خطایی parsing مواجه شدید ورژن اندروید شما پایین است

برای انجام تغییر و اجرای برنامه بر روی ورژن پایینتر اندروید فایل AndroidManifest.xml را باز کنید

minSdkVersion: '16'
targetSdkVersion: '17'

در ورژن بالا آن را به حداقل میرسانیم کد را مانند زیر تغییر دهید

minSdkVersion: '14'
targetSdkVersion: '17'

اما برای هر برنامه ای جواب نمی ده تغییرات بالا

در پستی جدا به آموزش چگونگی رفع خطا می پردازیم

موفق باشید

هر گونه کپی برداری از متن بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد