سلام!


بعد از انتشار نسخه‌ی ۱.۴.۰ پوشه، تعدادی از توسعه دهندگان بیسیک‌۴‌اندروید به ما اطلاع دادند که در استفاده از کتابخانه پوشه در کنار کتابخانه‌های دیگر بیسیک۴اندروید به مشکل بر می‌خورند. 


در این پست بلاگ سعی می‌کنیم توضیح دهیم که علت این مشکل چیست و راه حلی برای آن ارائه می‌دهیم.


توضیح مشکل


در نسخه ی 1.4.0 پوشه برای پشتیبانی از ویژگی های ارائه شده در نسخه ی 8 اندروید نیاز به استفاده از کتابخانه ساپورت نسخه 26.0.1 به بالا هست و با ورژن های پایین تر قابل استفاده نیست. از طرفی کتابخانه های ساپورت از این نسخه، و کتابخانه های gcm  از نسخه ی 11.0.4 به بعد، دیگر توسط sdk manager  قابل دانلود نیستند، بلکه در اندروید استودیو و در زمان کامپایل توسط gradle  (که دیپندنسی منیجر اصلی ای هست که گوگل پشتیبانی می کند) از ریپازیتوری گوگل دانلود می شود. 


به همین دلیل در ارائه نسخه ی 1.4.0 پوشه برای b4a ، کتابخانه های gcm  و ساپورت مورد نیاز برای درست عمل کردن آن هم ضمیمه شده اند (در واقع در کنار کتابخانه‌ی پوشه، کتابخانه‌های support و gcm هم bunlde شده اند) تا استفاده از آن برای کاربران مثل همیشه ساده و بدون مشکل باشد. 


حال مشکلی که ایجاد می‌شود، زمانی است که شما از کتابخانه(ها)ی دیگری هم در b4a استفاده می کنید (مثل متریال دیزاین یا appCompat) که به همین هدف (سادگی استفاده و عدم ایجاد مشکل dependency) کتابخانه های ساپورت مورد نیازشان را ضمیمه (bundle) کرده اند. این مسئله باعث می شود که حداقل یکی از کتابخانه های ساپورت دوباره به برنامه شما اضافه شود و تداخل رخ دهد.

برای حل این مشکل چند روش وجود دارد.


۱. رفع تداخل به صورت دستی! که این مورد برای توسعه‌دهندگانی هست که حرفه‌ای هستند (و ماهم از این دوستانمون درس می‌گیریم! :) ) و نیازی به توضیح و راهنمایی برای رفع تداخل در برنامه‌ی خودشون ندارن. البته ما این راه حل رو پیشنهاد نمی‌کنیم.


۲. استفاده از نسخه‌ی ۸ محیط b4a و دانلود کتابخانه های gcm  و ساپورت توسط sdk manager ای که در آن اضافه شده  است. توسعه دهندگان محیط b4a خودشون برای رفع این دست از مشکل‌ها، sdk manager ای را در نسخه‌ی ۸ قرار داده اند که تجربه‌ای مانند تجربه‌ی قبلی را برای توسعه دهندگان فراهم می‌کند. 


نحوه‌ی استفاده از این مورد رو ما در ادامه توضیح می‌دهیم.


استفاده از نسخه‌ی ۸ محیط b4a و sdk manager


برای استفاده از قابلیت بروزرسانی کتابخانه های gcm  و ساپورت در بیسیک4اندروید و امکان استفاده از آخرین آپدیت ها بصورت آفلاین مراحل زیر را انجام دهید.

- نسخه ۸ از محیط بیسیک4اندروید را نصب کنید. 

- ابزارهای خط فرمان اندروید را از اینجا دانلود کنید و unzip شده آن را در مسیری مثلا D:\Android\ کپی کنید (داخل فولدرهای سیستمی مثل programFiles آن را قرار ندهید). اسم این مسیر را android-sdk-path در نظر می گیریم تا در توضیحات بعدی با این اسم به آن اشاره کنیم.


- کتابخانه ی جاوای شما (jdk) باید یکی از ریلیزهای ۱۰۲ یا بالاتر ورژن ۱.۸ باشد. اگر نسخه ی قدیمی تری دارید این نسخه از jdk  را دانلود و نصب کنید.

- بعد به قسمت Tools-> Configure Path بروید (تصویر ۱)

      o در پنجره ای که نشان داده می شود مسیرjavac.exe را بر روی نسخه ای از jdk که توضیح داده شد تنظیم کنید.



         o        روی دکمه ی open SDK Manager بزنید تا پنجره ی زیر باز شود:


درقسمت sdkmanager.bat (کادر قرمز) به فایل sdkmanager.bat که در فولدر bin از از مسیر android-sdk-path قرار دارد، آدرس بدهید و بعد دکمه ی رفرش (کادر سبز) را بزنید. برای اینکه لیست بروزرسانی های کتابخانه را به شما نشان دهد لازم هست که یک پراکسی در حال اجرا داشته باشید (مثلا دراین مورد سایفون یا فری گیت مناسبند).
از لیست کتابخانه هایی که برای بروزرسانی نشان داده می شود حتما موارد زیر را بروزرسانی کنید:

Android SDK tools
Android SDK build-tools
Android SDK platform-tools
همه کتابخانه های com.google.android.gcm
همه کتابخانه های com.android.support
Android Support Repository
Android SDK Platform  (نسخه ی android ۲۷ یا ۲۸) 

پس از کامل شدن بروزرسانی (که این کار زمان بر هست) دوباره به Tools-> Configure Path بروید و در کادر Android.jar به نسخه ی ۲۷ یا ۲۸ اندروید که در بروزرسانی بالا روی سیستم شما و در همان مسیر android-sdk-path و فولدر platforms قرار دارد آدرس بدهید.



گام آخر


بعد از این مراحل بیسیک4اندروید شما آماده است و می‌توانید بدون مشکل تداخل از ورژن دیگری از کتابخانه‌ی ۱.۴.۰ پوشه که برای این محیط از بیسیک4اندروید ارائه شده است استفاده کنید. تفاوت این کتابخانه با کتابخانه‌ای که از پنل قابل بارگیری است، در این است که کتابخانه‌های مورد نیاز (Gcm و ساپورت) در این نسخه bundle نشده‌اند و تنها به صورت dependency در فایل xml قرار داده شده‌اند (یعنی این نسخه فایل‌های jar موجود در نسخه‌ی اصلی را ندارد).


در واقع این کتابخانه به نحوی ایجاد شده است که در محیط نسخه‌ی ۸ b4a و با استفاده از sdk manager قابل استفاده باشید.


ببرای دانلود نسخه‌ی ۱.۴.۰ کتابخانه پوشه که بعد از انجام مراحل بالا در بیسیک۴اندروید ۸ قابل استفاده است، از این لینک استفاده کنید.


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


--------------

* موردی هم در نسخه‌ی اولیه‌ی کتابخانه‌ی ۱.۴.۰ پوشه وجود داشت که منجر می‌شد اعلان‌های json در برنامه‌ی شما خالی دریافت شوند که این مشکل نیز بعد از گزارش‌های اولیه اصلاح شد و کتابخانه موجود در پنل به روز رسانی شد تا دیگر این مشکل وجود نداشته باشد.

--------------


مثل همیشه، موفق باشید 💐