نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

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

اندروید - رایگان سیستم عامل، مبتنی بر لینوکس با رابط برنامه نویسی جاوا.

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

نصب اندروید استودیو

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

درک این نکته مهم است که خود برنامه به زبان جاوا (و اکنون نیز در Kotlin) نوشته شده است، و محیط توسعه متناسب با سلیقه شما انتخاب شده است. روی چه کاری می توان انجام داد اندروید استودیو(یا در برادر بزرگتر آن IntelliJ IDEA)، را می توان در Eclipse و در ویرایشگرهای دیگر انجام داد. اگرچه از سال 2016 پشتیبانی رسمیکسوف متوقف شده است.

بسته نصبی استودیو را می توانید از صفحه https://developer.android.com/studio/index.html دانلود کنید.

خود نصب نباید مشکلی ایجاد کند. بسته نصبشامل می شود حداقل مورد نیاز. گاهی لازم است بدوید Android SDKمدیریت کنید و نسخه های جدید SDK را از طریق منو بررسی کنید ابزار | اندروید | مدیر SDK:

با گذشت زمان، خودتان متوجه خواهید شد که چه چیزی را باید نصب کنید و چه چیزی لازم نیست. در ابتدا با شرایطی که مدیر به طور پیش فرض به شما پیشنهاد می کند موافقت کنید.

کاربری از بلغارستان نوشت که Win64 هنگام نصب یا به روز رسانی به حقوق مدیر نیاز دارد. یادت باشه. من دارم سیستم تمیزچیزی نپرسید

در نسخه استودیویی 2.3 (شاید قبل از آن) بسته OpenJDK نصب شده است که جایگزینی برای JDK از Oracle است. نکته ای در تنظیمات استودیو وجود دارد که OpenJDK گزینه پیشنهادی است، اگرچه می توانید مسیر JDK استاندارد را مشخص کنید. در هر صورت، مهم نیست که کدام گزینه را انتخاب کنید، جاوا 8 خواهید داشت.

ایجاد شبیه ساز

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

اکنون، در زمان نصب، استودیو یک دستگاه برای شبیه ساز ایجاد می کند. اگر اینطور نیست، همیشه می توانید به صورت دستی نصب کنید. شما همچنین می توانید دستگاه های دیگر را در زیر اضافه کنید نسخه های مختلفاندروید، وضوح صفحه نمایش و غیره

برای ایجاد شبیه ساز تلفن، از منو انتخاب کنید ابزار | اندروید | مدیر AVD. هنگامی که آن را برای اولین بار راه اندازی می کنید، یک کادر محاوره ای جادوگر ظاهر می شود.

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

هر نام دوستانه ای را وارد کنید، به عنوان مثال، Android4. انتخاب کنید نسخه مورد نیازاندروید، اندازه صفحه نمایش و غیره

در صورت لزوم، می توانید برای هر نسخه سیستم عامل شبیه ساز ایجاد کنید و عملکرد برنامه را بررسی کنید. تنظیمات باقی مانده را می توان بدون تغییر رها کرد. همیشه می توانید به تنظیمات برگردید و دوباره ویرایش کنید. اغلب توصیه می شود از گزینه استفاده کنید از Host GPU استفاده کنیدبرای استفاده از فرصت ها پردازنده گرافیکی. این باعث افزایش سرعت شبیه ساز می شود. دکمه را فشار دهید خوب.

شبیه سازهای اضافه شده در مدیر شبیه ساز ذخیره خواهند شد.

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

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

اگر هنوز در این دام افتادید، پس من پیوندی برای تغییر پوشه کاربر به انگلیسی می دهم: http://www.cherneenet.ru/lokalnaj_zapis.html (با تشکر از خواننده Evgeny Stepanov برای راهنمایی). همچنین می توانید فایل ini را ویرایش کرده و مسیر آن را مشخص کنید دستگاه مجازیبه گونه ای که هیچ حروف روسی در طول مسیر وجود نداشته باشد (بر این اساس، خود فایل *.avd نیز باید به مکان دیگری منتقل شود).

بسته به قدرت رایانه شما، ممکن است لازم باشد ابتدا کمی صبر کنید تا شبیه ساز بارگیری شود. شبیه ساز اینتل بسیار سریعتر بارگذاری می شود. همچنین می توانید استفاده کنید گوشی واقعی. من معمولا استفاده میکنم گوشی قدیمیو یک شبیه ساز برای نسخه های جدید اندروید.

تست روی دستگاه واقعی

توصیه می شود نسخه نهایی برنامه را روی یک دستگاه واقعی آزمایش کنید. با شروع اندروید 4.4، باید حالت توسعه دهنده را در دستگاه خود فعال کنید (تبلت، تلفن، ساعت). برای انجام این کار، به تنظیمات بروید، صفحه «درباره تلفن» را باز کنید و هفت بار روی خط دارای شماره ساخت کلیک کنید. شماره ساخت. پس از این، در تنظیمات ظاهر می شود گزینه جدید برای توسعه دهندگانیا چیزی شبیه به آن اگر سازنده از پوسته خود استفاده کند.

هنگامی که صفحه توسعه دهنده را باز کردید، باید اشکال زدایی USB را فعال کنید. من همچنین گزینه را اضافه می کنم صفحه نمایش را خاموش نکنید. برخی از دستگاه ها نیاز به نصب درایور جداگانه دارند؛ اطلاعات را در وب سایت سازنده جستجو کنید.

کار در حالت ترمینال

Studio همچنین به شما اجازه می دهد تا دستورات خط فرمان را در آن اجرا کنید پنجره جداگانه. برای راحتی، باید کمی سیستم را برای خود شخصی سازی کنید.

من یک نسخه غیر محلی از ویندوز نصب کرده ام، بنابراین برخی از نکات به زبان انگلیسی ارائه می شود.

برای ویندوز 7/8 باز کنید کنترل پنل | سیستم، دکمه را فشار دهید سیستم پیشرفتهتنظیمات. در پنجره جدید روی دکمه کلیک کنید متغیرهای محیطی.

متغیر را پیدا کنید مسیردر لیست متغیرهای سیستم

روی دکمه کلیک کنید ویرایش کنیدبرای ویرایش یک متغیر یک نقطه ویرگول در انتهای خط اضافه کنید و سپس مسیرهای پوشه را مشخص کنید پلت فرم-ابزارو ابزار، که در SDK گنجانده شده اند. در مورد من اینطور شد:

;D:\Android\SDK\platform-tools;D:\Android\SDK\tools

تمام پنجره ها را ببندید (بهتر است راه اندازی مجدد شود). بررسی کنید که آیا همه چیز به درستی کار می کند. اجرا کن خط فرمانو دستور را وارد کنید:

اکو %مسیر%

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

برای بررسی زیر دستور را وارد کنید:

لیستی از پارامترهای فرمان ظاهر می شود.

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

پنجره SDK Manager باز خواهد شد.

اگر اشتباه نوشتید، دستورات شناسایی نمی‌شوند و باید خطای نوشتن مسیر را اصلاح کنید.

حالا بیایید این عملیات را در خود استودیو انجام دهیم. استودیو را راه اندازی کنید و پروژه را باز کنید (درس بعدی را ببینید). یک تب در پایین نوار وضعیت وجود دارد. به آن سوئیچ کنید. در پنجره ترمینال، یکی از دو دستور قبلی را وارد کنید.

مستندات

آخرین اسناد را همیشه می توانید در developer.android.com پیدا کنید. اگر با اینترنت مشکل دارید، در زیر پوشه /docsدر پوشه شما اندروید نصب شده SDK، می‌توانید کپی محلی آن را پیدا کنید (اگر از نصب آن امتناع ورزدید).

نصب گربه

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

مقدمات توسعه کامل شده است. اکنون مرحله بعدی ایجاد اولین برنامه است.

بنشینید و کمربندهای ایمنی خود را ببندید - سفری هیجان انگیز به دنیای توسعه اپلیکیشن اندروید در انتظار ما است.

وقتی شروع به تسلط بر توسعه برای هر پلتفرمی می کنید، مطمئناً بلافاصله با مشکلات زیادی روبرو می شوید که در نگاه اول نامرئی هستند. بسیاری از آنها به خود فرآیند کدگذاری مرتبط خواهند بود: ناهماهنگی در API، توابع پنهان، محدودیت ها، سبک برنامه نویسی خاص برای پلتفرم. همچنین سنگ هایی وجود دارند که کمی دورتر قرار دارند: آزمایش و بهینه سازی خودکار، ایجاد کلیپ و نمادها، دریافت گزارش های تصادف خودکار. توسعه‌دهندگان بی‌تجربه اندروید در معرض خطر بریدن هر دو پای خود هستند.

در این مقاله به مسائل مربوط به توسعه اندروید در زمینه ابزارها و ابزارها خواهیم پرداخت. ما از نیاز به اتصال تلفن هوشمند با استفاده از کابل در هنگام آزمایش و اشکال زدایی روی دستگاه خلاص خواهیم شد، ما برنامه را به تقسیم می کنیم نسخه های Liteو Pro، ما مکانیزمی را در آن ایجاد خواهیم کرد تولید خودکارو با ارسال گزارش های خرابی به سرور، تست را خودکار، کدها را مبهم و بهینه می کنیم و در عرض چند دقیقه یک آیکون و تمام منابع لازم برای برنامه ایجاد می کنیم. برو

1. شبیه ساز کند

