آموزش ساخت ریکاوری CWMاز منبع(بخش اول)
آموزشهای درباره پورت ریکاوری براتون قبلا آماده کرده بودیم ولی امروز با آموزش کامل ساخت ریکاوری از کدهای منبع در خدمتتون هستیم تا دیگر مشکلات پورت را نداشته باشید با ما همراه باشید
موارد مورد نیاز
سیستم عامل اوبنتو یا ماشین مجازی(64 بیت)
یک کامپیوتر نسبتا قدرتمند
فایل boot.img استوک گوشیتون
فایل recovery.img استوک گوشیتون
ابزار آنپک و ریپک (که از لینک زیر می توانید دانلود کنید)
آماده سازی سیستم
برای شروع کد زیر را در ترمینال وارد کنید
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=”https://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 می باشد انتقال دهید(فقط کافی شما نام موبایل و ورژن سیانوژن خودتان را در بین آموزشها تغییر دهید)
به فایل 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
اکنون کد زیر را وارد کنید
cd CM11-0
کد زیر را وارد کنید تا شاخه های مرتبط با موبایلتان ساخته شود
build/tools/device/mkvendor.sh lenovo P780 recovery.img
بعد از اتمام کار می بینید که یک پوشه جدید در مسیر device به اسم گوشی ساخته می شود
این روش برای گوشیهای با چیپ MTK سازگار نمی باشد و با اشکال زیر مواجه می شوید
برای چیپهای 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
تا اینجای کار فقط آغاز کارمان بود در بخش دوم بیشتر وارد اصل کار می شویم
هرگونه کپی برداری بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد