تفاوت بین کدر ، برنامه نویس و توسعه دهنده چیست؟

تفاوت بین کدر، برنامه نویس و دولوپر
استاندارد

در مقاله زیر به تفاوت بین کدر ، برنامه نویس و توسعه دهنده می پردازیم .

یکی از اشکالاتی که در جوامع استارت‌آپی به آن برخورد کردم، نداشتن درک درست از این تخصص‌ها است که برای یک استارتاپ بسیار مهم است که کدام تخصص را باید استخدام کند و با کدامیک شریک شود و کدام قشر را در تیم خود نیاز دارد.

اگر شما به عنوان مدیر یک استارتاپ به صورت اشتباه این تخصص‌‌ها را استخدام کنید می‌تواند موجب شکست شما شود یا اینکه در انتهای سال اول یا دوم برای شما دردسر ساز شود.

تفاوت بین کدر، برنامه نویس و توسعه دهنده

تفاوت بین کدر، برنامه نویس و توسعه دهنده

کُدر، Coder

کدر یا coderکدنویس یا کدر به شخصی گفته می شود که می تواند کد بنویسد و مفاهیم اولیه برنامه نویسی و سینتکس های زبان برنامه نویسی که با آن کد می زند را می‌داند اما دیدگاه و توانایی های یک برنامه نویس را ندارد، یک کدنویس دیدگاه یک برنامه نویس را هنوز پیدا نکرده و هنوز با مفاهیم مهم همان زبان نیز آشنایی ندارد.

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

برنامه نویس، Programmer

برنامه نویس یا programmerبرنامه نویس شخصی است که مدت زمان قابل قبولی با یک زبان برنامه نویسی کدنویسی کرده و اصول زبان برنامه نویسی و منطق آن را می‌داند، اگر از زبان‌های شی‌گرا استفاده می‌کند، کاملا با مفاهیم آن آشنایی داشته و در برنامه نویسی به درستی از آن ها استفاده می کند. یک برنامه نویس لزوما تسلط به تمامی زبان‌های برنامه نویسی ندارد ولی دیدگاه درستی از کدنویسی داشته و چندسالی است که کدنویسی می کند و پروژه های نمونه که گویای سطح برنامه نویسی اوست در دست دارد.

توسعه دهنده ، Developer

دولوپر یا developerدولوپر یا توسعه دهنده یک کلمه کلی است و بعضی اوقات به صورت اشتباه توسط متخصصین استفاده می‌شود. به عنوان مثال: اندروید دولوپر یعنی کسی که در کمپانی گوگل در حال توسعه سیستم عامل اندروید است و جزئی از تیم توسعه اندروید است. اما اندورید اپلیکیشن دولوپر یعنی توسعه دهنده برنامه های اندرویدی که توانایی تولید اپلیکیشن را به تنهایی دارد.

توسعه دهنده نرم‌افزار یک شخص متخصص و با تجربه در زمینه نرم افزار است. نکته بسیار مهم در مورد دولوپرها این است که یک دولوپر شخص با تجربه ای در زمینه های مختلف است و نمی تواند یک شخص جوان باشد.

کلمه توسعه دهنده به تنهایی معنی نمی‌دهد و باید تخصص بعدی آن نیز بیان شود، به عنوان مثال، توسعه دهنده برنامه های اندروید یا توسعه دهنده وب یا وب دولوپر یا توسعه دهنده کرنل لینوکس.

یک توسعه دهنده حتما یک برنامه نویس عالی است و فراتر از یک برنامه نویس است. توسعه دهنده تجربه کار با تیم‌های مختلف در پروژه های مختلف را داشته و در پروژه های زیادی به عنوان یک برنامه نویس فعالیت داشته.

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

حضور یک دولوپر در تیم های استارتاپی بسیار مهم است چرا که دولوپرها دقیقا می دانند از چه ابزاری، چه زمانی باید استفاده شود. همچنین دید بلند مدت نسبت به پروژه‌ها داشته و در انتخاب های اولیه بسیار موثر عمل می‌کنند.

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