بنابراین، شما اولین برنامه خود را ترسیم کرده اید، و زمان آن رسیده است که آن را راه اندازی کنید و عملکرد آن را آزمایش کنید. برای این منظور، Android SDK شامل یک شبیه ساز است. برای مدت طولانی او به دلیل کند بودن مورد سرزنش قرار می گرفت، اما با انتشار Android Studio 2.0 وضعیت به طور قابل توجهی بهبود یافته است - نسخه x86 شبیه ساز شتاب سخت افزاری دریافت کرد، بنابراین اکنون سریعتر از دستگاه های واقعی کار می کند. علاوه بر این، او در حال حاضر یک راحت است رابط کاربری گرافیکی، که با آن می توانید تماس، پیامک، تغییر را شبیه سازی کنید داده های GPSو خرابی شبکه، یعنی همه چیزهایی که قبلاً مجبور بودید از ابزارهای خط فرمان استفاده کنید.

بنابراین، اگر هنوز ارتقاء نداده‌اید، به شدت توصیه می‌کنم این کار را انجام دهید، بدون اینکه از Eclipse استفاده کنید. و حتما نسخه x86 شبیه ساز را در AVD manager انتخاب کنید؛ نسخه ARM از شتاب سخت افزاری پشتیبانی نمی کند.

2. گوشی هوشمند روی بند

مرحله دوم تست برای دستگاه واقعی. همه چیز در اینجا ساده است: شما تلفن هوشمند خود را از طریق USB وصل می کنید، درایورها را نصب می کنید، حالت اشکال زدایی را در تنظیمات توسعه دهنده فعال می کنید، پس از آن دستگاه در لیست برنامه های موجود برای نصب (در کنار شبیه ساز) ظاهر می شود. تنها مشکل این است که در در این مورددستگاه باید با استفاده از کابل به رایانه شخصی متصل شود و اگر این تلفن هوشمند اصلی شما است که تماس ها و پیام ها را دریافت می کند، دیگر نیازی به صحبت در مورد راحتی نیست.

خوشبختانه اندروید استودیو (یا بهتر است بگوییم، ابزار ADB، که از آن برای برقراری ارتباط با دستگاه استفاده می کند) از شبکه پشتیبانی می کند. ولی این تابعهنوز باید فعال شود اگر یک گوشی هوشمند روت شده دارید، پس خوش شانس هستید: می توانید اشکال زدایی شبکه را با استفاده از برنامه WiFi ADB فعال کنید. ترتیب دهی:

  1. WiFi ADB را نصب کنید، آن را راه اندازی کنید، حالت شبکه را با استفاده از سوئیچ فعال کنید و آدرس IP را به خاطر بسپارید.
  2. اندروید استودیو را راه اندازی کنید.
  3. کنسول را باز کنید، به دایرکتوری با SDK نصب شده بروید، سپس به platform-tools بروید و دستور زیر را اجرا کنید:

    آدرس IP اتصال $ adb

حال اگر بخواهید اپلیکیشن را بسازید و راه اندازی کنید، گوشی هوشمند خود را نیز در لیست دستگاه ها خواهید دید. کسانی که روت نیستند می توانند ADB را مجددا راه اندازی کنند حالت شبکه، پس از اتصال با کابل. این کار به این صورت انجام می شود:

  1. ما گوشی هوشمند را وصل می کنیم و درایورها را نصب می کنیم.
  2. حالت اشکال زدایی را در تنظیمات توسعه دهنده فعال کنید.
  3. کنسول را باز کنید، به دایرکتوری SDK/platform-tools بروید و دستور زیر را اجرا کنید:

    adb tcpip 5555 دلار

  4. اتصال به گوشی هوشمند از طریق شبکه:

    آدرس IP اتصال $ adb

آدرس IP را می توان از طریق تنظیمات پیدا کرد: "درباره تلفن (درباره رایانه لوحی) → اطلاعات کلی"، مورد "آدرس IP".

3. کتابخانه ها

خوب، به نظر می رسد هک شما که در نیم ساعت با هم انجام دادید کار می کند و زمان آن رسیده است که آن را به یک برنامه واقعی با رابط کاربری زیبا و ابزارک برای دسکتاپ خود تبدیل کنید. در این مرحله، احتمالاً به کتابخانه های خارجی نیاز خواهید داشت که مفاهیم رابط مختلف، الگوهای برنامه نویسی و ارتباط با سرویس های خارجی را پیاده سازی کنند. و اگر همه چیز با دومی روشن است (شما به یک SDK برای Dropbox نیاز دارید - پورتال را برای توسعه دهندگان باز می کنید و دستورالعمل ها را دنبال می کنید) ، با بقیه کار در حال حاضر دشوارتر است. کجا باید آنها را جستجو کرد و کدام کتابخانه ها بهتر هستند؟

جامع ترین کاتالوگ کتابخانه اندروید آرسنال است. در آنجا تقریباً هر چیزی را که نیاز دارید پیدا خواهید کرد. در دسترس جستجوی راحتو مرتب سازی بر اساس رتبه بندی، برای هر کتابخانه دستورالعمل هایی در مورد نحوه اتصال آن به پروژه وجود دارد، از جمله استفاده از استاندارد برای سیستم های اندروید Gradle builds: فقط مخزن را به فایل build.gradle پروژه اضافه کنید و کتابخانه را در لیست وابستگی ها مشخص کنید.


در این صفحه می‌توانید فهرست عالی از کتابخانه‌های ضروری را پیدا کنید. از طرف خودم اضافه می کنم که در مراحل اول باید بلافاصله مطالعه کنید خنجر 2, RxJavaو مقاوم سازی. با تبدیل شدن به یک توسعه‌دهنده پیشرفته، به هر طریقی از این کتابخانه‌ها استفاده خواهید کرد.

4. آیکون ها و کلیپ

سرانجام، پس از روزها یا هفته ها، شروع به دیدن می کنید برنامه کامل. اما هنوز هیچ ماده گرافیکی وجود ندارد: نماد استاندارد است، به شکل یک ربات سبز، به جای کلیپ‌پارت مکان‌هایی وجود دارد. بدیهی است که بدون گرافیک هیچ فایده ای برای رفتن به بازار وجود ندارد، اما پرداخت برای یک نماد برای اولین برنامه شما نیز احمقانه است. چه باید کرد؟

در واقع، آیکون را می توان تولید کرد. یک وب سرویس فوق العاده اندروید Asset Studio وجود دارد که با آن فقط در چند دقیقه یک نماد زیبا در تمام وضوح های ممکن دریافت خواهید کرد. به عنوان پایه، می توانید عکسی را که آماده کرده اید بگیرید، به سادگی متن بنویسید، یا بهتر از همه، از کلیپ ارائه شده توسط سرویس انتخاب کنید. همچنین می توانید سبک نماد (گرد، مربع و غیره) را تنظیم کنید. سبک iOS...)، رنگ، تنظیم سایه ها و سایر پارامترها. در نتیجه، بایگانی ic_launcher.zip را در اختیار خواهید داشت که باید در فهرست راهنمای AndroidstudioProjects/APP_NAME/app/src/main/res مستقر شود. مطمئن شوید که با کلیک بر روی دکمه "Generate web icon" یک نماد وب ایجاد کنید. شما به آن نیاز خواهید داشت.


همین سرویس به شما امکان می دهد آیکون هایی برای ActionBar و نوار وضعیت ایجاد کنید. اصل تقریباً یکسان است ، فقط می گویم که نمادهایی با فرورفتگی 15٪ از لبه ها در نوار وضعیت بهترین به نظر می رسند.

علاوه بر این، به تصویر به اصطلاح Feature Image نیاز دارید. این تصویر خاص، که بازار بازیو سایر فروشگاه های برنامه به عنوان نوار در بالای صفحه استفاده می شوند (زمانی که صفحه برنامه را در تلفن هوشمند باز می کنید). می توان آن را با استفاده از سرویس دیگری تولید کرد. برای گرفتن اسکرین شات، می توانید از سرویس رسمی گوگل استفاده کنید. این یک قاب گوشی هوشمند در اطراف اسکرین شات ایجاد می کند.

5. گزارش های خرابی

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

نه، ما به یک سیستم گزارش خرابی نیاز داریم. تعداد زیادی از آنها وجود دارد و همه آنها یک اصل کار را اجرا می کنند: اتصال به برنامه کتابخانه کوچککه در لحظه سقوط، stack trace و سایر داده های مربوط به سقوط را ثبت می کند و به سرور ارسال می کند و سپس یک رابط وب ویژه بر اساس آنها گزارش های زیبا و بصری تولید می کند.

یکی از محبوب ترین چنین سیستم هایی Fabric است، اما من توصیه می کنم به Splunk MINT نگاه کنید: رایگان، ساده و به راحتی در برنامه ادغام می شود (فقط یک خط کد اضافه کنید). برای شروع استفاده از آن، باید SDK را به پروژه متصل کنید؛ این کار را می توان با استفاده از همان Gradle انجام داد. فایل build.gradle را باز کنید (آنی که برای برنامه کاربردی است نه کل پروژه) و خطوط زیر را اضافه کنید:

مخازن (maven ( url "https://mint.splunk.com/gradle/")) وابستگی ها (کامپایل "com.splunk.mint:mint:5.0.0")


پس از این، Splunk MINT خط کدی را که باید در کد درج شود به شما نشان می دهد:

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

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

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

چند وقت پیش رسمی IDE برای اندروید Eclipse (به عنوان استاندارد واقعی جاوا) با افزونه ADT وجود داشت. مدتی بعد، JetBrains IDE شروع به محبوبیت در بین برنامه نویسان جاوا کرد، سپس یک افزونه برای توسعه اندروید برای آن ظاهر شد و مردم به آرامی از Eclipse به آن روی آوردند.

کمی بعد، گوگل اعلام می کند که Android Studio بر اساس IDEA چه کاری انجام خواهد داد. و حالا دومی در راه است نسخه اندرویداستودیو، و Eclipse فقط به عنوان یک رویای بد به یاد می‌آید :)

