PDA

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



Nol3Le
22-04-2012, 11:51
.



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

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


فایلهای CWM (فایلهای Zip که از طریق ریکاوری نصب میشن)

این فایلها دو چیز کلی دارن :

1. فایل اصلی که قراره به گوشی منتقل بشه.

2. فایل دستوری که دستورات انتقال و .... در درونش قرار داره.

.........................................

شروع :

ابتدا یه پوشه مثلا" به اسم CWM بسازید..

حالا پوشه بندی های درونش رو به شکل رو به رو ایجاد کنید :



CWM/
|
+- META-INF/
| |
| +- com/
| |
| + google/
| |
| +- android/


در اخرین زیر مجموعه یعنی پوشه android دو فایل قرار میگیره :

update-binary

updater-script

فایل update-binary در اکثر فایلهای CWM یکسان هست ..از اینجا (http://nol3le.persiangig.com/update-binary) دریافت کنید.

فایل updater-script همون فایل دستوری هست که باید ساخته بشه و دستورات درونش قرار بگیره..

ابتدا فایل update-binary که دریافت کردید رو در پوشه android قرار بدید..

برای ساخت فایل دوم روی صفحه کلیک راست کنید و یک فایل TEXT ایجاد کنید و نامش رو بزارید updater-script.txt حالا پسوند txt. رو پاک کنید..

برای قرار دادن دستورات در فایل updater-script از ++Notepad استفاده کنید..( اموزش اسکریپت نویسی رو در پست دوم قرار میدم چون پست شلوغ میشه )

.................

حالا میریم سراغ فایل اصلی که میخواهیم به گوشی منتقل کنیم :

مثلا" فایل framework.jar رو ویرایش کردید و میخواهید منتقل کنید به گوشی..

باید اونو در پوشه CWM قرار بدید..

دو حالت برای قرار دادنش در CWM دارید.

(هم میتونید مستقیم کپیش کنید در پوشه CWM و هم میتونید در پوشه framework و سپس system قرارش بدید و پوشه system رو در CWM کپی کنید)

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

پوشه ها و فایلها باید به این صورت قرار بگیرند.. :


CWM/
|
+- META-INF/
| |
| +- com/
| |
| + google/
| |
| +- android/
| |
| + update-binary فایل مشترک دریافتی
| |
| + updater-script فایل دستوری
|
+- system/
|
+- framework/
|
+ framework.jar فایل ویرایش شده که میخواهید منتقل بشه


خوب اینم از فایلها و پوشه ها..

برای اسکریپت نویسی و قرار دادن دستورات در updater-script به پست دوم مراجعه کنید..

.............

حالا فرض میکنیم شما فایل updater-script رو کامل کردید و دستورات رو درونش قرار دادید..

الان باید پوشهای درون CWM رو ZIP کنید..

وارد پوشه CWM شید و دو پوشه META-INF و system انتخاب و روشون کلیک راست کنید و با Winrar گزینه Add to Archive رو انتخاب کنید..

طبق عکس نوع فایل فشرده رو Zip و Compression Method رو روی Store (فقط ذخیره سازی چون نباید فشرده بشه) قرار بدید..

http://forum.mobilestan.net/attachment.php?attachmentid=718579&stc=1&d=1335081149

بعد از ساختن فایل زیپ باید اونو قبل از نصب ساین کنید..

نرم افزارها و روشهای زیادی برای ساین فایلهای ZIp هست..

در لینوکس میتونید از Androsign (http://forum.xda-developers.com/showthread.php?t=1090795) استفاده کنید..

اگه میخواهید در گوشی عمل ساین رو انجام بدید نرم افزار Zip Signer (http://dl.mobilestan.net/index.php/files/get/7FLRq7g129/zipsigner-2-2.2.apk) رو در گوشی نصب کنید..

فایل ZIP رو به گوشی انتقال بدید..

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

.................

کار تمومه و فایل CWM امادست و میتونید از ریکاوری نصبش کنید...


( کپی فقط با ذکر نام Nol3le )



.

Nol3Le
22-04-2012, 11:53
آموزش اسکریپت نویسی :

اسکریپت نویسی در کل مبحث پیچیده ای هست.

من فقط به قسمت های کاربردی که به دردتون میخوره اشاره میکنم..

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

دستورات کلی رو میگم و مثال میزنم..

اول میریم سراغ معرفی 3 قسمت اصلیش :

Mount کردن

اعمال تغییرات

UnMount کردن

...............

یه قسمت دیگم وجود داره ولی جدای این 3 تاست..

قسمت هایی که در هنگام نصب فایل ZIP در ریکاوری نمایش داده میشه..دستور Print و Progress Bar ...

در دستور Print شما میتونید هر متنی که میخواهید تایپ کنید تا در هنگام نصب روی صفحه نمایش داده بشه...
در دستور Progress Bar شما میزان پیش روی نوار Progress رو که در هنگام نصب تعیین می کنید..

حالا میریم سر دستورات :


دستور Mount کردن :

دستوری برای دسترسی به فایلهاست برای شروع تغییرات..

یه پوشه یا قسمت رو به دو روش میشه Mount کرد..

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

(این دستور روی اکثر رامهای کاستوم و روت شده قابل اجرا هست چون busybox روشون نصبه.)


مثلا" برای Mount کردن پوشه system در گوشی از این دستور استفاده میکنیم..


run_program("/sbin/busybox", "mount", "/system");

2.دستور دوم مربوط به مدل گوشی و نوع پارتیشن و نام پارتیشن میشه و هر گوشی دستور خودش رو داره..

مثلا" برای mount کردم پوشه Data در گوشی دیفای از این دستور استفاده میکنیم..


mount("ext3", "EMMC", "/dev/block/mmcblk1p25", "/data");


دستور Print (نمایش متن و پیغام ):


ui_print("پیغام شما");

دستور Progress بار :


show_progress(مدت, قسمت بندی);

دستور Format :

مثلا" برای فرمت کردن پوشه system در دیفای از این دستور استفاده میشه :


format("ext3", "EMMC", "/dev/block/mmcblk1p21", "/system");


دستور کپی کردن یک فایل :


package_extract_file( "پوشه مقصد","محل و نام فایل",);


دستور کپی یک پوشه :


package_extract_dir("مقصد", "مبدا");

مثال :

package_extract_dir("system", "/system");


دستور اجرای یک نرم افزار :


run_program("دستوری که برنامه باید اجرا کنه","محل برنامه");

مثال :


run_program("/sbin/busybox", "mount", "/system");


دستور حذف فایل :


delete("نام و محل فایل");


دستور حذف پوشه :


delete_recursive("نام و محل پوشه");

مثال :


delete_recursive("/system");


ادامه در پست سوم ...!

Nol3Le
22-04-2012, 15:22
دستور Assert (توقف نصب فایل CWM در صورت بروز مشکل یا خطا ) :

مثال :


assert(package_extract_file("boot.img", "/tmp/boot.img"),

دستور برای فایلهای IMG :

دستور assert هم در این فایلها باید باشه چون این فایلها نقش حیاتی دارن..!

مثال :


assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "boot"),
delete("/tmp/boot.img"));

دستور permissions برای یک فایل (دوستان اگه اطلاعات دقیقی در مورد uid, gid, dmode, fmode دارند ممنون میشم به اشتراک بزارن) :


set_perm(uid, gid, mode, “/محل فایل”);

مثال :


set_perm(0, 0, 0755, "/system/etc/bluetooth");

دستور permissions برای یک پوشه (دوستان اگه اطلاعات دقیقی در مورد uid, gid, dmode, fmode دارند ممنون میشم به اشتراک بزارن) :


set_perm_recursive(uid, gid, dmode, fmode, “/نام و محل پوشه”);

مثال:


set_perm_recursive(0, 0, 0755, 0644, "/system");

دستور symlinks ( کپی از یک فایل با نامهای مختلف در مکانهای مختلف) :


symlink("نام و محل فایل", "/نام و محل فایل");


دستور Unmount :


run_program("/sbin/busybox", "umount", "پوشه مونت شده ");

مثال :


run_program("/sbin/busybox", "umount", "/system");


unmount(" پوشه مونت شده");

مثال :


unmount("/system");

....................

نکات :

1. در هر خط یک دستور قرار میگیره..

2. بعد از هر دستور یک ; (کاما) قرار بدید و دستور بعدی در سطر بعدی..

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

.............................

نمونه اسکریپت نوشته شده برای فایل framework.jar برای انتقال به گوشی :

http://forum.mobilestan.net/attachment.php?attachmentid=718713&stc=1&d=1335103644


( کپی فقط با ذکر نام Nol3Le )




.

M_J_Nazari
26-04-2012, 18:03
توضیحات تکمیلی
اول از همه چیز از استارتر تاپیک بشدت قدردانی میشه، سعی میکنم تا جایی که امکان هست، اطلاعات رو ساده بیان کنم.
----------------------------------------------------------
برای دیدن پارتیشن ها برای هر گوشی میتونیم از دستور Adb زیر استفاده کنیم:


adb shell
df -hمثلا برای گلکسی S داریم:



G:\Android>adb shell
~ # df -h
df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 183.2M 32.0K 183.2M 0% /dev
tmpfs 183.2M 0 183.2M 0% /mnt/asec
tmpfs 183.2M 0 183.2M 0% /mnt/obb
/dev/block/stl9 275.8M 233.7M 42.1M 85% /system
/dev/block/stl3 5.9M 5.0M 929.0K 85% /efs
/dev/block/mmcblk0p2 1.9G 220.1M 1.7G 11% /data
/dev/block/stl10 127.2M 10.0M 117.2M 8% /dbdata
/dev/block/stl11 30.1M 76.0K 30.0M 0% /cache
df: /mnt/.lfs: Function not implemented
/dev/block/vold/179:1
5.6G 4.4G 1.3G 78% /mnt/sdcard
/dev/block/vold/179:8
3.7G 7.0M 3.7G 0% /mnt/sdcard/external_sd
/dev/block/vold/179:8
3.7G 7.0M 3.7G 0% /mnt/secure/asec
~ #
--------------------------------------------------------------------------------------------
برنامه ی تحت ویندوز برای ساین کردن فایل ها ی apk و یا zip , jar

http://forum.mobilestan.net/showpost.php?p=2727064&postcount=7--------------------------------------------------------------------------------------------

اگه میخواهید یه برنامه رو اجرا کنید، (مثلا نصب Busybox)
ابتدا باید فایل نصب کننده را permission بدهید ، سپس اونو اجرا کنید.

مثال: برای busybox که توی آدرس زیر داریم:


CWM/
|
+- updates/busybox
باید مطابق دستور زیر عمل کنیم:

1-کپی کردن فایلهای موجود در پوشه ی updates به پوشه tmp


package_extract_dir("updates", "/tmp");
2- به فایل کپی شده پرمیشن میدیم:

set_perm(0, 0, 06755, "/tmp/busybox");3- فایل موجود در tmp را نصب میکنیم

run_program("/tmp/busybox", "--install", "-s", "/system/bin");بهتره بیزی باکس توی bin نصب بشه، ولی میتونید توی xbin هم نصب کنید.
---------------------
دقت کنید که اسکریپت نسبت به حروف کوچک و بزرگ حساس هست، هرگز از فاصله در نام ها استفاده نکنید. سعی کنید نامها کمتر از 8 کارکتر باشد.

-------------------
نحوه ی آدرس دهی، بهتره با ذکر یک مثال توضیح بدهم، ما دو تا پوشه system داریم، یکی تو فایل زیپ هست و دیگری توی خود گوشی، حالا چطوری، به اسکریپت اینا رو معرفی کنیم؟

آدرس پارتیشن system در گوشی

/systemآدرس فولدر system توی فایل zip

systemتفاوت توی / قبل از نوشته هست،
------------------------------

arman0077
17-05-2012, 17:53
ببخشید اگه بخایم سیستم رو با یه متد فرمت کنیم باید توی دستور چی بنویسیم؟ (گوشی لایو)
الان کرنلی که روی گوشی من هست توی xda سازندش گفته از ext4 و ntfs ساپرت میکنه میشه فرمت سیستم رو به اون تغییر داد؟
ntfs بهتره یا ext4؟

arman0077
18-05-2012, 13:57
کسی اینجا نیست؟؟؟؟؟؟؟؟؟؟؟
این دو روزه سوال پرسیدم کسی هنوز نگاهشم نکرده.

arman0077
21-05-2012, 21:59
ببخشید یه سوال دیگه:
میشه دیتا و کش رو هم به این فرمت ها تغییر بدیم؟

M_J_Nazari
21-05-2012, 22:39
ببخشید اگه بخایم سیستم رو با یه متد فرمت کنیم باید توی دستور چی بنویسیم؟ (گوشی لایو)
الان کرنلی که روی گوشی من هست توی xda سازندش گفته از ext4 و ntfs ساپرت میکنه میشه فرمت سیستم رو به اون تغییر داد؟
ntfs بهتره یا ext4؟

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

فکر نکنم اطلاع زیادی توی اینترنت گیرت بیاد.

ببخشید یه سوال دیگه:
میشه دیتا و کش رو هم به این فرمت ها تغییر بدیم؟
آره میشه، ولی اطلاعات کافی در دست نیست.

amin1374
27-05-2012, 13:00
من قصد دارمآپدیتر اسکریپت یک رام رو ویرایش کنم باید چه کار هایی انجام بدم منظورم اضافه کردن اسم دولوپر رام هنگام نصب ونمایش پیغام هایی هنکام نصب وپیغام پایانی در پایان نصب
باید از کجا شروع کنم

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

amin1374
27-05-2012, 13:02
این آروما اینستالر چیه یک ظاهری تقریبا گرافیکی داره مثلا کرتل نصب میکنم میاد و گزینه نکست و انتخاب نوع و...داره اون وچه طور ی بسازم

GenomeX
27-05-2012, 13:28
من قصد دارمآپدیتر اسکریپت یک رام رو ویرایش کنم باید چه کار هایی انجام بدم منظورم اضافه کردن اسم دولوپر رام هنگام نصب ونمایش پیغام هایی هنکام نصب وپیغام پایانی در پایان نصب
باید از کجا شروع کنم



همونطور که در آموزش هم گفته شده، دستور:

ui_print();
بین پرانتز هرچیزی خواستید بنویسید البته لاتین و تعداد کاراکترها زیاد نباشه این دستور در clockwork recovery نمایش داده میشه.
البته دستورات این تاپیک برای Edify هست (البته ریکاوریهای جدید این مدل هستند مدل دیگه Amend هست که قدیم استفاده میشد و البته فکر کنم RZ recovery هردو رو پشتیبانی کنه)

در مورد سوال دومتون اطلاعی ندارم شرمنده. البته من هم در مورد این اسکریپت شنیدم و حتی تاپیکش رو دنبال کردم ولی من بیشتر کارها رو خودم دستی انجام میدم (حتی از UOT kitchen هم خوشم نمیاد) این جور کارها و اسکریپها معمولاً ابرو رو درست میکنن میزنند چشم رو کور میکنند!

™EXITMOOD
27-05-2012, 14:38
نه ادیب جان اتفاقا موضوع آروما کاملا فرق داره.. من خودم رو رامم ازش استفاده کردم و بسیاری از دولوپرهای htc دارن ازش استفاده می کنن.. سورس کدهاش رو داشته باشی و یه مقدار تجربه و دانش می شه خیلی خوب ازش استفاده کرد و صرفا یه محیط گرافیکی نیست، واقعا کارایی داره و دست کوکر رو خیلی باز می ذاره برای کار رو کاستومایز کردن setup رام. البته یکی دو اشکال کوچولو داره که با داشتن تجربه می تونی دورشون بزنی و بهترین استفاده رو بر مینای نیازت ازش بکنی.. اگر پرسشی در این مورد بود در خدمتم..

amin1374
27-05-2012, 17:38
من الان اسکریپتشو دانلود کردم ولی خیلی پیچیده اس میشه کمی در موردش توضیح بدهید
با تشکر

™EXITMOOD
27-05-2012, 20:25
خب من نمی دونم الان اطلاعات شما در چه حد هست.. و اینکه شما برای چه کاری می خوای از این اسکریپت استفاده کنی و برای چه گوشی ایی .. شما الان کدهای updater-script نوشتی؟

amin1374
27-05-2012, 23:26
نه دقیقا گوشیمم گلکسی ایسه
میخام از پایه شروع کنم با این اسکریپت کلا کیشه؟
من آپدیتر اسکریپت یک رامه دگه رو ویرایش کنم باید بیس باند های رام ها یکی باشه یا فرقی نمیکنه
چه طوری ویرایشش کنم که قبل از نصب ارور نده د مورده ویرایش باید چه نکاتی رو رعایت کنم

در کل حالت عادی رو در نظر بگیرید نه آروما

™EXITMOOD
28-05-2012, 11:02
بیبین امین جان باید اول دستورات رو درست بنویسی، حتی نقص یه علامت " می تونه باعث ارور بشه...
آره می شه از رو رامهای مشابه دیگه برداشت، بعد به اون صورتی که می خوای ویرایش کنی اما حتما بخش extract ها و set perm ها رو چک کن... به هر حال اینها باید بر اساس رام خودت باشن.. و اینکه برای به قول خودتو نوشته ها هم همونطور که ادیب جان گفتن از این دستور


ui_print(" ");

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

اولویت ها هم اصولا به این شکل هست که شما اول format ها رو قرار می ده بعد mount ها بعد extract ها و بعد set perm و symlink . این بین هم show progress رو به به تناوب می ذاری که نشون دهنده ی درصد setup هست.

amin1374
28-05-2012, 17:26
بیبین امین جان باید اول دستورات رو درست بنویسی، حتی نقص یه علامت " می تونه باعث ارور بشه...
آره می شه از رو رامهای مشابه دیگه برداشت، بعد به اون صورتی که می خوای ویرایش کنی اما حتما بخش extract ها و set perm ها رو چک کن... به هر حال اینها باید بر اساس رام خودت باشن.. و .
در مورد این قسمت که باید یکی باشن بیشتر توضیح میدهید
د ر کل اسکریپت با بیس باند رابطه نداره یعنی بیس باند کار میتونه همهچی باشه؟!!
نرم افزاری هست که بشه با اون ارور هاشو چک کرد
من از کیچن برای بعضی از جاها کارم استفاده میکنم مشکلی نداره این ززیپ الاین خوبه انجامش بدم
اسکریپتو من قبلا ویرایش کیکردم ولی تو ریکاوری ابورت میداد و ارور شماره7
تبدیل پارتیشن های سیستمی به اکسترا4 که توسط کرنل ساپرت میشه هم توی همین اسکریپت نوشته میشه درسته؟
ف.نت فارسی هم نتاپیکی هست که داشته باشه چون نمیدونم مشکل از کجاس حرف پ در مرور گر به صورت~نوشته میشه
برای اسکریپت نویسی یا ویرایش این برنامه

http://forum.xda-developers.com/showthread.php?t=1247929
خوبه من ازش برای ساین استفاده میکنم!!؟
ببخشید که زیاد میپرسم ولی ممکنه بعضی از سوالات مربوط به این بخش نشه اگه اینجا نمیشه به صورت پ.خ جوابم رو بدهید :sorry:

GenomeX
28-05-2012, 18:05
برنامه ای که گفتید رو من هم از همین استفاده میکم (البته خوب شد لینک دادید ظاهراً آپدیت شده که بابت خبر رسانی ممنون) البته برنامه های زیادی هستند مثلاً SignApk که البته فایل زیپ رو هم ساین میکنه و ...
برای اسکریپت نصب رام بهتر میبینم اون رو از یک رام کاستوم گوشیتون خارج کنید (بیشتر بابت اسکریپ باینری میگم) البته رام سیانوژن با سیانوژن، رام بر بیس اصلی هم باید از اسکریپ کاستوم رام بر پایه اصلی.
بخش هایی رو که دوستان گفتن مثل set partition و ... برای نصب بیزی باکس یا اکسترکت کردن کرنل و غیره هست بهتره با اونها کاری نداشته باشید.
مثلاً یکی فایل کرنل رو در پوشه tmp اکسترکت میکنه بعد هم باید پرمیشن رو درست کنه.
اکسترکت بعدی برای پوشه سیستم هست.
پرمیشنهای بعدی هم برایBusybox و sh و ...
جاهایی برای لینک هست که معمولاً فایلهای پوشه bin یا xbin رو به جای دیگه لینک میده.
در آخر هم بعد نصب کرنل یک دستور پوشه tmp رو که دیگه نیاز نیست پاک میکنه.
بینش ممکنه بعضی جاها ui_print ببینید خوب معلومه برای چیه. یا دستورات دیگه که بیشتر برای نمایش در محیط ریکاوری بکار میرند.
اسکریپتها تا جایی که میدونم پارتیشن رو تغییر نمیدند بلکه mount میکنندش. (اگه کرنلتون EXT4 ساپورت کنه فقط باید در اسکریپت این پارتیشن Mount و در آخر اسکریپت هم unmount بشه. حالا اگه چند پارتیشن مختلف داشته باشید باید همه رو مونت کنید)

amin1374
29-05-2012, 09:31
سلام دوست من من تغییرات دادم ولی ارور 6 داد ریکاوری این فایلی که تغییرات دادم

http://www.mediafire.com/?3r47gba890i7jdr
اینم فایل اصلی اون رامه فقط اسمش رو عوض کردم بازش کنین خودتون متوجه میشین چی گقتم اگه میه برام مشکلش رو حل کنید

http://www.mediafire.com/?4ya5wtntox45av4
خیلی خیلی هم ممنون میشم حل کنید فقز من اون بالا یک اسم رام رو اضافه کردم و اون پایینم به جای دان اسم کوکر رام رو
همین تغییرات بیشتر نبود

GenomeX
29-05-2012, 10:29
* نزار ببین درست میشه
میتونی جاش _ یا حتی # بزاری ولی این علایم چون علایم ریاضی هستند ممکنه ارور بده: ( -,+,*,/) مخصوصاً / چون مفهوم جداسازی دستورات رو داره.
در ضمن بعد تغییرات فایل zip رو ساین کنید.

amin1374
29-05-2012, 17:09
نه اصلا درست نشد فک کنم تغییرات باید در باینری ذخیره بشه چون من تغییرات در حد کلمات دادم یعنی کلمات اون تو رو عوض کردم مثل بوک4 حرفی هست من عوضش کردم کوک ارور 6 داد!!؟؟؟؟؟

arman0077
02-06-2012, 10:36
آقا امین من موقعی که ایس داشتم اولین باری که آ روما اینستالر رو دیدم موقع نصب کرنل z image بود. خودش هم داخلش توضیحات کاملی داده بود در مورد دستورات .
ورژن 1.5 رو دانلود کن (در ایکس دی ای ) درون آپدیت اسکریپت همه چیز رو میفهمی.

arman0077
02-06-2012, 10:51
بفرما اینم از پوشه متا اینف که آموزشش هم توش هست.
لینک (http://dl.mobilestan.net/index.php/files/get/M7iYFZxp0e/meta-inf.rar)

rezapor
23-10-2012, 12:04
من راممو deodex کردم ولی فایل هارو زیپ کردم ولی نصب نمیشه abort...میده میشه راهنماییم کنید ممنون:sorry: