01 / 11 / 1400
Asia/Tehran 14:51

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

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

سیستم عامل اوبنتو یا ماشین مجازی(64 بیت)

یک کامپیوتر نسبتا قدرتمند

فایل boot.img استوک گوشیتون

فایل recovery.img استوک گوشیتون

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

 

CarlivImageKitchen-Linux_x64_v1.3

آماده سازی سیستم

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

sudo apt-get update

اگر از آخریم نسخه لینوکس12 استفاده می کنید برای نصب تمام منابع برای اندروید از کد  زیر استفاده کنید

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev libreadline6-dev libgl1-mesa-dri-lts-trusty:i386 libgl1-mesa-dev-lts-trusty g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lzop ccache gnupg python gcc g++ cpp

و کد زیر

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

بعد از آن این را هم نصب کنید

sudo apt-get install ia32-libs

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

sudo apt-get install bison g++-multilib git gperf libxml2-uti

بعد از آن

sudo apt-get install gnupg ccache lzop flex build-essential zip curl zlib1g-dev zlib1g-dev:i386 libc6-dev lib32bz2-1.0 lib32ncurses5-dev x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z1-dev libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown xsltproc libreadline6-dev lib32readline-gplv2-dev libncurses5-dev bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev lib32bz2-dev squashfs-tools pngcrush pngquant schedtool dpkg-dev

و کد زیر

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

اگر از چیپ MTK استفاده میکنید کد زیر را به کد بالایی اضافه کنید

SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev", OWNER="your_username"

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0c03", MODE="0666", GROUP="plugdev", OWNER="your_username"

بعد از آن SDK اندروید را دانلود و استخراج کنید

tar xzf $HOME/Downloads/android-sdk_rxx-linux.tgz

نام ورژن فایل که دانلود می کنید می باشدrxx

برای نصب جاوا ورژن 7

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.7.0_67/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.7.0_67/bin/javac" 1

یا کد زیر

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.6.0_45/bin/java" 2
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.6.0_45/bin/javac" 2

برای قرار دادن bashrc در مسیر نصب

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

یا کد زیر برای جاوا 7

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

و کد زیر برای جاوا 6 و چیپ MTK

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

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

sudo update-alternatives --config java
sudo update-alternatives --config javac

برای قرار دادن جاوا در مسیر خودتان

sudo gedit ~/.bashrc

و در آخر

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export PATH=$HOME/bin:$HOME/android-sdk/platform-tools/:$HOME/android-sdk/tools:$PATH

export USE_CCACHE

برای اطمینان از صحت نصب جاوا کد زیر را وارد کنید

java -version
which java
echo $JAVA_HOME

همگام سازی ساختار repo ریکاوری

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