اندروید استودیو- محیط توسعه رسمی برای اندروید. در اصل اندروید استودیو جاوا معروف است IDE IntelliJ IDEA با افزونه ها.

بر این لحظههنگام انتخاب Android IDE گزینه های زیر وجود دارد:

  1. کسوف. محبوب ترین IDE چند وقت پیش برای جاوا، اکنون از آن برای توسعه اندروید استفاده کنید به شدت توصیه نمی شود.
  2. ایده IntelliJ. IDE عالی، مناسب برای اندروید.
  3. اندروید استودیو. بهترین IDE برای اندروید. در چیزهای کوچک با IDEA تفاوت دارد، اما این چیزهای کوچک بسیار بسیار دلپذیر هستند و کار ما را بسیار آسان می کنند :) اینجاست که ما تمرکز می کنیم.

اول از همه، باید مطمئن شوید که JDK را نصب کرده اید ( توسعه جاواکیت). این یک جزء ضروری برای توسعه در جاوا است و از آنجایی که توسعه برای اندروید در جاوا انجام می شود، برای توسعه اندروید نیز لازم است.

دوما، کادرهای «نمایش شماره خطوط» و «نمایش جداکننده‌های روش» را علامت بزنید:

اولی شماره خطوط را در سمت چپ متن نمایش می دهد، دومی جداکننده های بین متدها را در کد ترسیم می کند.

این دو گزینه فوق العاده مهم هستند، به خصوص برای مبتدیان، و من نمی فهمم چرا به طور پیش فرض غیرفعال هستند.

سوم، تکمیل خودکار را پیکربندی کنید. برای انجام این کار، "هیچ" را در "تکمیل حساس به حروف کوچک" انتخاب کنید:

بگذارید توضیح دهم که چرا اینطور است. گزینه پیش‌فرض به این معنی است که تکمیل خودکار تنها در صورتی کار می‌کند که حرف اول در حروف درست تایپ شده باشد. بدون توجه به اینکه در چه صورت شروع به تایپ کد کنید، گزینه None باعث تکمیل خودکار می شود.

معنای استاندارد این گزینه، مانند دو مورد قبلی، من را متحیر می کند.

ایجاد اولین پروژه

خوب، ما راه اندازی و نصب اندروید استودیو را مرتب کردیم، زمان آن رسیده است که اولین پروژه خود را ایجاد کنیم.

در پنجره اصلی اندروید استودیو، روی « یک پروژه اندروید استودیو جدید را شروع کنید«:

یک پنجره جدید ظاهر می شود که در آن باید چندین عمل را انجام دهیم.

در مرحله اول، باید نام برنامه، دامنه شرکت (نام بسته از این دو پارامتر ایجاد می شود) و مکان پروژه روی دیسک را مشخص کنید:

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

در مرحله بعد Android Studio از ما می پرسد که از کدام نسخه و کدام نسخه از SDK می خواهیم استفاده کنیم. در حال حاضر، SDK "تلفن و تبلت" برای ما کافی است؛ نسخه API را به جای 15 توصیه شده روی 16 تنظیم کنید، زیرا API 15 دیگر مرتبط نیست و اصلاً گسترده نیست:

در صفحه بعدی از ما سؤال می شود که کدام مؤلفه های برنامه را می خواهیم ایجاد کنیم. "فعالیت خالی" را انتخاب کنید:

بر گام بعدیفقط بدون تغییر چیزی روی "پایان" کلیک کنید.

پس از اتمام این فرآیند، در نهایت اولین پروژه خود را خواهید دید:

در حال حاضر کاملاً کاربردی است، اما برای اجرای آن، به یک شبیه ساز اندروید نیاز داریم.

ساخت شبیه ساز اندروید

برای ایجاد شبیه ساز اندرویدما نیاز خواهیم داشت Android AVD Manager(AVD = اندروید دستگاه مجازی). نگران نباشید، نیازی به نصب چیز دیگری نخواهید داشت. فقط روی این دکمه کلیک کنید:

سپس روی این دکمه:

و سپس کافی است چندین بار روی "بعدی" و در نهایت "پایان" کلیک کنید.

راه اندازی Hello World

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

روی این دکمه (یا Shift-F10) کلیک کنید:

پس از این، یک گفتگو خواهید دید که در آن از شما خواسته می شود دستگاهی را انتخاب کنید که IDE باید برنامه مونتاژ شده را روی آن اجرا کند:

کادر مشخص شده با فلش را علامت بزنید و روی OK کلیک کنید. پروژه شروع به ساخت می کند، شبیه ساز شروع می شود، برنامه روی شبیه ساز نصب می شود و برنامه شروع می شود.

این کار مدتی طول می کشد (هرچه رایانه شما قدرتمندتر باشد، زمان کمتری طول می کشد)، زیرا با وجود پیشرفت های بسیار زیاد در چند سال اخیر، شبیه ساز بسیار کند است.

و حالا بعد از 1-10 دقیقه (بعد از شروع شبیه ساز، پروژه ها البته سریعتر مونتاژ و راه اندازی می شوند)، در نهایت Hello World خود را در صفحه شبیه ساز خواهید دید!

این همه است و در درس بعدی به آن خواهیم پرداخت.

درس های جدید هر روز اضافه می شود! برای اطمینان از اینکه چیزی را از دست ندهید، در ما مشترک شوید

برای نوشتن برنامه های کاربردی برای سیستم عامل اندروید، باید محیط توسعه اندروید استودیو (از این پس AS نامیده می شود) را نصب کنید. ممکن است بپرسید چرا AS و نه Eclipse؟ چهار شنبه توسعه ماه گرفتگیبسیار سریعتر کار می کند و وزن کمتری نسبت به اندروید استودیو دارد،

اما گوگل استفاده از AS را "توصیه می کند"، زیرا در آینده دیگر (یا بهتر بگوییم قبلا) پشتیبانی از آن را متوقف نخواهد کرد. اندروید استودیو آینده است. شما باید به اندازه کافی داشته باشید کامپیوتر قدرتمند، ترجیحاً x64 بیت، زیرا AS از حدود 3 گیگابایت استفاده می کند حافظه دسترسی تصادفی 3 گیگابایت دیگر برای شبیه ساز دستگاه اندروید اینجا اضافه کنید... کامپیوتر من win 8.1 pro x64 دو هسته ای نصب شده است. پردازنده اینتل 3.3 گیگاهرتز، با 8 گیگابایت رم، و من کاملاً آزاد هستم ...

از طریق پیوند https://developer.android.com/studio به وب سایت رسمی بروید، دانلود کنید آخرین نسخهعمق بیت مورد نیاز برای امروز نسخه فعلی android-studio-2-1-2،

وزن آن تقریباً 1.2 گیگابایت خواهد بود. پس اگر اینترنت کندی دارید صبور باشید.

پس از دانلود، نصب کننده android-studio-2-1-2.exe را اجرا کنید،

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

مجوز را بپذیرید

انتخاب محل نصب،

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

پس از آن راه اندازی خواهیم کرد اندروید استودیو از دسکتاپ یا از منو،

و روی دکمه Configure کلیک کنید تا SDK پیکربندی شود. لیستی مشاهده خواهید کرد نسخه های نصب شدهاندروید،

که می توانید برای آنها برنامه هایی ایجاد کنید، ترجیحاً همه آنها. اگر برخی از نسخه ها نصب نشده اند، روی لینک کلیک کنید Standalone SDK Manager را راه اندازی کنید برای نصب و به روز رسانی بسته ها.

مدیر SDK باز می شود،

کادرهای ضروری را علامت بزنید، چگونه بفهمیم کدام یک؟ مدیر SDK با یادداشت به شما در این امر کمک خواهد کرد بسته های مورد نیازنسخه ها سپس بر روی دکمه ای در گوشه پایین سمت راست کلیک کنید که می گوید بسته 1 (1..100) را نصب کنید.

در مورد شما، تعداد بسته ها متفاوت خواهد بود. اگر شما شخصا یا مکانی که در آن زندگی می‌کنید تحت «تحریم‌های غربی» هستید، برای به‌روزرسانی بسته‌ها، به منوی Tools->Options... بروید.

جایی که می توانید آدرس و پورت سرور پراکسی را مشخص کنید،