سخن آخر

اگر در تیم استارتاپی خود دولوپر ندارید و یا توان مالی را برای به کارگیری یک دولوپر ندارید، سعی کنید حتما از یک دولوپر به عنوان مشاور در تیم خود استفاده کنید. تا بتوانید تشخیص دهید که در کجای راه هستید و باید به کجا بروید و آیا از ابزارها و زبان‌های درستی در حال استفاده هستید یا خیر. هزینه یک مشاوره در شروع کار موجب درست جهت گرفتن فعالیت شما خواهد شد و اگر به این مهم دست پیدا نکنید در آینده نزدیک توان تغییر و بازگردانی انتخاب های اشتباه خود را نخواهید داشت.

آموزش ساخت کرنل از منبع

استاندارد

با سلام امروز ساخت کرنل را براتون آماده کردم

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

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

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

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

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

نصب کتابخانه ها و آماده سازی محیط

برای شروع باید محیط سیستم عامل را آماده کنیم

برای این کار ترمینال را باز کنید

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

sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
mkdir android

سورس کرنلی که دانلود کردید را به پوشه اندروید کپی کنید(توسط کد آخری این پوشه درست می شود)

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

cd android
tar -xjvf Source Name

در کد بالا بجای Source Name نام سورسی که دانلود کردید را وارد کنید

آماده سازی ابزارtoolchain

برای گوشیهای سونی می توانید toolchain را دانلود کنید تا تغییرات را راحت در کرنل بدهید

برای دانلود کامل ابزار DoomLord کد زیر را وارد کنید

cd android
cd kernel
git clone git://github.com/DooMLoRD/android_prebuilt_toolchains.git toolchains

یا اگر برای اندروید 4.4.3 میسازید فقط این لینک را دانلود و در روت home استخراجش کنید

اضافه کردن قابلیت به کرنل بصورت اتوماتیک

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

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

cd android
cd kernel
ARCH=arm CROSS_COMPILE=~/arm-eabi-4.4.3/bin/arm-eabi- make Device Name
make ARCH=arm CROSS_COMPILE=~/arm-eabi-4.4.3/bin/arm-eabi- menuconfig

بجای Device Name نامی که در Source/arch/arm/configs هست بگذارید
در something_DeviceCodename_user_defconfig نوشته شده است

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

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

اضافه کردن قابلیت به کرنل بصورت دستی

اضافه کردن Governors

خود CPU یک فایل C می باشد که در سورس کرنل هر توسعه دهنده ای پیدا می شود

اگر از github نتوانستید فایل governor را از کرنل استوک خود استخراج کنید

از مسیر Kernel Source/drivers/cpufreq/cpufreq_performance.c آن را بردارید

فایل Copy cpufreq_performance.c را یکجا کپی و با یرایشگر متن بازش کنید

تمام خطها را پاک کنید و فایلهای governor را از github اضافه کنید

فایل governor C را به مسیر KernelSource/drivers/cpufreq کپی کنید

فایل Kconfig را باز کنید

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

config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!

برای BadAss

config CPU_FREQ_DEFAULT_GOV_BADASS
bool "badass"
select CPU_FREQ_GOV_BADASS
help
Use the CPUFreq governor 'BADASS' as default

endchoice را پیدا کنید

کدهای زیر را در زیر استفاده کنید

config CPU_FREQ_GOV_BADASS
tristate "'badass' cpufreq governor"
depends on CPU_FREQ
help
'badass' - This driver adds a dynamic cpufreq policy governor.
The governor does a periodic polling and
changes frequency based on the CPU utilization.
The support for this governor depends on CPU capability to
do fast frequency switching (i.e, very low latency frequency
transitions).

فایل Makefile را باز کنید

کدهای زیر را طبق Governor اضافه کنید