[symple_button url=”http://www.gsm-developers.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%b2%da%af%d8%a7%d8%b1-%da%a9%d8%b1%d8%af%d9%86-device-tree-%d8%a8%d8%b1%d8%a7%db%8c-%da%a9%d8%a7%d9%85%d9%be%d8%a7%db%8c%d9%84-%d8%b1%d8%a7%d9%85-%d8%b3/” color=”black” button_target=”_self” btnrel=”nofollow”]آموزش سازگار کردن سورس سیانوژن برای کامپایل رام[/symple_button]

 

بعد آماده شدن سورس سیانوژن برای استفاده از سورس جدید مانند سیانوژن 14 باید تغییرات زیر را در جاوا بدهید فایل build/core/main.mk را باید ویرایش کنید به صورت زیر

java_version := $(shell java -version 2>&1 | head -n 1 | grep '^java .*[ "]1\.[67][\. "$$]')
ifneq ($(shell java -version 2>&1 | grep -i openjdk),)
java_version :=
endif
ifeq ($(strip $(java_version)),)
$(info ************************************************************)
$(info You are attempting to build with an unsupported version)
$(info of java.)
$(info $(space))
$(info Your version is: $(shell java -version 2>&1 | head -n 1).)
$(info The correct version is: Java SE 1.6 or 1.7.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html)
$(info ************************************************************)
endif

# ورژن جاوا خودتان را چک کنید
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.[67][\. "$$]')
ifeq ($(strip $(javac_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of javac.)
$(info $(space))
$(info Your version is: $(shell javac -version 2>&1 | head -n 1).)
$(info The correct version is: 1.6 or 1.7.)
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html)
$(info ************************************************************)
$(error stop)
endif

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

java_version_str := $(shell unset _JAVA_OPTIONS && java -version 2>&1)
javac_version_str := $(shell unset _JAVA_OPTIONS && javac -version 2>&1)

# Check for the correct version of java, should be 1.7 by
# default, and 1.6 if LEGACY_USE_JAVA6 is set.
ifeq ($(LEGACY_USE_JAVA6),)
required_version := "1.7.x"
required_javac_version := "1.7"
java_version := $(shell echo '$(java_version_str)' | grep '^java .*[ "]1\.7[\. "$$]')
javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.7[\. "$$]')
else # if LEGACY_USE_JAVA6
required_version := "1.6.x"
required_javac_version := "1.6"
java_version := $(shell echo '$(java_version_str)' | grep '^java .*[ "]1\.6[\. "$$]')
javac_version := $(shell echo '$(javac_version_str)' | grep '[ "]1\.6[\. "$$]')
endif # if LEGACY_USE_JAVA6

ifeq ($(strip $(java_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of java.)
$(info $(space))
$(info Your version is: $(java_version_str).)
$(info The required version is: $(required_version))
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)https://source.android.com/source/initializing.html)
$(info ************************************************************)
$(error stop)
endif

# Check for the current JDK.
#
# For Java 1.7, we require OpenJDK on linux and Oracle JDK on Mac OS.
# For Java 1.6, we require Oracle for all host OSes.
requires_openjdk := false
ifeq ($(LEGACY_USE_JAVA6),)
ifeq ($(HOST_OS), linux)
requires_openjdk := true
endif
endif

# Check for the current jdk
ifeq ($(requires_openjdk), true)
# The user asked for java7 openjdk, so check that the host
# java version is really openjdk
ifeq ($(shell echo '$(java_version_str)' | grep -i openjdk),)
$(info ************************************************************)
$(info You asked for an OpenJDK 7 build but your version is)
$(info $(java_version_str).)
$(info ************************************************************)
$(error stop)
endif # java version is not OpenJdk
else # if requires_openjdk
ifneq ($(shell echo '$(java_version_str)' | grep -i openjdk),)
$(info ************************************************************)
$(info You are attempting to build with an unsupported JDK.)
$(info $(space))
$(info You use OpenJDK but only Sun/Oracle JDK is supported.)
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html)
$(info ************************************************************)
$(error stop)
endif # java version is not Sun Oracle JDK
endif # if requires_openjdk

# Check for the correct version of javac
ifeq ($(strip $(javac_version)),)
$(info ************************************************************)
$(info You are attempting to build with the incorrect version)
$(info of javac.)
$(info $(space))
$(info Your version is: $(javac_version_str).)
$(info The required version is: $(required_javac_version))
$(info $(space))
$(info Please follow the machine setup instructions at)
$(info $(space)$(space)$(space)$(space)https://source.android.com/source/download.html)
$(info ************************************************************)
$(error stop)
endif

 

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

برای این کار از فایل mkvendor.sh استفاده می کنیم

اول از همه فایل recovery.img استوک خودتان را به پوشه رام بیس که اینجا ما از CM11 استفاده کردیم و نمونه گوشی موبایل ما Lenovo P780 می باشد انتقال دهید(فقط کافی شما نام موبایل و ورژن سیانوژن خودتان را در بین آموزشها تغییر دهید)

https-_drive-google

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

ro.product.manufacturer=LENOVO
ro.product.device=P780

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

./build/tools/device/mkvendor.sh lenovo P780 recovery.img

اگر با خطایی زیر رو به رو شدید

"unpackbootimg not found. Is your android build environment set up and have the host tools been built?"

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

build/envsetup.sh
make -j4 otatools

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

cp $HOME/CM11_folder/out/host/linux-x86/bin/unpackbootimg $HOME/bin

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

which unpackbootimg

https-_drive-google

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

cd CM11-0

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

build/tools/device/mkvendor.sh lenovo P780 recovery.img

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

https-_drive-google

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

https-_drive-google

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

unpack_MTK_img recovery.img

بعد برای ریپک

repack_img recovery

نام فایل را recovery بگذارید و آنرا به مسیر CM11 کپی کنید و در ترمینال تایپ کنید

725build/tools/device/mkvendor.sh lenovo P780 recovery.img7اکنون فایل  recovery.fstab باید اینگونه باشد
boot       		/boot       emmc      defaults        defaults
/dev/block/mmcblk0p2      /cache      ext4      defaults        defaults
پپ/dev/block/mmcblk0p3      /data       ext4      defaults        defaults
misc      				  /misc       emmc      defaults        defaults
recovery  				  /recovery   emmc      defaults        defaults
/dev/block/mmcblk0p4      /sdcard     vfat      defaults        defaults
/dev/block/mmcblk0p6      /system     ext4      defaults        defaults

تا اینجای کار فقط آغاز کارمان بود در بخش دوم بیشتر وارد اصل کار می شویم

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


439 نوشته
محسن هستم 30 ساله طرفدار دنیایی متنوع اندروید و کاستوم رامها در Gsm-Developers

بدون دیدگاه

پاسخ دهید

فیلدهای مورد نیاز با * علامت گذاری شده اند