1. باید JDK (کیت توسعه جاوا) و JRE (محیط زمان اجرا جاوا) را نصب کنید.
پیش از این، Android SDK تنها از JDK نسخه 6 پشتیبانی می کرد، اما اکنون این موضوع به گذشته تبدیل شده است. پشتیبانی از 7 و حتی 8 (بر اساس حداقل، این نسخه 8 بود که من نشان دادم JAVA_HOMEو در تنظیمات اندروید استودیو مشکلی نداشت.
JRE برای اجرای خود استودیو مورد نیاز است. من از نسخه 7 استفاده می کنم.
می توانید نسخه های JDK و JRE بزرگتر از 6 را از وب سایت اوراکل دانلود کنید.

متغیر JAVA_HOMEاکنون به نظر می رسد نیازی به نصب آن نیست، زیرا در اندروید استودیو مسیر JDK را در تنظیمات مشخص می کنیم. ولی من نصبش کردم برای انجام این کار شما نیاز دارید:

  • رفتن به ، سمت چپ را انتخاب کنید ، در گفتگوی باز شده، دکمه را پیدا کنید متغیرهای محیطی.
  • یک متغیر سیستم یا کاربر ایجاد کنید JAVA_HOMEو مسیر JDK را برای آن مشخص کنید. من این مسیر رو دارم: C:\Program Files\Java\jdk1.8.0_05.
2. اگر Android SDK را نصب کرده اید.
Android Studio با Android SDK مخصوص به خود ارائه می شود. و اگر بخواهید از آن استفاده کنید، در برخی موارد ممکن است اتفاقات عجیبی بیفتد. به عنوان مثال، هنگام به روز رسانی SDK از طریق SDK Manager، برخی از فایل ها در یک پوشه قدیمی نوشته شده بودند و با حذف این پوشه مشکلاتی ایجاد شد. به احتمال زیاد این اتفاق به دلیل این واقعیت است که رجیستری یک کلید را با مسیر به ذخیره کرده است پوشه قدیمی. بنابراین، پاک کردن رجیستری منطقی است. برای این کار باید regedit.exe را اجرا کرده و پیدا کنید HKEY_LOCAL_MACHINE\Software\Android SDK Toolsبرای ماشین های 32 بیتی یا HKEY_LOCAL_MACHINE\Software\Wow6432Node\Android SDK Toolsبرای ماشین های 64 بیتی و حذف کنید ابزار Android SDK. اگر چنین کلیدهایی در رجیستری سیستم شما وجود ندارد، پس همه چیز مرتب است.

اگر نصب کرده اید متغیر محیطی ANDROID_SDK_HOMEو شما می‌خواهید که به نصب قدیمی اشاره کند، پس از نظر تئوری، این نباید مشکلی ایجاد کند، زیرا هنگام راه‌اندازی Android Studio ما آن را به مسیر SDK نشان می‌دهیم. اگر این متغیر توسط هر یک از برنامه های موجود در Android SDK استفاده شود، ممکن است مشکلاتی ایجاد شود.

3. حالا به سراغ نصب اندروید استودیو می رویم.
شما باید اندروید استودیو را برای سیستم خود از صفحه رسمی دانلود و نصب کنید. به طور پیش فرض، اگر «فقط برای من نصب کنید» را انتخاب کنید، در آن قرار می گیرد \کاربران\ \AppData\Local\Android\android-studio\، در غیر این صورت قرار دهید \فایلهای برنامه(x86)\Android\android-studio\. همچنین می توانید پوشه دیگری را انتخاب کنید.

پس از نصب اندروید استودیو را اجرا کنید.

ما این دیالوگ را می بینیم


در آن موارد زیر را انجام می دهیم:

ایجاد یک پروژه

1. پروژه جدید
کلیک پروژه جدید.

دیالوگ زیر ظاهر می شود


در آن می توانید پیکربندی کنید:
  • نام پروژه (من آن را به عنوان پیش فرض گذاشتم: برنامه من)
  • دامنه شرکت، پیش فرض .example.com، در مورد من markedone.example.com
  • نام بسته را نیز می توان با کلیک بر روی آن ویرایش کرد ویرایش کنیدسمت راست به طور پیش فرض، از نام پروژه و دامنه شرکت تولید می شود و شبیه com.example است. .<имя проекта в lowercase без пробелов>, я его изменил на com.example.markedone.myapp.
  • مسیری که پروژه در آن ذخیره خواهد شد. من پوشه خود را برای انواع پروژه های آزمایشی مشخص کردم.
وقتی همه چیز وارد شد، کلیک کنید بعد.
2. عوامل شکل
در این گفتگو، پلتفرم ها و API های هدف را انتخاب کنید.

دیالوگ به این شکل است


در اینجا همه چیز را به عنوان پیش فرض گذاشتم: تلفن و تبلت و 4.0.3 IceCreamSandwich. اگر API برای برخی از پلتفرم ها نصب نشده باشد، پیام Not Insatlled نمایش داده می شود. به عنوان مثال، همانطور که در اسکرین شات مشاهده می کنید، من کتابخانه های Google Glass را نصب نکرده ام (این کار را می توان از طریق مدیر SDK انجام داد).

همچنین به کمک به من در انتخاب، چیزهای جالب توجه کنید

اگر فشار دهید کمکم کن انتخاب کنم، سپس این گفتگوی جالب باز می شود


این شامل اطلاعاتی در مورد پوشش دستگاه هنگام انتخاب یک نسخه API خاص است. مستطیل های نسخه های API قابل کلیک هستند و لیستی از قابلیت های موجود در آنها در سمت راست نمایش داده می شود. به عنوان مثال، برای ساندویچ بستنی پیش فرض:



کلیک بعد.
3.Add Activity

در صفحه بعدی از ما خواسته می شود که Activity را انتخاب کنیم


طبیعتاً نمی‌توانستم از Activity Fullscreen بگذرم و آن را انتخاب کردم. می توانید یک Activity دیگر را انتخاب کنید، اما در این صورت منابع جاوا متفاوت خواهند بود و باید خودتان یک فراخوانی متد بومی از جاوا اضافه کنید (البته هیچ چیز پیچیده ای در مورد آن وجود ندارد).
انتخاب کنید، کلیک کنید بعد.

گفتگوی زیر ظاهر می شود


در اینجا از ما خواسته می شود تا Activity را پیکربندی کنیم.
  • نام فعالیت- نام کلاس، آن را به عنوان پیش فرض گذاشتم: تمام صفحه فعالیت.
  • نام طرح- طرح نام، برای ویرایشگر UI، نیز به عنوان پیش فرض باقی مانده است.
  • عنوان- FullscreenActivity به طور پیش فرض ارائه می شود، من یک فاصله گذاشتم: فعالیت تمام صفحه.
کلیک پایان.

در نتیجه، پروژه باید باز شود

ساخت و راه اندازی

1. پروژه را بسازید
ما مونتاژ را از طریق منو شروع می کنیم: ساخت-> ساخت پروژه(آیکون ها و کلیدهای میانبر برای آیتم های منو نشان داده شده اند، بنابراین درک آنها دشوار نخواهد بود).
در طول اولین ساخت من یک خطا دریافت کردم:

این اتفاق در پرونده افتاد MyApplication/app/build.gradle
برای اینکه بفهمید چه اتفاقی می‌افتد، فقط نشانگر خود را روی خطی که زیر آن خط کشیده شده است ببرید:


ساده است، نسخه 19 در اینجا نشان داده شده است، اما ما فقط 20 را نصب کرده ایم و در تنظیمات پروژه 20 را به عنوان هدف مشخص کرده ایم. بیایید فقط شماره را تغییر دهیم:


ظاهرا استودیو به این موضوع راضی نیست و پیشنهاد نصب نسخه جدیدتر را نیز دارد. اما ما اکنون به این نیاز نداریم.

دوباره راه اندازی کنیم ساخت-> ساخت پروژه. این بار همه چیز را جمع کردم. امیدوارم شما هم انجام دهید.

2. راه اندازی یک دستگاه مجازی
برای اجرای برنامه در شبیه ساز، باید یک دستگاه مجازی را پیکربندی کنید. برویم به Tools->Android->AVD Manager(این، مانند SDK Manager، یک ابزار از Android SDK است). ما به اولین تب نیاز داریم، دستگاه مجازی اندروید، به طور پیش فرض باز است. در سمت راست دکمه را پیدا می کنیم ايجاد كردن...و آن را فشار دهید.

گفتگوی تنظیمات دستگاه مجازی ظاهر می شود.



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

دستگاه در لیست ظاهر می شود


چند کلمه در مورد تب Device Definitions


دستگاه های موجود روی آن مشخص شده اند (آنهایی که سپس در لیست کشویی نمایش داده می شوند دستگاههنگام ایجاد یک دستگاه مجازی جدید). برای ایجاد یک دستگاه جدید، باید روی دکمه کلیک کنید ایجاد دستگاه...و مراقب پر کردن کادر گفتگوی زیر باشید:



AVD Manager را ببندید و به پنجره اصلی Android Studio بازگردید.
3. روی یک شبیه ساز اجرا کنید
اجرا می کنیم Run->Run "app".
برای راه اندازی باید منتظر بمانید تا پروژه ساخته شود.

در نهایت پنجره انتخاب دستگاه ظاهر می شود


در اینجا تنها گزینه موجود برای انتخاب دستگاه مجازی ما است. فوراً به ما ارائه شده است، بنابراین فقط کلیک کنید خوب.

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


قابل باز شدن است Tools->Android->Android Device Monitor(یک ابزار از Android SDK) برای دیدن گزارش‌ها از شبیه‌ساز. باید به طور خودکار دستگاه مجازی را انتخاب کند و فوراً شروع به خروجی گزارش کند.

مانیتور دستگاه اندروید


اما بعد از راه اندازی شبیه ساز، بار اول برنامه برای من باز نشد، مجبور شدم دوباره کلیک کنم Run->Run "app".

دیالوگی کمی تغییر یافته ظاهر شد

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

پس از آن، همه چیز به خوبی پیش رفت و برنامه به سرعت نصب و راه اندازی شد.

حالت تمام صفحه

و اگر روی برنامه ضربه بزنید، به نظر می رسد

این رفتار سیستم نیست، کلیک در برنامه پردازش می شود (فایل FullscreenActivity.java):
// تعامل کاربر را برای نمایش یا پنهان کردن دستی تنظیم کنید سیستم UI contentView.setOnClickListener(new View.OnClickListener() ( @Override public void onClick(View view) ( if (TOGGLE_ON_CLICK) ( mSystemUiHider.toggle(); ) else ( mSystemUiHider.show()); پس از راه‌اندازی، Android Studio از من خواست که مانیتور دستگاه Android را خاموش کنم تا خروجی را مستقیماً در IDE ادغام کنم.

این همان چیزی است که ادغام به نظر می رسد

4. در حالت Debug راه اندازی کنید
Run->Debug "app"

باز هم دیالوگ آشنا

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

اندروید استودیو در حال رفع اشکال


کمی آزاردهنده نبود پنل با انواع Step Into، Step Out و غیره است.

همه اینها در منوی Run است

5. راه اندازی در 4.0.3
در طول مراحل ساخت و اجرای پروژه، ممکن است متوجه شده باشید که ما اپلیکیشنی ایجاد کردیم که با نسخه 4.0.3 سازگار بود، اما آن را فقط بر روی آخرین نسخه اندروید اجرا کرد. الان درستش می کنیم برای این کار باید نسخه 4.0.3 را نصب کنید Tools->Android->SDK Manager.

موارد لازم با علامت های چک در اسکرین شات مشخص شده اند.


این پلتفرم SDK, تصویر سیستم ARM EABI v7aو تصویر سیستم اتم اینتل x86. در واقع، ما شبیه ساز ARM را اجرا می کردیم و نیازی به نصب اینتل در حال حاضر نداریم. من آن را کاملاً نصب کردم زیرا برای اندروید L هم نصب شده است.
حالا بیایید یک دستگاه دیگر برای نسخه قدیمی جدید اندروید بسازیم (یا می توانید نسخه قدیمی را ویرایش کنید).

تنظیمات دستگاه جدید


راه اندازی ( Run->Run "app").

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


و بیایید ببینیم شبیه ساز جدید چگونه به نظر می رسد - به وضوح وحشیانه تر است.

راه اندازی

حالت تمام صفحه

بعد از کلیک کردن

5. راه اندازی بر روی دستگاه
قبل از شروع کار با NDK، اجازه دهید پروژه را روی یک دستگاه واقعی اجرا کنیم. روی گوشیم اجراش میکنم

Huawei Ascend G300 با اندروید 4.0.3


اولین کاری که باید انجام دهید نصب درایور adb است. همه چیز برای من کاملاً ساده است ، درایور مستقیماً روی تلفن قرار دارد ، تنها کاری که باید انجام دهید این است که سیم را به رایانه وصل کنید ، به دیسک نصب شده بروید و فایل اجرایی را اجرا کنید ، که درایور adb را نصب می کند. برای دستگاه های دیگر، ممکن است همه چیز پیچیده تر باشد. به عنوان مثال، برای تبلت Prestigio یک بار باید ID Vendor را در یک فایل خاص ثبت می کردم (به طوری که درایور استاندارد گوگل استفاده می شود)، سامسونگ به Kies خود نیاز داشت، یک درایور جداگانه برای HTC وجود داشت و غیره. به طور کلی، شما باید نحوه نصب درایور دستگاه خود را خودتان بیابید.

پس از نصب درایور، باید اشکال زدایی USB را در دستگاه فعال کنید. در تلفن من برای انجام این کار باید بروم تنظیمات -> برای توسعه دهندگان -> اشکال زدایی USB. اما برای دستگاه های مختلف و همچنین ساخت و نسخه های اندروید، مکان این آیتم منو ممکن است متفاوت باشد.

اکنون گوشی دارای Android SDK خواهد بود و برنامه های در حال توسعه نصب خواهند شد. با این حال، برای Huawei این همه چیز نیست: هیچ گزارشی از تلفن وجود ندارد، باید آنها را فعال کنید.

نحوه فعال کردن لاگ در هواوی

شماره گیری به عنوان شماره تلفن: *#*#2846579#*#*
منوی سرویس ظاهر می شود.
رفتن به ProjectMenu->تنظیم پس زمینه->تنظیم گزارش
باز کن سوئیچ ورود به سیستمو در آنجا نصب کنید بر.
باز کن تنظیم سطح گزارشو سطح گزارش مورد نیاز خود را تنظیم کنید (من تنظیم کردم پر حرف).
گوشی خود را ریبوت کنید.


اکنون می توانید برنامه را روی دستگاه خود اجرا کنید: Run->Run "app"

یک دستگاه واقعی در گفتگوی انتخاب دستگاه ظاهر می شود


بیایید روی تلفن راه اندازی کنیم.

نتیجه راه اندازی

کاربرد در پرتره:

کاربرد در چشم انداز:

نصب و پیکربندی Android NDK

1. نصب NDK
Android SDK، همانطور که قبلا متوجه شدیم، در کیت Android Studio گنجانده شده است، اما NDK نیست. NDK مناسب برای سیستم خود را از اینجا دانلود کنید. آرشیو را از بسته بندی خارج کنید و آن را در یک پوشه قرار دهید، به عنوان مثال، در D:\ndk، به طوری که فایل ndk-build.cmdدرست در آن دراز بکشید مهم: لازم است در مسیر NDK هیچ فاصله ای وجود نداشته باشد.
2. متغیر ANDROID_NDK_HOME را اضافه کنید
برویم به کنترل پنل\سیستم و امنیت\سیستمرا در سمت چپ انتخاب کنید تنظیمات پیشرفته سیستم، در گفتگوی باز شده، روی دکمه کلیک کنید متغیرهای محیطی. یک متغیر با نام ایجاد کنید ANDROID_NDK_HOMEو معنی D:\ndk(مسیر به NDK شما).

همچنین، به جای تعیین یک متغیر سراسری، می توانید مسیر ndk را در فایل مشخص کنید. محلی.ملاکپروژه شما (مستقیما در پوشه اصلی: MyApplication\local.properties). محتویات فایل چیزی شبیه به این خواهد بود (به بک اسلش های دوتایی توجه کنید، زیرا برای ویندوز بسیار مهم است):
## این فایل به طور خودکار توسط Android Studio تولید می شود. # این فایل را تغییر ندهید -- تغییرات شما پاک خواهد شد! # # این فایل نباید *نباید* در سیستم های کنترل نسخه بررسی شود، # زیرا حاوی اطلاعاتی خاص برای پیکربندی محلی شما است. # # محل SDK. این فقط توسط Gradle استفاده می شود. # برای سفارشی‌سازی هنگام استفاده از سیستم کنترل نسخه، لطفاً یادداشت هدر # را بخوانید. sdk.dir=C:\\کاربران\\ \\AppData\\Local\\Android\\android-studio\\sdk ndk.dir=D:\\ndk
سلب مسئولیت در مورد "تغییرات شما دور ریخته می شود" را باور نکنید، در این مورد درست نیست. لطفاً توجه داشته باشید که توصیه می شود این فایل را از کنترل نسخه حذف کنید زیرا فقط حاوی اطلاعات محلی برای کاربر است. برای تغییر، در این مورد به ما دروغ نگفتند. خب البته این تغییر به هیچ وجه روی پروژه های دیگر شما تاثیری نخواهد داشت. هنگام نصب ANDROID_NDK_HOMEنیازی به تعیین مسیر در local.properties نیست.

3. نسخه مورد نیاز Android API را نصب کنید
رفتن به NDK\پلتفرم ها(من این را دارم D:\ndk\پلتفرم ها) و حداکثر نسخه APIهای موجود را ببینید. در مورد من حداکثر ورژن 19 هست ولی در عین حال فقط ورژن 20 و 15 رو تو SDK نصب کرده ایم پس به SDK Manager میرویم و SDK Platform نسخه 19 رو دانلود میکنیم وگرنه هیچی کار نمیکنه.

چه چیزی دانلود شود

4. gradle را برای کار با NDK پیکربندی کنید
من اطلاعات را از نمونه ها گرفتم، می توانید آنها را دانلود کنید. من نمونه های نسخه 0.11 را دانلود کردم. من ndkSanAngeles را به عنوان مثال اصلی در نظر گرفتم.

نحوه اجرای ndkSanAngeles

پس از دانلود نمونه ها، باید از بسته بندی خارج شوند. سپس باید پروژه ndkSanAngeles را باز کنید. برای Android Studio، یک پروژه یک پوشه است، بنابراین باید آن را باز کنید. برای این کار انجام می دهیم File->Open، یا اگر در گفتگوی خوش آمدید هستید، پروژه باز. ما از طریق گفتگوی باز فایل به دنبال پوشه ndkSanAngeles می گردیم.

پس از باز کردن پروژه، باید به فایل نگاه کنید build.gradle. اینم اصلش:
buildscript ( مخازن ( mavenCentral() ) وابستگی ها ( classpath "com.android.tools.build:gradle:0.11.0" ) ) افزونه را اعمال کنید: "اندروید" اندروید ( compileSdkVersion 19 buildToolsVersion "19.1.0" default (N moduleame "Config (N moduleand") sanngeles" cFlags "-DANDROID_NDK -DDISABLE_IMPORTGL" ldLibs "GLESv1_CM"، "dl"، "log" stl "stlport_static" ) // این کد نسخه واقعی برنامه است. به خودمان 1000000 مقدار می دهیم.bugt. true productFlavors ( x86 ( ndk ( abiFilter "x86") // این قسمت طعم کد نسخه است. // برای دستگاه هایی که از // هر دو پشتیبانی می کنند باید بالاتر از بازوی باشد زیرا x86 ترجیح داده می شود. versionCode = 3 ) arm ( ndk ( abiFilter "armeabi-v7a" ) versionCode = 2 ) mips ( ndk ( abiFilter "mips" ) versionCode = 1 ) fat ( // fat باینری، پایین ترین کد نسخه که می شود // آخرین گزینه versionCode = 0 ) ) // ساخت کد نسخه برای هر متغیر applicationVariants.all ( نوع ->
و در اینجا یک نسخه اصلاح شده وجود دارد تا پروژه را بتوان از من مونتاژ کرد:
buildscript ( مخازن ( mavenCentral() ) وابستگی ها ( classpath "com.android.tools.build:gradle:0.12.+" ) ) افزونه را اعمال می کند: "اندروید" اندروید ( compileSdkVersion 19 buildToolsVersion "20.0.0" default (N moduleame "Config (N moduleand") sanngeles" cFlags "-DANDROID_NDK -DDISABLE_IMPORTGL" ldLibs "GLESv1_CM"، "dl"، "log" stl "stlport_static" ) // این کد نسخه واقعی برنامه است. به خودمان 1000000 مقدار می دهیم.bugt. true productFlavors ( x86 ( ndk ( abiFilter "x86") // این قسمت طعم کد نسخه است. // برای دستگاه هایی که از // هر دو پشتیبانی می کنند باید بالاتر از بازوی باشد زیرا x86 ترجیح داده می شود. versionCode = 3 ) arm ( ndk ( abiFilter "armeabi-v7a" ) versionCode = 2 ) mips ( ndk ( abiFilter "mips" ) versionCode = 1 ) fat ( // fat باینری، پایین ترین کد نسخه که می شود // آخرین گزینه versionCode = 0 ) ) // ساخت کد نسخه برای هر متغیر applicationVariants.all ( نوع -> // دریافت طعم تک def flavorVersion = variant.productFlavors.get(0).versionCode // تنظیم کد ترکیبی variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig. versionCode ) )
تغییرات به شرح زیر است:

  • درباره عدم تطابق نسخه پلاگین gradle ( classpath "com.android.tools.build:gradle:0.11.0") زمانی گفته می شود که بخواهید شماره نسخه صحیح را بسازید و ارائه دهید. برای من 0.12.+ است.
  • compileSdkVersion 19 باقی می ماند زیرا حداکثر نسخه برای NDK فعلی است.
  • buildToolsVersionبه 20 تغییر یافته است. نسخه های نصب شده را می توان در مدیریت SDK مشاهده کرد و سایر نسخه ها را می توان در آنجا نصب کرد.
پس از این، ndkSanAngeles باید دوباره جمع شود. مراقب باشید و نسخه هایی که نصب کرده اید را بررسی کنید.

در پروژه ما، باید فایل build.gradle صحیح را انتخاب کنیم، زیرا دو مورد از آنها وجود دارد. موضوع این است که MyApplication یک پروژه است، و برنامه یک ماژول پروژه (یا زیر پروژه)، و آنها برای هر کدام build.gradle خود را دارند. ابتدا اجازه دهید فایل پروژه را بررسی کنیم

MyApplication->build.gradle

// فایل ساخت سطح بالا که در آن می‌توانید گزینه‌های پیکربندی مشترک برای همه پروژه‌های فرعی/ماژول‌ها را اضافه کنید. buildscript ( مخازن ( jcenter() ) وابستگی ها ( classpath "com.android.tools.build:gradle:0.12.+" // توجه: وابستگی های برنامه خود را در اینجا قرار ندهید، آنها به // در فایل های ماژول جداگانه build.gradle تعلق دارند ) ) همه پروژه ها ( مخازن ( jcenter( ) )


از نظرات موجود در کد مشخص می شود که ما به یک فایل ماژول نیاز داریم

MyApplication->app->build.gradle

اعمال افزونه: "com.android.application" android ( compileSdkVersion 20 buildToolsVersion "20.0.0" defaultConfig ( applicationId "com.example.markedone.myapp" minSdkVersion 15 targetSdkVersion 20 versionCode 1 versionCode 1 versionName run. getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") ) ) وابستگی ها (کامپایل fileTree(dir: "libs"، شامل: ["*.jar"]) // باید نصب یا به روز رسانی از مخزن از طریق مدیر SDK برای استفاده از این وابستگی پشتیبانی کنید. //compile "com.android.support:support-v4:19.+" کامپایل "com.android.support:support-v4:20.+" )


بیایید آن را برای کار با NDK، با استفاده از build.gradle از ndkSanAngeles به عنوان " اهدا کننده " پیکربندی کنیم.

ابتدا بیایید جایگزین کنیم
compileSdkVersion 20
بر
compileSdkVersion 19
از آنجایی که NDK به نسخه 19 محدود شده است.

که در defaultConfigتنظیمات را اضافه خواهیم کرد ndk، و همچنین جایگزین کنید targetSdkVersionدر 19:
defaultConfig (ApplicationId "com.example.markedone.myapp" minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" ndk (moduleName "myapp" cFlags "-DANDROID_NDK" ldLibs "log" stl "stl" stlport")_sta

  • نام ماژول- نام ماژول، برای نامگذاری فایل *.so استفاده خواهد شد
  • cFlags- پرچم های C
  • ldLibs- کتابخانه هایی که می خواهید به کد بومی متصل شوند
  • stl- نسخه کتابخانه STL
در buildTypes، مجموعه اشکال زدایی JNI را برای اشکال زدایی فعال می کنیم:
buildTypes ( انتشار ( runProguard false proguardFiles getDefaultProguardFile ("proguard-android.txt")، "proguard-rules.pro" ) debug.jniDebugBuild true)
حالا اضافه کنیم طعم های محصول. در اینجا نشان می‌دهیم که کدام کتابخانه *.so را برای یک معماری خاص در بیلد قرار دهیم. بنابراین، *.apk که برای arm کامپایل شده است شامل نسخه ای از کتابخانه فقط برای arm، برای x86 - برای x86 و غیره خواهد بود. این قطعه به طور کامل از ndkSanAngeles کپی شده است. توضیح معانی نسخه کداز نظرات: برای x86 حداکثر مقدار را تعیین می کنیم نسخه کد، از آنجایی که اگر دستگاه از هر دو x86 و بازو پشتیبانی می کند، پس مونتاژ x86 ترجیح داده می شود (ظاهراً از آنجایی که نسخه بزرگتری دارد نصب می شود) و حداقل نسخه کدتجویز شده برای چربی(در تئوری، این باید یک *.apk "ضخیم" باشد که شامل تمام نسخه های ممکن کتابخانه ها به طور همزمان باشد).
productFlavors ( x86 ( ndk ( abiFilter "x86" ) // این قسمت طعم کد نسخه است. // برای دستگاه هایی که از // هر دو پشتیبانی می کنند باید بالاتر از بازوی باشد زیرا x86 ترجیح داده می شود. versionCode = 3 ) بازو ( ndk ( abiFilter "armeabi-v7a" ) versionCode = 2 ) mips ( ndk ( abiFilter "mips" ) versionCode = 1 ) fat (// fat باینری، پایین ترین کد نسخه که باشد // آخرین گزینه versionCode = 0 ) )
«جمع آوری» معنا نسخه کدبرای هر گزینه ساخت:
// ساخت کد نسخه برای هر متغیر applicationVariants.all ( نوع -> // دریافت طعم تک def flavorVersion = variant.productFlavors.get(0).versionCode // تنظیم کد ترکیبی variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode)
در نهایت بخش آخر وابستگی ها. اگه یادتون باشه اینجا عوض شدیم کامپایل "com.android.support:support-v4:19.+"بر کامپایل "com.android.support:support-v4:20.+"، برای ساخت با تنها نسخه از کتابخانه نصب شده بر روی ما. حالا باید آن را به 19 برگردانید.
وابستگی ها ( compile fileTree(dir: "libs", شامل: ["*.jar"]) // برای استفاده از این وابستگی باید مخزن پشتیبانی را از طریق مدیر SDK نصب یا به روز کنید. کامپایل "com.android.support:support- v4:19.+")

فهرست کامل فایل build.gradle اصلاح شده

کاربردی افزونه: "com.android.application" android ( compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig ( applicationId "com.example.markedone.myapp" minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionNameName "agsmy module" -DANDROID_NDK" ldLibs "log" stl "stlport_static" ) ) buildTypes ( انتشار (runProguard false proguardFiles getDefaultProguardFile ("proguard-android.txt")، "proguard-rules.pro" ) debug.jniDebugBuildk (6) productFlavndors abiFilter "x86" ) // این قسمت طعم کد نسخه است. // برای دستگاه هایی که از // هر دو پشتیبانی می کنند باید بالاتر از بازوی باشد، زیرا x86 ترجیح داده می شود. versionCode = 3 ) arm ( ndk ( abiFilter "armeabi -v7a" ) versionCode = 2 ) mips ( ndk ( abiFilter "mips" ) versionCode = 1 ) fat ( // fat باینری، پایین ترین کد نسخه برای // آخرین گزینه versionCode = 0 ) ) // ساخت نسخه هر گونه کد applicationVariants.all ( نوع -> // دریافت طعم واحد def flavorVersion = variant.productFlavors.get(0).versionCode // تنظیم کد ترکیبی variant.mergedFlavor.versionCode = flavorVersion * 1000000 + defaultConfig.versionCode ) sourceSets ( main ( jni.srcDirs = ["src/main/jni", "src/main/jni/"] ) ) وابستگی ها ( compile fileTree(dir: "libs", شامل: ["*.jar"]) // شما برای استفاده از این وابستگی باید مخزن پشتیبانی را از طریق مدیر SDK نصب یا به روز کنید. کامپایل "com.android.support:support-v4:19.+")

5. پوشه jni را ایجاد کنید
فایل های C/C++ را در پوشه jni ذخیره می کنیم. این چیزی است که NDK از ما انتظار دارد. ما باید یک پوشه در آن ایجاد کنیم MyApplication/app/src/main. این کار را می توان مستقیماً از Android Studio و به دو روش انجام داد.
ابتدا می توانید روی main کلیک راست کرده و به سادگی از طریق آن یک پوشه ایجاد کنید

جدید->دایرکتوری


در مرحله دوم، می توانید از یک آیتم منوی ویژه استفاده کنید

New->Folder->Folder JNI

ویزارد ایجاد پوشه را راه اندازی می کند




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

6. فایل های C++ را اضافه کنید
هیچ جادوگری برای فایل های ++C وجود ندارد، بنابراین برای ایجاد یک فایل روی پوشه کلیک راست می کنیم jniو انتخاب کنید

جدید-> فایل


ابتدا بیایید یک فایل هدر ایجاد کنیم myapp.h:
#پراگما یکبار #شامل #ifdef __cplusplus extern "C" ( #endif JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz); #ifdef __cplusplus ) #endif

شرح

  • #pragma یک بار - به جای حفاظت استاندارد (#ifndef/#define/#endif) در برابر فعالسازی مجدد. اکنون #pragma یکبار توسط اکثر کامپایلرهای C++ قابل درک است.
  • #عبارتند از - هدر JNI را وارد کنید تا بتوانید از انواع اعلام شده در آنجا استفاده کنید.
  • #ifdef __cplusplus ... #endif - کد داخل فقط در C++ (اما نه در C) کامپایل می شود.
  • خارجی "C" (...) - از دستکاری نام خلاص شوید (این چیست و چرا، ).
  • JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env، jclass clazz); - اعلام عملکردی که اجرا خواهیم کرد.
    بیایید این تبلیغ را با جزئیات بیشتری بررسی کنیم.
    • JNIEXPORTبرای پیوند صحیح لازم است
    • JNICALLبرای کنوانسیون فراخوانی صحیح
    • jstring- نوع برگشتی تابع، در این مورد یک رشته سازگار با رشته جاوا.
    • Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI- نام تابع، شامل:
      جاوا- زبانی که تداعی می کند.
      com_example_markedone_myapp- این شناسه برنامه است ( com.example.markedone.myapp).
      تمام صفحه فعالیتنام یک کلاس جاوا است که حاوی یک اعلان متد است که یک تابع بومی را نشان می دهد.
      stringFromJNI- در واقع نام تابع (در جاوا اینگونه خواهد بود).
    • JNIEnv* env، jclass clazz - پارامترهای مورد نیاز که از جاوا منتقل می شوند.
      JNIEnv* env یک اشاره گر به یک شی است که محیط JNI را نشان می دهد.
      jclass clazz کلاسی است که دارای اعلان متد بومی در جاوا است. در اینجا باید رزرو کنیم که jclass clazz برای استاتیک بومی است ( بومی ساکن) روش. برای یک روش غیر استاتیک باید jobject obj را بنویسید.

حالا بیایید یک فایل پیاده سازی به نام myapp.cpp ایجاد کنیم. در آن کد زیر را می نویسیم:
#عبارتند از #عبارتند از #include "myapp.h" JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz) ( std::string tag("GREETING"); std::string message("AND_LO___print("END__FO) پیام + RO_FO_C; g .c_str()، "%s"، message.c_str()); std::string jniMessage("سلام از JNI!")؛ return env->NewStringUTF(jniMessage.c_str());

شرح

  • #عبارتند از - لاگ را وصل کنید، که حتی کتابخانه را برای آن اضافه کردیم ( ldLibs "log")
  • #include - برای std::string که از آن برای بررسی وجود STL استفاده می کنیم.
    #include "myapp.h" - ما فایل هدر خود را اضافه می کنیم.
    JNIEXPORT jstring JNICALL Java_com_example_markedone_myapp_FullscreenActivity_stringFromJNI(JNIEnv* env, jclass clazz) (... ) - تابع اعلام شده در "myapp.h" را اجرا کنید.
    std:: string tag ("GREETING"); std:: string message("سلام از C++!"); - ایجاد خطوط برای خروجی به ورود به سیستم.
    __android_log_print(ANDROID_LOG_INFO، tag.c_str()، "%s"، message.c_str()); - خروجی برای ورود به سیستم. لطفاً توجه داشته باشید که باید 4 پارامتر را مشخص کنید: نوع پیام در گزارش، برچسب، قالب رشته و در نهایت خود پیام.
    std::string jniMessage("سلام از JNI!"); - رشته ای که به جاوا منتقل می کنیم.
    بازگشت env->NewStringUTF(jniMessage.c_str()); - مقدار بازگشتی، با استفاده از JNIEnv یک jstring از یک رشته C ایجاد می کنیم. توجه داشته باشید که ما نیازی به ساختاری مانند (*env)-> نداریم، زیرا ما در C++ می نویسیم، نه C.
حالا یک فایل دیگر ایجاد می کنیم: stub.cpp و آن را خالی می گذاریم. واقعیت این است که اگر فقط یک فایل *.cpp را در پوشه jni بگذارید، ndk-build خطای "no rule to make target" را ایجاد می کند.
7. یک فراخوانی تابع بومی از جاوا اضافه کنید
فایل را باز کنید MyApplication/app/src/main/java/com.example.markedone.myapp.FullscreenActivity. در واقع یک پسوند جاوا دارد و com به عنوان مثال، markedone و myapp پوشه هستند، اما اندروید استودیو این را پنهان می کند.

محتویات فایل

بسته com.example.markedone.myapp; وارد کردن com.example.markedone.myapp.util.SystemUiHider. وارد کردن android.annotation.TargetApi; وارد کردن android.app.Activity; وارد کردن android.os.Build; وارد کردن android.os.Bundle; وارد کردن android.os.Handler. وارد کردن android.view.MotionEvent; وارد کردن android.view.View; /** * نمونه ای از فعالیت تمام صفحه که رابط کاربری سیستم (به عنوان مثال * نوار وضعیت و ناوبری/نوار سیستم) را با تعامل کاربر نشان می دهد و پنهان می کند. * * @See SystemUiHider */ class public FullscreenActivity فعالیت را گسترش می دهد ( /** * آیا رابط کاربری سیستم باید پس از * (@link #AUTO_HIDE_DELAY_MILLIS) میلی ثانیه به صورت خودکار پنهان شود یا خیر. */ AUTO_HIDE نهایی استاتیک خصوصی = درست؛ /* * * اگر (@link #AUTO_HIDE) تنظیم شده باشد، تعداد میلی‌ثانیه‌های انتظار پس از * تعامل کاربر قبل از پنهان کردن رابط کاربری سیستم. نمایان شدن در هنگام تعامل. در غیر این صورت، * قابلیت مشاهده رابط کاربری سیستم را در هنگام تعامل نشان می‌دهد. */ بولین نهایی استاتیک خصوصی TOGGLE_ON_CLICK = درست؛ /** * پرچم‌ها برای ارسال به (@link SystemUiHider#getInstance). */ خصوصی استاتیک نهایی int HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION؛ /** * نمونه (@link SystemUiHider) برای این فعالیت. .activity_fullscreen)؛ نمایش نهایی controlsView = findViewById(R.id.fullscreen_content_controls); نمایش نهایی contentView = findViewById(R.id.fullscreen_content); // یک نمونه از SystemUiHider را برای کنترل رابط کاربری سیستم برای // این فعالیت تنظیم کنید. mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS); mSystemUiHider.setup(); ‎ ) (اگر (Build.VERSION.SDK_ INT > = Build.VERSION_CODES.HONEYCOMB_MR2) ( // اگر ViewPropertyAnimator API در دسترس است // (Honeycomb MR2 و جدیدتر)، از آن برای متحرک کردن // کنترل‌های UI در طرح‌بندی در پایین صفحه // استفاده کنید. if (mControlsHeight = = 0) ( mControlsHeight = controlsView.getHeight(); ) if (mShortAnimTime == 0) (mShortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); ) controlsView.animate() .translation (visible) 0: mControlsHeight).setDuration(mShortAnimTime); ) else (// اگر API های ViewPropertyAnimator // در دسترس نیستند، به سادگی UI درون طرح بندی // کنترل ها را نشان داده یا پنهان کنید. controlsView.setVisibility(visible? View.VISIBLE: View.GONE); ) if (قابل مشاهده && AUTO_HIDE ) ( // برنامه ریزی یک hide(). delayedHide(AUTO_HIDE_DELAY_MILLIS); ) ))))؛ // تنظیم تعامل کاربر برای نمایش یا پنهان کردن دستی رابط کاربری سیستم. contentView.setOnClickListener(new View.OnClickListener() (@Override void onClick(View view) ( if (TOGGLE_ON_CLICK) ( mSystemUiHider.toggle(); ) else ( mSystemUiHider.show(); ) )); // پس از تعامل با کنترل های UI، هر گونه عملیات پنهان () // برنامه ریزی شده را برای جلوگیری از رفتار ناخوشایند کنترل‌ها از بین می‌رود // در حین تعامل با رابط کاربری. findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener); hide() اولیه اندکی پس از ایجاد // فعالیت، به طور خلاصه به کاربر اشاره می کند که کنترل های UI // در دسترس هستند. delayedHide(100); ) /** * شنونده را لمس کنید تا از آن برای کنترل های UI درون طرح استفاده کنید تا پنهان کردن * UI سیستم را به تاخیر بیندازید. این کار برای جلوگیری از از بین رفتن رفتار هولناک کنترل ها در هنگام تعامل با UI فعالیت است. */ View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() ( @Override public boolean onTouch(View view, MotionEvent motionEvent) ( if (AUTO_HIDE) ( delayedHide(AUTO_HIDE_DELAY_MILLIS); ) return false; Handler mHideHandler = new Handler(); Runnable mHideRunnable = new Runnable() ( @Override public void run() ( mSystemUiHider.hide(); ) ); /** * یک تماس را برای مخفی کردن() در میلی ثانیه زمان بندی می کند و هر * تماس های برنامه ریزی شده قبلی را لغو می کند. */ خلأ خصوصی delayedHide(int delayMillis) ( mHideHandler.removeCallbacks(mHideRunnable); mHideHandler.postDelayed(mHideRunnable, delayMillis); )


بیایید کد زیر را به کلاس FullscreenActivity اضافه کنیم:
static ( System.loadLibrary("myapp"); ) خصوصی استاتیک Native String stringFromJNI(); در اینجا ابتدا کتابخانه بارگذاری می شود و سپس متد اعلام می شود stringFromJNI، که با عملکرد ما در C++ مطابقت دارد. توجه داشته باشید که به عنوان static (این روی چیزی که (jclass یا jobject) به عنوان دومین پارامتر تابع C++ خواهد بود تأثیر می‌گذارد) و native است. نیازی به پیاده سازی متد بومی نیست، ما قبلا این کار را در C++ انجام داده ایم و JNI بقیه کارها را برای ما انجام خواهد داد.

اکنون ما به طور کلی می توانیم تابع خود را فراخوانی کنیم. اگر شما نیز مانند من FullscreenActivity را انتخاب کرده اید، پس ما یک دکمه ساختگی داریم که اساسا هیچ کاری انجام نمی دهد. و ما حتی در حال حاضر یک شنونده لمسی داریم، اگرچه بهترین نیست (در حالی که انگشت روی صفحه است بارها فراخوانی می شود)، اما برای اینکه کد غیر ضروری تولید نکنیم، از آن استفاده می کنیم.

ابتدا بیایید به لیست واردات اضافه کنیم:
وارد کردن android.widget.Button;
تا بتوانید به طور معمول با دکمه کار کنید.

بیایید کد زیر را پیدا کنیم:
View.OnTouchListener mDelayHideTouchListener = جدید View.OnTouchListener() ( @Override public boolean onTouch(View view, MotionEvent motionEvent) ( if (AUTO_HIDE) ( delayedHide(AUTO_HIDE_DELAY_MILLIS); ) return false;)
و قبل از بازگشت false چند خط اضافه کنید.
View.OnTouchListener mDelayHideTouchListener = جدید View.OnTouchListener() ( @Override boolean public onTouch(View view, MotionEvent motionEvent) ( if (AUTO_HIDE) ( delayedHide(AUTO_HIDE_DELAY_MILLIS); )findViewById(R.id.dummy_button)؛ رشته نهایی actualText = button.getText().toString(); if(message.equals(actualText)) ( button.setText("Dummy Button"); ) else ( button.setText (پیام)؛ ) بازگشت نادرست؛ ) );

توضیحات کد اضافه شده

  • پیام رشته نهایی = stringFromJNI(); - یک رشته از C++ دریافت می کنیم. فراخوانی یک متد بومی چیزی است که همه چیز برای آن شروع شد.
  • دکمه نهایی = (Button)findViewById(R.id.dummy_button); - شی دکمه را پیدا کنید.
  • رشته نهایی actualText = button.getText().toString(); - متن دکمه فعلی را بیرون بکشید.
  • if(message.equals(actualText)) - رشته بدست آمده از C++ را با متن دکمه مقایسه کنید.
    • button.setText("دکمه ساختگی"); - اگر یکسان هستند، متن دکمه را به Dummy Button تغییر دهید.
    • button.setText(پیام); - اگر با هم متفاوت باشند، آنها را به متنی که از C++ به دست آمده است تغییر می دهیم.

لیست کامل کلاس از کلاس اصلاح شده

بسته com.example.markedone.myapp; وارد کردن com.example.markedone.myapp.util.SystemUiHider. وارد کردن android.annotation.TargetApi; وارد کردن android.app.Activity; وارد کردن android.os.Build; وارد کردن android.os.Bundle; وارد کردن android.os.Handler. وارد کردن android.view.MotionEvent; وارد کردن android.view.View; وارد کردن android.widget.Button; /** * نمونه ای از فعالیت تمام صفحه که رابط کاربری سیستم (به عنوان مثال * نوار وضعیت و ناوبری/نوار سیستم) را با تعامل کاربر نشان می دهد و پنهان می کند. * * @See SystemUiHider */ class public FullscreenActivity فعالیت را گسترش می دهد ( static ( System.loadLibrary("myapp"); ) private static String native stringFromJNI(); /** * اینکه آیا رابط کاربری سیستم باید به صورت خودکار پس از * پنهان شود یا خیر (@link #AUTO_HIDE_DELAY_MILLIS) میلی‌ثانیه. */ بولین نهایی استاتیک خصوصی AUTO_HIDE = درست؛ /** * اگر (@link #AUTO_HIDE) تنظیم شود، تعداد میلی‌ثانیه‌هایی که باید منتظر بمانید بعد از * تعامل کاربر قبل از پنهان کردن رابط کاربری سیستم. */ خصوصی استاتیک نهایی int AUTO_HIDE_DELAY_MILLIS = 3000؛ /** * اگر تنظیم شود، نمایان شدن رابط کاربری سیستم را در هنگام تعامل تغییر می‌دهد. در غیر این صورت، * نمایان شدن رابط کاربری سیستم را در هنگام تعامل نشان می‌دهد. */ بولین نهایی استاتیک خصوصی TOGGLE_ON_CLICK = درست؛ /** * پرچم هایی که باید به (@link SystemUiHider#getInstance). */ خصوصی استاتیک int نهایی HIDER_FLAGS = SystemUiHider.FLAG_HIDE_NAVIGATION؛ /** * نمونه (@link SystemUiHider) برای این فعالیت. */ خصوصی SystemUiHider mSystemUiHider; محافظت از void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_fullscreen); نمایش نهایی controlsView = findViewById(R.id.fullscreen_content_controls); نمایش نهایی contentView = findViewById(R.id.fullscreen_content); // یک نمونه از SystemUiHider را برای کنترل رابط کاربری سیستم برای // این فعالیت تنظیم کنید. mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS); mSystemUiHider.setup(); ‎ ) (اگر (Build.VERSION.SDK_ INT > = Build.VERSION_CODES.HONEYCOMB_MR2) ( // اگر ViewPropertyAnimator API در دسترس است // (Honeycomb MR2 و جدیدتر)، از آن برای متحرک کردن // کنترل‌های UI در طرح‌بندی در پایین صفحه // استفاده کنید. if (mControlsHeight = = 0) ( mControlsHeight = controlsView.getHeight(؛ ) if (mShortAnimTime == 0) (mShortAnimTime = getResources().getInteger(android. R.integer.config_shortAnimTime)؛ ) controlsView.animate() .translationY(visible? 0: mControlsHeight) .setDuration(mShortAnimTime); ) else (// اگر API های ViewPropertyAnimator // در دسترس نیستند، به سادگی UI درون طرح بندی // کنترل ها را نشان داده یا پنهان کنید. controlsView.setVisibility(visible? View.VISIBLE: View.GONE); ) if (قابل مشاهده && AUTO_HIDE ) ( // برنامه ریزی یک hide(). delayedHide(AUTO_HIDE_DELAY_MILLIS); ) ))))؛ // تنظیم تعامل کاربر برای نمایش یا پنهان کردن دستی رابط کاربری سیستم. contentView.setOnClickListener(new View.OnClickListener() (@Override void onClick(View view) ( if (TOGGLE_ON_CLICK) ( mSystemUiHider.toggle(); ) else ( mSystemUiHider.show(); ) )); // پس از تعامل با کنترل های UI، هر گونه عملیات پنهان () // برنامه ریزی شده را برای جلوگیری از رفتار ناخوشایند کنترل‌ها از بین می‌رود // در حین تعامل با رابط کاربری. findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener); hide() اولیه اندکی پس از ایجاد // فعالیت، به طور خلاصه به کاربر اشاره می کند که کنترل های UI // در دسترس هستند. delayedHide(100); ) /** * شنونده را لمس کنید تا از آن برای کنترل های UI درون طرح استفاده کنید تا پنهان کردن * UI سیستم را به تاخیر بیندازید. این کار برای جلوگیری از از بین رفتن رفتار هولناک کنترل ها در هنگام تعامل با UI فعالیت است. */ View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() (@Override boolean public onTouch(View view, MotionEvent motionEvent) ( if (AUTO_HIDE) ( delayedHide(AUTO_HIDE_DELAY_MILLIS); دکمه .setText(message); ) return false; ) ); Handler mHideHandler = new Handler(); Runnable mHideRunnable = new Runnable() ( @Override public void run() ( mSystemUiHider.hide(); ) ); /** * یک تماس را برای مخفی کردن() در میلی ثانیه زمان بندی می کند و هر * تماس های برنامه ریزی شده قبلی را لغو می کند. */ خلأ خصوصی delayedHide(int delayMillis) ( mHideHandler.removeCallbacks(mHideRunnable); mHideHandler.postDelayed(mHideRunnable, delayMillis); )

17. پروژه را مونتاژ و راه اندازی می کنیم
اولین ساخت-> ساخت پروژه. در این مرحله قسمت جاوا مونتاژ می شود.
سپس Run->Run "app" را اجرا کنید. و در اینجا، قبل از شروع برنامه، قسمت C++ مونتاژ می شود. اگر خطایی در آن وجود داشته باشد، پیامی در این مورد نمایش داده می شود. اگر خطایی وجود نداشته باشد، یک گفتگوی استاندارد انتخاب دستگاه ظاهر می شود و پس از کلیک بر روی OK برنامه راه اندازی می شود.

کار بر روی یک دستگاه واقعی

خروجی یک پیام به گزارش

نتیجه

در کل من اندروید استودیو را دوست داشتم. ادغام Android SDK کاملاً محکم انجام می شود، حتی گاهی اوقات فراموش می کنید که اینها برنامه های جداگانه ای هستند که راه اندازی می شوند. انواع و اقسام چیزهای جالب وجود دارد، مانند کمک به من در انتخاب. من سیستم ساخت جدید - Gradle - را دوست داشتم، اما یک اشکال نیز وجود دارد: اطلاعات بسیار کمی در مورد آن وجود دارد.

همچنین واضح است که حمایت از NDK هنوز ضعیف است، اما حرکتی در این راستا وجود دارد. من واقعاً امیدوارم که آنها در نهایت از توسعه ++C پشتیبانی کامل کنند.

P.S. هنوز هیچ اشکال‌زدایی کد C++ پیدا نشده است.

برچسب ها:

  • استودیو اندروید
  • گرید
  • اندروید ndk
  • اندروید
افزودن برچسب

بهترین مقالات در این زمینه