obj-$(CONFIG_CPU_FREQ_GOV_BADASS) += cpufreq_badass.o

فایل Kernel Source/include/linux.* را باز کنید

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

#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_badass)
extern struct cpufreq_governor cpufreq_gov_badass;
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_badass)

اضافه کردن زمانبندی I/O

فایل I/O .c را مانند فایل Governor کپی کنید در مسیر Kernel Source/block

فایل Kconfig.iosched را باز کنید

config IOSCHED_SIO
tristate "Simple I/O scheduler"
default y
---help---
The Simple I/O scheduler is an extremely simple scheduler,
based on noop and deadline, that relies on deadlines to
ensure fairness. The algorithm does not do any sorting but
basic merging, trying to keep a minimum overhead. It is aimed
mainly for aleatory access devices (eg: flash devices).
And we will add the I/O Scheduler VR Below it like:

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

config IOSCHED_VR
tristate "V(R) I/O scheduler"
default y
---help---
Requests are chosen according to SSTF with a penalty of rev_penalty
for switching head direction.
Let's assume that we saw SIO (But in different way)

config DEFAULT_SIO

bool "sio" if IOSCHED_SIO=y

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

config DEFAULT_VR
               bool "V(R)" if IOSCHED_VR=y
default "sio" if DEFAULT_SIO
default "vr" if DEFAULT_VR

اکنون Makefile را باز کنید

obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
[obj-$(CONFIG_IOSCHED_VR) += vr-iosched.o

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

در مسیر KernelSource/arch/arm/mach-msm/acpuclock-XxXX.c دو فایل هستند

acpuclock-7×30.c

acpuclock-8×50.c

که فایلی که .c و .o می باشد باید ویرایش کنید برای اورکلاک

کامپایل

در آخر برای کامپایل

cd android
cd kernel
export ARCH=arm
export CROSS_COMPILE=~/android/kernel/arm-eabi-4.4.3/bin/arm-eabi-

برای اضافه کردن کمی ویرایش

make <your_config_name>_defconfig

به جای <your_config_name> نامی که در Source/arch/arm/configs هست را وارد کنید

make menuconfig
make -j<cpucore>

به جای <cpucore> تعداد هسته گوشی را بنویسید

make clean
make oldconfig
make -j<cpucore>

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

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

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

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

استاندارد

با سلام

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

پیش نیازها

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

  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'

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

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

موفق باشید

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

آموزش تغییر رنگ پشت زمینه کلی گوشی

استاندارد

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

همین اول کار بگم که تغییر کلی رنگ بر برنامه های اصلی و سیستمی تاثیر میگذارد

برنامه های مانند تقویم،تماس،پیامک،نصب کننده برنامه،ایمیل،تاریخچه تماس و غیره

پس هر رنگی انتخاب میکنید دقت کنید چون ممکن رنگی که میذارید ناهماهنگی ایجاد کند

تغییرات را ما بر تغییر رنگ سیاه میگیریم چون تقریبا در بیشتر ورژنهای اندروید رنگ اصلی سیاه می باشد

رنگ اصلی را در مسیر framework-res.apk/res/values/styles.xml می توان دید

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

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

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

دنبال <style name=”Theme”> باشید

کد زیر را پیدا

<item name="colorBackground">@color/background_dark</item>

و کد زیر جایگزینش کنید

<item name="colorBackground">@color/transparent</item>

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

<item name="windowBackground">@drawable/screen_background_dark</item>

کد زیر را جاگزینش کنید

<item name="windowBackground">@drawable/mybackground</item>

دنبال <style name=”Theme.Black” parent=”@style/Theme”> بگردید

کد زیر را

<item name="colorBackground">@color/black</item>

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

<item name="colorBackground">@color/transparent</item>

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

<item name="windowBackground">@color/black</item>

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

<item name="windowBackground">@drawable/mybackground</item>

در آخر یک عکس با فرمت PNG در سایز گوشیتون با نام mybackground.png بسازید و در مسیر drawable خود قرار دهید

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

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

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

تمام

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

معرفی ASSAYYED KITCHEN

استاندارد

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

امروز ابزاری را که برایتان معرفی می کنم با جرات می توان گفت کاملترین برنامه برای ویرایش APK ،رامهای اندروید و فایلهای سیستمی می باشد

این آشپزخانه به نام ASSAYYED KITCHEN دارایی قابلیتهای بسیار زیاد می باشد

قابلیتهای برنامه

پشتیبانی از ورژنهای رام زیر:

  • رامهای استوک سامسونگ (tar)  (tar.md5)
  • فایلها ایمیج استوک (system.img, boot.img, cache.img)
  • رام استوک سونی (ftf)
  • فایلهای استوک سونی (system.sin, kernel.sin)
  • زیپ دارای فایل tar
  • زیپ دارایی فایل ftf
  • زیپ دارایی فایلهای سیستم
  • رامهای موتورولا
  • رامهای System.yaffs2 با کرنل
  • فایل System.ext4 با کرنل
  • فایلهای زیپ دارایی ext4 system.img با کرنل
  • زیپ حاوی system.new.dat با کرنل
  • پشتیبانی از برداشتن هدر اضافه موتورولا
  • هر گونه رامی که در پوشه کار آشپزخانه قرار بگیرید

استخراج رام اصلی با کرنل

  • دستگاه روت شده یا نشده حاوی اندروید
  • دستگاهی که به کاستوم ریکاوری بوت شود
  • قابلیت گرفتن symlinks از دستگاه با دستور (ls -Rl /system حتی بدون روت

قابلیت دئودکس کردن

  • تمام ورژنهای اندروید از ابتدا تا نوقا
  • تمام رامهای شرکتی مانند سامسونگ سونی و غیره
  • هر نوع معماری دستگاه (arm, mips, x86)
  • هر نوع چیپ دستگاهی 32 و64 بیت
  • قابلیت سریع نشان دادن تعداد فایلهای APK در حال دئودکس

قابلیت اضافه کردن آخرین ورژن SuperSU

  • تمام رامهای اندروید از ابتدا تا نوقا
  • تمام رامهای CM/AOSP
  • اضافه کردن روت 5.1.1/6.0.1 بصورت سیستمی و با پچ sepolicy

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

ساخت زیپ (META-INF) ریکاوری کاستوم

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

قابلیت debloating تمام رامها

قادر به ریپک و آنپک کردن انواع کرنل و ریکاوری

استخراج فایل ار فرمتهای (cache.img/hidden.img/userdata.img)

استخراج فایلهای بکاپ TWRP

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

پشتیبانی از APKTOOL و انواع ویرایشهای APK

طریقه استفاده

بعد از دانلود برنامه یک فایل ASSAYYED.exe و یک پوشه TOOLS می بینید

با اجرای برنامه پوشه های (PLACE, WORK, READY FOLDERS) بوجود می آیند

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

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

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

معرفی ابزاری برای ساخت فایل zip قابل فلش(آموزش ویدیویی)

استاندارد

قبلا آموزشی در خصوص ساخت فایل زیپ قابل فلش در سایت قرار داده بودم

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

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

برنامه های مختلف

فایل انیمیشن بوت

کرنل

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

همچنین می توانید فایلها را به گروهای خاصی تقسیم کنید

مثلا می توان چند کرنل را قرار داد تا موقع نصب یکی را انتخاب کرد

برنامه Android Flashable Zip Creator را از فایل زیر می توانید دانلود کنید

 

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

آموزش اضافه کردن نام رام و توسعه دهنده در about

استاندارد

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

ممکن قبلا چنین اموزشی گذاشته باشیم ولی بخاطر تنوع بالا در رامهای اندروید و ورژنهای مختلف اندروید ممکن کمی فرق داشته باشند

فایل Settings.apk را دیکامپایل کنید

به مسیر res\xml بروید و فایل device_info_settings.xml را باز کنید

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

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

به android:title و android:summary نیاز داریم که در strings.xml دیده شوند

ما به android:key نیاز داریم که برای راحتی کار همون android:title را نگه دارید

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

<Preference android:title="@string/rom_header" android:key="rom_header" android:summary="@string/rom_name" style="?android:preferenceInformationStyle" />
    <Preference android:title="@string/author_header" android:key="author_header" android:summary="@string/author_name" style="?android:preferenceInformationStyle" />

پس  device_info_settings.xml ما به شکل زیر در می آید

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

اکنون به  res\values\strings.xml بروید تا ورودی ها را قرار دهید

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

یکی “@string/rom_header” و دیگری “@string/rom_name” می باشد

همچنین برای نام توسعه دهنده به دو ورودی نیاز داریم

یکی “@string/author_header” و دیگری “@string/author_name” می باشد

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

<string name="rom_header">Rom Name</string>
    <string name="rom_name">X Rom</string>
    <string name="author_header">Developed By</string>
    <string name="author_name">Saqib Nazm</string>

شما می توانید هر نامی دلتان خواست بنویسید

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

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

تمام

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

آموزش اضافه کردن برنامه یا گزینه به تنظیمات(بخش دوم)

استاندارد

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

در این بخش قرار دادن گزینه در منو فرعی تنظیمات می پردازیم

در این آموزش ما در منوی فرعی  display settings برنامه On-screen-buttons را اضافه می کنیم

در اینجا ما به یک منبع اضافی نیاز داریم به نام android:key که کلید اصلی هر برنامه ای است

اگر android:key اصلی را نیافتید،مقدار android:key را در مرجع ids.xml می دهیم

برای شروع اول برنامه  On screen button را دیکامپایل کنید

دنبال منابع میریم در AndroidManifest.xml

همان طور که می بینید ما android:targetPackage=”cn.kyle.gn.NavBar را به آسانی پیدا کردیم

تنها یک خط با <activity شروع می شود پس پیدا کردن android:targetClass=”cn.kyle.gn.NavBar.GnNavBarAct ivity”. android:action=”com.android.intent.MAIN”به آسانی است

اکنون نیز به android:title داریم که می تواند هر چیزی باشد که در strings.xml می باشد

android:key می تواند هر چیزی باشد که در ids.xml مراجعش می دهیم

چیز دیگری که بعنوان ورودی نیاز داریم android:summary می باشد، که زیر هدر برنامه می باشد

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

android:title="navienable_title"
android:key="on_screen"
android:summary="on_screen_summary"

وقتی تمام منابع و مقدار انها را درست کردید اکنون ورودی را در res\xml in display_settings.xml وارد می کنیم

<PreferenceScreen android:title="@string/navienable_title" android:key="on_screen" android:summary="@string/on_screen_summary">
        <intent android:targetPackage="cn.kyle.gn.NavBar" android:action="android.intent.action.MAIN" android:targetClass="cn.kyle.gn.NavBar.GnNavBarActivity" />
    </PreferenceScreen>

در آخر display_settings باید مانند زیر باشد

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

اکنون به res/values بروید و فایل strings.xml را باز کنید

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

یکی برای android:title=”@string/navienable_title”

و دیگری برای android:summary=”@string/on_screen_summary

مانند زیر دو ورودی را درست می کنیم

<string name="navienable_title">On-Screen-Buttons</string>
    <string name="on_screen_summary">Enable/Disable On-Screen-Buttons</string>

به جایی On-Screen-Buttons شما نام برنامه یا هر چیزی که می خواهید را وارد کنید

فایل strings.xml ما مانند زیر می باشد

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

اکنون به مسیر res\values\ids.xml بروید و فایل را باز کنید

اینجا نیاز داریم تا یک ورودی در display_settings بعنوان android:key ایجاد کنیم

ورودی ما به شکل زیر می باشد

<item type="id" name="on_screen">false</item>

پس ids.xml ما به شکل زیر در می آید

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

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

کار تمام شد

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

اگر بخواهید که برنامه ای که در تنظیمات قرار می دهید مخفی شود و در لانچر نمایان نشود

در فایل Androidmanifest.xml قسمت زیر را در نظر بگیرید

<activity android:label="@string/app_name" android:name=".GalleryActivity" android:taskAffinity="android.task.pictures" android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

و خط زیر را پاک کنید

<category android:name="android.intent.category.LAUNCHER" />

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

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

<activity android:label="@string/app_name" android:name=".GalleryActivity" android:taskAffinity="android.task.pictures" android:configChanges="keyboardHidden|orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

کد بالا را به شکل زیر دربیارید

<intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />

موفق باشید

همچنین اگر موقع کامپایل با اشکال مواجه شدید

در مسیر smali/com/android/settings یک فایل به نام Maddy.smali درست کنید و کدهای زیر را در آن قرار دهید

.class public Lcom/android/settings/Maddy;
.super Lcom/android/settings/SettingsPreferenceFragment;
.source "Maddy.java"

# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 17
    invoke-direct {p0}, Lcom/android/settings/SettingsPreferenceFragment;-><init>()V

    return-void
.end method

# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .param p1, "savedInstanceState"    # Landroid/os/Bundle;

    .prologue
    .line 21
    invoke-super {p0, p1}, Lcom/android/settings/SettingsPreferenceFragment;->onCreate(Landroid/os/Bundle;)V

    .line 23
    const v0, 0x7f050054

    invoke-virtual {p0, v0}, Lcom/android/settings/Maddy;->addPreferencesFromResource(I)V

    .line 24
    return-void
.end method

موفق باشید

در اندروید 5 بجای settings_headers.xml دنبال فایل dashboard_categories.xml باشید

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

آموزش اضافه کردن برنامه یا گزینه به تنظیمات(بخش اول)

استاندارد

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

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

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

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

برنامه Notepad++

اضافه کردن گزینه یا برنامه در منوی اصلی

برای اضافه کردن برنامه به تنظیمات شما به منابع آن برنامه نیاز دارید

این منابع را در دیکامپایل برنامه در فایل AndroidManifest.xml می توان پیدا کرد

برای اضافه کردن به منابع زیر نیاز داریم

android:targetPackage: نام اصلی برنامه

android:action: مرتبط با یکبار کلیک کردن روی برنامه برای اجرای آن

android:targetClass : عملگری که هنگام کلیک بر برنامه برنامه را اجرا می کند

android:title : هدر و همچنین strings.xml برنامه

android:icon : این هم آیکون برنامه هست

در بعضی برنامه ها  android:targetClass در مسیر AndroidManifest نمی باشد،باید آن را خودتان جستجو کنید

خوب بریم سراغ آموزش

ما برنامه Rom Toolbox را بعنوان نمونه در نظر می گیریم

1- اول از همه نیاز به دیکامپایل Rom Toolbox داریم،برای پیدا کردن منابعمون در AndroidManifest.xml

همان طور که در تصویر بالا می بینید،دو منبع  android:targetPackage و android:targetClass را علامت زدم

پیدا کردن انها آسان است اگر نتوانستید آنها را پیدا کنید در جستجو دنبال خطهای با شروع <activity باشید

گاهی android:targetClass را فقط در یک عبارت پیدا می کنید

بعنوان نمونه برنامه Serajr’s SystemUI Preference را SystemUIPreferencesActivity پیدا می کنید

در این حالت باید android:targetPackage را قبل از targetClass اضافه کنیم

برای مثال بالای ما میشه android:targetPackage=”com.serajr.systemui.prefere nces به android:targetClass=”com.serajr.systemui.preferences.SystemUIPreferencesActivity پس

برای Rom Toolbox میشه

android:targetPackage="com.jrummy.liberty.toolbox"
android:targetClass="com.jrummy.apps.rom.toolbox.RomToolboxActivity"
android:action="android.intent.action.MAIN"

android:action همیشه نیاز نیست اضافه شود

می توان به جایش از android.intent.action.MAIN استفاده کرد

2- اکنون Settings.xml را دیکامپایل کنید

به مسیر res\xml بروید و فایل settings_header.xml را با notepad++ باز کنید

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

اگر می خواهیم یک هدر بسازیم به نام advanced settings نیاز به ساخت android:title و android:icon برای برنامه داریم

کد زیر settings_header ما می شود

</header>
    <header android:title="@string/header_category_advanced" />
    <header android:icon="@drawable/ic_settings_rom" android:title="@string/rom_toolbox">
        <intent android:targetPackage="com.jrummy.liberty.toolbox" android:action="android.intent.action.MAIN" android:targetClass="com.jrummy.apps.rom.toolbox.RomToolboxActivity" />

در هدر اولی برای advanced settings نیاز به ساخت ورودی نام برنامه در strings.xml داریم

در هدر دومی نیز نام و آیکون برنامه قرار دارند،درست مانند اسمی که در strings.xml وجود دارد

ما rom_toolbox نوشتیم شما هر برنامه ای که می خواهید بنویسید

در آخر settings_header ما به شکل زیر در می آید

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

3- اکنون به مسیر res\values بروید و فایل strings.xml را باز کنید

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

یکی برای advanced settings و دیگر برای خود برنامه

نام هر دو رشته header_category_advanced و rom_toolbox می شود

پس ورودی strings.xml ما به شکل زیر می شود

<string name="header_category_advanced">ADVANCED SETTINGS</string>
    <string name="rom_toolbox">ROM Toolbox</string>

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

پس strings.xml مانند تصویر زیر می شود

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

4- اکنون نیاز به قرار دادن یک png برای برنامه در پوشه drawable داریم با نام ic_settings_rom که درheader of android:icon داده می شود

بسته به دستگاهتان نام پوشه شما drawable hdpi  یا drawable mdpi می شود

برای ما hdpi می باشد

برای شروع اول نیاز به رزولوشن png که با نام ic_settings شروع می شود نیاز داریم

برای drawable hdpi می شود 48×48 و برای drawable mdpi می شود 32×32 پس ما نیاز داریم که اندازه png را به همان اندازه درست کنیم

برای ما اندازه را 48×48 کردیم و در پوشه drawable-hdpi قرار دادیم

5- در آخر نیاز به کامپایل فایل خود دارید

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

در بخش دوم چگونگی قرار دادن گزینه در منو های فرعی تنظیمات را آموزش می دهیم

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

آموزشهای اندروید از مبتدی تا توسعه دهنده

استاندارد

با سلام اندروید مانند یک دریایی بی کران می ماند و فردی که بخواهد برای وارد شدن به این دریا و تبدیل شدن به یک ناخدا(توسعه دهنده) شود ممکن است کمی گیج شود چون آموزشهای بسیار متنوعی وجود دارند و هر چیزی که یاد میگیرید میبینید که بازم یک چیز کم است
در این پست تصمیم گرفتم که آموزشهای مختلف انجمن Gsm-Developers را جمع آوری و دسته بندی بکنم تا منبع باشد برای یک شروع از نقطه صفر تا توسعه دهندگی اندروید تقریبا آموزشها از چگونگی فلش یک رام تا ساخت خود رام هستند و بیشتر آموزشها را بنده سعی می کنم قرار بدهم

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

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

در پست زیر در انجمن آموزشها قرار می گیرند هرگونه درخواستی نیز دارید سعی کنید در انجمن مطرح کنید

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