PDA

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



hadiasadi
15-10-2009, 23:07
دوستان
اول لازمه به خدمتتون عرض کنم این آموزش رو بنده از فروم I-phone.ir نقل میکنم و بنده تقریبا چیزی از ساختن سورس نمیدونستم و این آموزش متعلق به جناب oosin درهمون فروم میباشد
اما آموزش :

چند تا از دوستان راجع به ساختن سورس برای Cydia سوال داشتند واسه همین تصمیم گرفتم آموزش ساختن سورس رو اینجا بزارم . البته احتمالا روی ورژن جدید آیفون ( ۳.۰ ) دیگه cydia نداریم و جاش ICY اومده اما فکر میکنم سورس های cydia قابل نصب روی ICY هم هستند .
شما به این مشخصات و برنامه ها نیاز دارید :

۱. سیستم عامل مک ورژن ۱۰.۵.۴ به بالا .
۲. Fink . دانلود (http://finkproject.org/)
۳. اینترنت و Text Editor
۴. برنامه AppleOff : دانلود (http://www.macupdate.com/download.php/18885/AppleOffv1.2.4.bin)
روی دسکتاپ یه فولدر به اسم New درست کنید .

ترمینال رو باز کنید و این command رو وارد کنید :



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

http://pic.i-phone.ir/files/09bcf42531dcd6a319d7a1da0b4ee418.png


توضیح : تمام پکیج هایی که میخواین بسازید باید DEBIAN رو داشته باشند و فولدر بعدی که میسازید در واقع دارید مسیری که برنامه مورد نظرتون فایل هاشو پیاده میکنه رو میدید. اگه بخواید یه برنامه تو پکیجتون داشته باشید کافیه برنامتون رو به شاخه Applications اضافه کنید . مثلا برنامه Mcleaner.app رو وقتی تو فولدر applications قرار بدیم بعد از ساختن Package این برنامه به شاخه Applications توی گوشی اضافه میشه . مثل موقعی که شما بصورت دستی یه برنامه رو کپی میکنید تو گوشی .و یا اگه میخواید مثلا Wallpaper اضافه کنید به ترتیب تو فولدر New دو فولدر به اسم های DEBIAN و Library میسازید و تو فولدر Library فولدر Wallpapers میسازید و عکس هاتونو اینجا کپی میکنید .

خب حالا باید فهمیده باشید که DEBIAN برای ساختن پکیج و معرفی به Cydia بکار میره و فولدر Applications یا System و یا ... مسیر برنامه موردنظر رو برای کپی کردن به شما میده .

حالا میرسیم به مرحله اصلی یعنی محتویات فولدر DEBIAN :

ساختن فایل Control


Text Editor رو باز کنید .
این مشخصات رو عینا کپی کنید .

Package: com.iphoneir.mcleaner
Version: 1.6.1
Priority: standard
Section: IR (Apps)
Maintainer: ooSin <[email protected]>
Depends: mobilesubstrate , com.iphoneir.repo
Architecture: iphoneos-arm
Name: MCleaner
Author: Yasin Jamali <[email protected]>
Description: Mcleaner Full Version
Homepage: http://i-phone.ir/upload/cydia/Screenshot/Mcleaner/index.html

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

Package : یعنی اسم Package که باید یه اسم منحصر به فرد باشه که با برنامه های دیگه قاطی نشه و اسم پکیج هم باید بصورت بالا باشه و فقط دو کلمه قرمز رنگ iphoneir و mcleaner رو با اسم مورد نظرتون عوض کنید .

Version : خب مشخصه که ورژن برنامه رو مشخص میکنه . الان ورژن مورد نظر من ۱.۶ بود و برای بوجود نیامدن تداخل در Cydia از ۱.۶.۱ استفاده کردم . دلیلش رو جلوتر عرض میکنم .

Section : تو Cydia دیدید که برنامه ها تو Section های مربوطه قرار دارن . شما هم مشخص میکنید که برنامتون تو چه Section ای قرار بگیره .

Maintainer : منظور اینجا سازنده بازی یا اسپانسر یا حالا هر چی که خودتون اسم میزارید هست .

Depends : بعضی از برنامه ها قبل از نصب لازم دارن که چیز دیگه ای نصب باشه . اینجا شما باید اسم اون Package که نیاز دارید رو بنویسید . مثلا اکثر برنامه ها به mobile substrate نیاز دارن پس شما هم باید این رو ذکر کنید که اگه احیانا نصب نبود بطور اتوماتیک نصب کنه . البته باید بطور دقیق اسم پکیج رو وارد کنید . برای مثال برای نصب یک برنامه ای من نیاز دارم قبلش این برنامه Mcleaner رو نصب کنم . باید تو قسمت Depends برنامه جدید وارد کنم : com.iphoneir.mcleaner

Name : خب اسم برنامه هست دیگه !

Author : اسم سازنده برنامه .

Description : توضیح راجع به برنامه .

Home Page : همون more information که مشاهده میکنید تو برنامه های Cydia هست که باید آدرس سایت مورد نظرتون رو وارد کنید .
http://pic.i-phone.ir/files/6ea39e3bf324c822210883e00783e51e.png


بعد از انجام این مراحل کافیه فایلتون رو به اسم control سیو کنید . طریقه سیو کردن به این صورت هست :
http://pic.i-phone.ir/files/84f2523ff9f56589dbf855e4e1816be0.png


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

فایل control رو درون فولدر DEBIAN قرار بدید .

برنامه AppleOff رو که اول گفتم دانلود کنید رو نصب کنید و فایل New که ساختید رو به این برنامه اضافه کنید و Clean Now رو بزنید تا فایل های اضافه رو پاک کنه . بعد از انجام این عملیات بهتره دیگه کار اضافه ای نکنید و مستقیما به مرحله بعدی برید !

Terminal رو باز کنید و دستور cd /Users/your username/Desktop رو وارد کنید .

حالا این دستور رو وارد کنید :

dpkg-deb -b New

http://pic.i-phone.ir/files/d4549b36d1a5baa70f0f2a56b77494ff.png

خب حالا روی دسکتاپ باید یه فایل به اسم New.deb داشته باشید .

بعد از اینکار نوبت به ساختن فایل Release میرسه که اطلاعاتی راجع به repo شما به دیگران میده .

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


Origin: اسم repo ی شما
Label: اسمی که بالای repo ی شما نمایش داده میشه .
Suite: stable
Version: 1.0
Codename: stable
Architectures: darwin-arm
Components: main
Description: توضیحاتی راجع به repo ی شما .
حالا به اسم release سیو کنید .

http://pic.i-phone.ir/files/90d8b88a13c59435756c209fe72efa43.png

حالا یه فولدر به اسم مثلا cydiarepo بسازید و یک فولدر دیگه به اسم debs توش بسازید .

ترمینال رو باز کنید و این command رو وارد کنید :


dpkg-scanpackages -m . /dev/null -->Packages

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

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

Package: com.iphoneir.mcleaner
Version: 1.6.0
Architecture: iphoneos-arm
Maintainer: ooSin <[email protected]>
Name: MCleaner
Author: Yasin Jamali <[email protected]>
Filename: ./debs/6.deb

Size: 247272
Homepage: http://i-phone.ir/upload/cydia/Scree...ner/index.html (http://i-phone.ir/upload/cydia/Screenshot/Mcleaner/index.html)
Depends: mobilesubstrate , com.iphoneir.repo
Section: IR (Apps)
Priority: standard
Description: Mcleaner Full Version

همون طور که میبینید همه اطلاعات با اطلاعاتی که تو فایل control وارد کردید یکیه . فقط ۲ تا مورد جدید اضافه شده .

http://pic.i-phone.ir/files/89d1e23dc5ec5ed7fc4bac628d29a50e.png

Filename : باید مسیری که فایل deb رو قرار میدید رو بدید . برای مثال وارد کنید :

./debs/New.deb
size : منظور حجم فایل deb شماست . دقت کنید که باید دقیقا به بایت وارد کنید و ۱ بایت کم و زیاد باعث ارور میشه . برای گرفتن دقیق کافیه روی فایل deb راست کلیک کنید و get info رو بزنید و رقم رو به بایت وارد کنید .
فایل رو سیو کنید .
دوباره ترمینال رو باز کنید و دستور زیر رو وارد کنید .

gzip -f Packages
میبینید که روی دسکتاپ فایل Packages.gz درست شده .

خب حالا نوبت به جمع و جور کردن میرسه . شما الان باید این فایل هارو داشته باشید .
release , packages , packages.gz , New.deb .

فولدر cydiarepo رو که ساختید رو باز کنید و فایل New.deb رو درون فولدر debs قرار بدین و ۳ فایل دیگرو ( release , packages , packages.gz ) رو تو همون فولدر cydiarepo قرار بدین .

http://pic.i-phone.ir/files/f7119a278cec32b298f3d82667f3d0e9.png

خب تبریک میگم . اگه همه کار های بالارو درست انجام داده باشید شما یک repo ساختید ! کافیه فایل cydiarepo رو روی یک هاست آپلود کنید و مسیرش رو به cydia بدید .

البته این همه کار نیست . بزودی راجع به چگونگی Back Up گرفتن و ساختن فایل های postinst preinst ... ساختن آیکون برای repo و ... توضیح میدم .

خب حالا که طریقه درست کردن سورس رو یاد گرفتید چند تا نکته رو باید گوشزد کنم :
اولیش اینکه اگه میخواین چندین پکیج بسازید و تو فولدر debs قرار بدید مشکلی نیست فقط باید فایل packages که ساختید رو باز کنید و به ازای فایل های deb اطلاعاتتون رو با فاصله قرار بدید . به این صورت :

http://pic.i-phone.ir/files/ebc5370ac7f98a9cf13a1e27d51dd49e.png

مطلب بعدی اینه که خیلی دقت کنین موقعی که دارین فولدرتون رو به deb تبدیل میکنید قبلش با برنامه appleoff فایل های itunes_de رو پاک کرده باشین !

حالا راجع به back up گرفتن توضیح میدم . این مرحله خیلی حساسه و باید خوب دقت کنید چون یه اشتباه کوچیک به گوشیتون ( نرم افزاری ) آسیب میزنه و شاید مجبور به ریستور شید .

تو شاخه DEBIAN که تو فولدر مورد نظرتون ساختین کنار فایل control باید چند فایل txt دیگه بسازید . میتونین همون فایل control رو با txt باز کنید ولی آخرش Save As رو بزنید و به یه اسم دیگه سیو کنید .

به چه اسمی سیو کنم ؟

شما به دو تا فایل نیاز دارید . اسم یه فایل رو بزارید : postrm و اسم دیگری رو بزارید : preinst

همونطور که از اسمشون میتونین حدس بزنید preinst یعنی دستور های قبل ار نصب .و بعدی هم ( postrm ) دستور های بعد از پاک کردن

این دستور ها چی هستن ؟

یه سری دستور که من نفهمیدم از چه تابعی پیروی میکنن چون fn های جدیدی دیدم توشون ولی شبیه به c++ هستند !
به هر حال من براتون یه پیش فرض آماده کردم که میتونین با استفاده از اون حتی با نداشتن دانش برنامه نویسی رفع احتیاج کنید .

به دستور زیر که یک دستور preinst برای مثلا نصب یک برنامع تغییر فونت روی گوشی شماست دقت کنید :



#!/bin/bash

declare -a cydia
cydia=($CYDIA)

if [[ $1 == install || $1 == upgrade ]]; then
if [ -f /System/Library/Fonts/Cache/Helvetica.ttf.back ]; then
echo "Helvetica.ttf.back already present, skip BackUp."
else
cp /System/Library/Fonts/Cache/Helvetica.ttf /System/Library/Fonts/Cache/Helvetica.ttf.back
echo "Helvetica.ttf.back created."
fi
if [ -f /System/Library/Fonts/Cache/HelveticaBold.ttf.back ]; then
echo "HelveticaBold.ttf.back already present, skip BackUp."
else
cp /System/Library/Fonts/Cache/HelveticaBold.ttf /System/Library/Fonts/Cache/HelveticaBold.ttf.back
echo "HelveticaBold.ttf.back created."
fi
if [[ ${[email protected]} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
fi
#end script

خب اگه یکم برنامه نویسی کار کرده باشین خیلی راحت متوجه دستورات بالا میشین . به هر حال یه توضیحی هم میدم .
تا اونجایی که به دستور if میرسید رو نباید دستکاری کنید . ولی از if به بعد :

if [ -f /System/Library/Fonts/Cache/Helvetica.ttf.back ]; then
echo "Helvetica.ttf.back already present, skip BackUp."
else
cp /System/Library/Fonts/Cache/Helvetica.ttf /System/Library/Fonts/Cache/Helvetica.ttf.back
echo "Helvetica.ttf.back created."
fi

ببینید دستور بالا منظورش اینه که اگه فایل Helvetica.ttf.back تو مسیر نشون داده شده وجود داره اون موقع نیازی به back upگرفتن نیست و از این مرحله چشم پوشی کن و این نوشته رو نمایش بده ولی اگه وجود نداشت اون موقع فایل Helvetica.ttf رو به Helvetica.ttf.back تغییر بده . fi آخر هم به معنی end if هستش .

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

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

به تعداد فایل هایی که میخواید بک آپ بگیرید همینطور این دستور رو تکرار میکنید و آدرس فایل ها رو جابجا میکنین .

و اما تیکه آخر :


if [[ ${[email protected]} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
fi
#end script

finish:restart یعنی گوشی شما ریسپرینگ میشه .
اگه جاش reload بزارید اتفاقی نمیافته و return to cydia میده .
اگه reboot بزارید گوشی خاموش روشن میشه .

خب حالا نوبت به ساختن فایل دوم یعنی postrm میرسه که درواقع موقع remove کردن فایل بک آپ های گرفته شده رو restore میکنه .

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


#!/bin/bash

declare -a cydia
cydia=($CYDIA)

if [[ $1 == remove ]]; then

cp /System/Library/Fonts/Cache/Helvetica.ttf.back /System/Library/Fonts/Cache/Helvetica.ttf
cp /System/Library/Fonts/Cache/HelveticaBold.ttf.back /System/Library/Fonts/Cache/HelveticaBold.ttf
if [[ ${[email protected]} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
fi
#end script

همونطور که میبینین باز هم دستورات ساده . به این شکل که این بار میاد میگه اون فایل *.back رو به فایل سابق برگردون !
فقط به if و fi ها دقت کنید . اگه یه جا if و fi ها با هم نخونن ( کم و زیاد بزارید ) برنامتون مشکل پیدا میکنه .

حالا نوبت میرسه به گذاشتن آیکون برای برنامه هایی که روی سورستون release میکنین . ساده ترین کار !

یه فولدر بسازید روی دسکتاپ . اسمش رو بزارین مثلا oosin

حالا توی oosin دو تا فولدر دیگه بسازید به اسم های DEBIAN و Applications

http://pic.i-phone.ir/files/fb0e6911f7626ac18428382bceaa7087.png

تو DEBIAN یه فایل txt به اسم control بسازید و این مشخصات رو توش کپی کنید :


Package: com.iphoneir.repo
Version: 1.6
Priority: standard
Section: IR (Apps)
Maintainer: ooSin <[email protected]>
Architecture: iphoneos-arm
Name: Source Icons
Author: Yasin Jamali <[email protected]>
Description: Adds the icons for the iPhone.ir sources & sections

جاهایی که دوست دارین عوض کنین رو عوض کنین . ( با توجه به توضیحات پست اولم دیگه نیاز به ریز ریز توضیح دادن نمیبینم !

این فایل رو دانلود کنید : DOWNLOAD (http://rapidshare.com/files/221190664/Cydia.zip.html)

فایل رو باز کنید و cydia.app رو بریزید تو فولدر Applications . فایل cydia.app رو باز کنید و ۲ تا فولدر به اسم های Sections و Sources میبینید . آیکونی که تو بخش Sections میبینید درواقع آیکونیه که برای برنامه هاتون نمایش داده میشه . بسته به اینکه شما هر برنامه رو تو چه Sections ای گذاشته باشید . مثلا من تو Section ای به اسم IR قرار دادم بنابراین اسم آیکونم IR.png هست . IR رو به اسم section خودتون تغییر بدید .

و Sources هم اسمیه که برای سورس خودتون انتخاب میکنید تو قسمت Release . اون آیکون رو هم به اسمی که روی Repo خودتون قرار میدین تغییر بدید .

http://pic.i-phone.ir/files/b95164c2ae97214c55fe5887ab4bfc0a.png

خب تمومه دیگه . کافیه که همه چیو سیو کنید و فولدر oosin رو تبدیل به فایل deb کنین و مثل یک پکیج عادی بزارینش روی سورستون .

سوال : آقا اینطوری که الان شما گفتین که باید هر کسی بیاد پکیج فونت رو نصب کنه تا براش آیکون ها نمایش داده بشه . پس چطوری بقیه سورس ها بدون اینکه ما پکیج سورسشون رو نصب کنیم آیکونشون نمایش داده میشه ؟

جواب : خیلی سادست ! اگه خاطرتون باشه تو پست اول گفته بودم که یه گزینه به اسم dependency هست که میگرده و پکیج های مورد نیاز رو همراه برنامه نصب میکنه . خب شما هم کافیه اسم این پکیج رو ( مثلا تو مثال من com.iphoneir.repo ) رو به dependency

اگه به پست قبلی هم دقت کنید اولش که عکس فایل پکیج خودم رو گذاشتم میتونین نحوه گذاشتن dependency رو متوجه شید .

خب دیگه تموم شد . کل داستان ساختن سورس همین بود ! شما میتونین حالا یه سورس شخصی داشته باشید با برنامه های مفید . امیدوارم واضح توضیح داده باشم ولی هر جا براتون نا مفهوم بود بگید تا واضح تر بگم .

موفق باشید :9::9:

hadiasadi
15-10-2009, 23:10
این هم یه لینک از آموزش البته به زبان انگلیسی

How to Host a Cydia™ Repository (http://www.saurik.com/id/7)

محمد759
20-10-2009, 23:03
این مخصوص مک هست درسته؟
اگه بخواییم تو ویندور این کارو بکنیم فرق میکنه؟

I-Mehdi
21-10-2009, 00:30
بله فرق میکنه که خیلی آسون هم نیست.

محمد759
21-10-2009, 09:25
خوب میشه آموزش اونم بزارین؟

I-Mehdi
21-10-2009, 09:56
والا آموزشش در انحصار mamrezo عزیز هستش.
حداقل برای ICY

محمد759
24-10-2009, 14:54
خوب من در پیامی از ایشون خواهش کردم ولی جواب ندادن!!!
جای دیگه ایی نیست؟!

محمد759
27-07-2010, 17:05
من زمانی که دستور dpkg-dep رو در ترمینال میزنم ارور not found میده
تو help هم dpkg نیست