راهنمای توسعه رام های اندروید از پایه تا پیشرفته(بخش پنجم و پایانی:نکته ها و توضیحات لازم)
آموزش بصورت کامل در بخشهای قبلی به پایان رسیده در این بخش سوالات و نکته های را می خواهیم با هم مرور کنیم که در طول کار ممکن با آنها برخورد کنید امیدوارم مفید باشند.
سوالات متداول
1- می توانیم از یک ورژن دیگر لینوکس استفاده بکنیم؟ بله شما آزاد هستید هر ورژن از سیستم عامل لینوکس را استفاده کنید ولی ممکن هست در بعضی از سیستمها دستورات بدرستی جواب ندهند.
2-باز هم این آموزش بروزرسانی می شود؟ در صورت نیاز ممکن هست آموزشها تغییر یا اضافه بشوند در آینده ولی آموزشها کامل بوده تا اینجا و فعلا نیازی به تغییرات نیست.
3-من در حین کار به مشکلی برخورد کردم و آن را حل کردم می توانم بزارم اینجا تا به آموزشها اضافه شود؟ بله بسیار هم خوب میتوانید همراه راه حل برای ما بزارید تا در آموزشها قرار داده شود تا تمام دوستان استفاده کنند.
4-می توان از سیستم عامل 32 بیتی لیتوکس استفاده کرد؟ خیر شما فقط باید از نسخه 64 بیتی برای توسعه رام استفاده کنید.
5- میتوان از سورس دستگاه دیگری که کاملا شبیه به دستگاه ما هست استفاده کرد؟ خیر نمیشود شما با فقط از سورس خود دستگاهتان استفاده کنید و اگر نبود خودتان آن را آماده کنید یا منتظر بمانید یک توسعه دهنده آن را آماده کند.
6-آیا سورس دستگاها مختص و خاص همان دستگاه است فقط؟ بله هر سورس مختص فقط همان دستگاه هست و شما اگر بخواهید تغییراتی را در آن بوجود بیارید نیاز به تغییرات زیاد در ورژن اندروید و امنیت دارید.
7- در موقع کامپایل به مشکل جاوا برخورد کرده ام؟ برای رفع این مشکل باید ار ورژن مخصوص جاوا استفاده کنید برای اندروید 4 جاوا 1.6 و اندروید 5 جاوا 1.7
برخی از اشتباهات و راه حل آنها
1- gr_text
در خط 36 عبارت minui.h را پیدا کنید و طبق فایل recovery/graphics.c که درون device tree می باشد آنها را یکی کنید.
2-hardware ril
بخاطر زمانی اتفاق می افتد که در hardware/samsung چند فایل کم باشد.برای حل این مشکل کد زیر را در ترمینال وارد کنید.
cd hardware && git clone https://github.com/SlimRoms/hardware_samsung.git -b kk4.4 && mv hardware_samsung samsung
بجای عبارت اسلیم رام می توانبد نام رام خود را بزارید.
3-hwc_blit
در واقع ارزش مقدار HWC_BLIT عدد 4 می باشد برای دادن این مقدار به مسیر /hardware/hwcomposer_defs.h در device tree بروید شما می توانید مقداردهی اولیه فایل HWC_BLIT را 4 بگذارید.
4-ورژن جاوا
از اندروید 2 تا 4 نیاز به جاوا ورژن 1.6 دارید
ار اندروید 5 نیاز به جاوا 1.7 دارید
برای نصب جاوا 1.6 فایل بین را از این لینک دانلود کنید
برای پاک کردن ورژن نصب شده از کد زیر استفاده کنید.
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
برای نصب
sudo mkdir -p /opt/java/64/ sudo cp jdk-6u45-linux-x64.bin /opt/java/64 sudo su - cd /opt/java/64 chmod +x jdk-6u45-linux-x64.bin ./jdk-6u45-linux-x64.bin exit
قرار دادن مسیر جاوا در .bashrc
gksudo gedit ~/.bashrc
این خط را به .bashrc اضافه کنید
# Java PATHs export JAVA_HOME=/opt/java/64/jdk1.6.0_45 export PATH=$PATH:$JAVA_HOME/bin
نصب jre
sudo apt-get install openjdk-6-jre-headless
خطاهایی که ممکن است موقع ساخت رام صورت بگیرند
خطایی اول: build/envsetup.sh خط 1365 schedtool یافت نشد.
این کد را وارد sudo apt-get install schedtool و از اول شروع به ساخت بکنید.
خطایی دوم: /bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: cannot execute binary file
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: cannot execute binary file
اگر با این مورد از خطاها برخورد کردید احتمالا سیستم شما 32 بیت هست برای اطمینان کد این کد را تایپ کنید uname -m اگر i686 دید سیستم شما 32 بیت می باشد اگر x86_64 سیستم 64 بیت می باشد. اگر 32 بیت بود از اول باید شروع کنید.
خطایی سوم:اگر خطایی 127 bison را مشاهده کردید دستورات زیر را در ترمینال وارد کنید.
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-6-jdk openjdk-6-jre phablet-tools pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev
sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
نکات
1- ساین یک رام جدید در سورس
گاهی شاید بخواهید یک رام دیگر هم بسازید و شما در کنار سورس cm هم می خواهیم سورس AOGP را هم داشته باشید در نظر میگیریم که شما سورس سیانوژن را در ~/roms/cm11 ساین کرده باشید و الان می خواهید سورس AOGP را در مسیر ~/roms/aogp ساین کنید.کدهای زیر را وارد کنید.
mkdir roms/aogp &&cd roms/aogp
repo init --reference=~/roms/cm11 -u git://github.com/AOGP/android.git -b cm-11.0
نسبت به اول وقت بسیار کمتری میگیرد این کار و نیازی نیست کامل از اول انجام بشه.
2-استفاده از CCACHE به جایی ابزار کامپایلر کش
این کامپایلر به نسبت سریعتر عمل میکند برای فعال کردن از nano editor استفاده میکنیم.
ترمینال را باز میکنیم.(cntrl + alt + t)
nano .bashrc
export USE_CCACHE=1
بعد از یکبار ریستارت سیستم تغییرات اعمال می شوند. یک فولدر هم در روت به نام out ایجاد می شود برای تغییر مکان به مکان ذخیره سازی سیستم خود از کد زیر استفاده کنید.
export OUT_DIR_COMMON_BASE= /<path_of_your_choice>/.ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G
سایز کش می تواند بین 50 تا 100G باشد.
3- ویرایش فایل local_manifest.xml
در خیلی از دستگاهای کدهای زیادی وجود دارد در local_manifest.xml که نیازی به آنها نداریم یا کدهای نیاز داریم که وجود ندارند.
برای اضافه کردن پروژه جدید به local_manifest.xml از کد زیر استفاده کنید.
<?xml version="1.0" encoding="UTF-8"?> <manifest> <project path=" directory in work tree" name="name of the repository in remote" remote="name of remote defined earlier" revision="branch of the repository" /> </manifest>
برداشتن موراد غیر قابل نیاز از manifest.xml
<project path="prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6" name="platform/prebuilts/gcc/darwin-x86/arm/arm-eabi-4.6" groups="pdk,darwin,arm" /> <project path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6" groups="pdk,darwin,arm" /> <project path="prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.6" name="platform/prebuilts/gcc/darwin-x86/mips/mipsel-linux-android-4.6" groups="pdk,darwin,mips" /> <project path="prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.6" name="platform/prebuilts/gcc/darwin-x86/x86/i686-linux-android-4.6" groups="pdk,darwin,x86" />
قبل از برداشتن به خط زیر دقت کنید
بعد از برداشتن کدها
ملاحظه کردید که تعداد پروژها از عدد 462 به 444 کاهش یافت.
برداشتن تمام دیوایسهای رسمی که شما نیازی به آنها ندارید.
دیوایسهای زیادی هستن که توسط توسعه دهنده رام ساپورت می شوند و در شاخه Default.xml قرار داده شده اند که شما نیازی به آنها ندارید.
معمولا به شکل زیر هستند نامشان
android_device_companyname_codename
برای نمونه
android_device_samsung_codename
که با پیدا کردن آنها تمام سورس کرنل آنها را می توانید پاک کنید و در مصرف وقت و اینترنت خود صرفه جویی کنید.