مدیریت فایل Manifest برنامه
در یک پروژه اندروید فایلی با نام Android Manifest وجود دارد که محلی برای مدیریت اکتیویتیهای برنامه میباشد. همچنین این فایل محلی برای تعریف permissions به برنامه است که در این درس به صورت تخصصی به این موارد پرداختهایم.
فهرست مطالب آموزش
فایل AndroidManifest
فایل AndroidManifest یک فایل XML است که برنامه را برای سیستم عامل و ماشین مجازی توصیف میکند.
نام این فایل همیشه AndroidManifest.xml است.
همانطور که میبینید این فایل همیشه در پروژه شما در قسمت ویو اندروید در فولدر App Manifest است.
همیشه تگ ریشهای فایل، Manifest نامگذاری میشود.
که شامل یک عنصر فرزند با نام application است، و همینطور میتواند عناصر فرزند دیگری هم داشته باشد.
تگ manifest با یک namespace با پیشوند اندروید شروع میشود. این پیشوند در قسمتهای مختلف فایل Manifest برنامه استفاده میشود.
ویژگی و خصیصه پکیج که در اینجا مشاهده میکنید به پکیج پیشفرض برنامه شما اشاره دارد، همچنین به عنوان آیدی برنامه شناخته میشود.
همونطور که قبلاً گفتم، این رشته در فایل build.gradle برنامه نیز ثبت میشود.
تگ application
تگ application جنبههای مختلف برنامه شما را کنترل میکند.
برای مثال، allowBackup مشخص میکند که دادههای برنامه شما توسط گوگل حمایت شوند یا نه.
ویژگی و خصیصه آیکن عنصر گرافیک برنامه شما را کنترل میکند، در واقع نشان دهنده همان آیکنی که روی صفحه اول و راهانداز نمایش گوشی یا دستگاه اندرویدی نشان داده میشود است.
Label رشتهای است که کاربر به عنوان نام برنامه میبیند.
supportsRtl میگوید که میخواهید موقع نوشتن تایپ از راست به چپ پشتیبانی شود یا نه.
Themes، در واقع تمی است که برای کل پروژه که مربوط به ظاهر برنامه میشود.
تگ activity
میبینید که بعضی از این ویژگیها در تگ اکتیویتی نیز تکرار شدند.
یک اکتیویتی نشان دهنده یک صفحه نمایش است.
بنابراین نام اکتیویتی نشان دهنده کلاس جاوایی است که عملکرد صفحه نمایش را مشخص میکند.
میتوانید با فشار دادن کلید کنترل در ویندوز و یا کامند در مک و کلیک کردن، وارد کلاس جاوا مربوطه شوید.
و باز label نشان دهنده برچسب برنامه در این صفحه نمایش است، در واقع همان نامی است که در بالا اکتیویتی نمایش داده میشود و theme هم همان تم مربوط به این اکتیویتی است.
تگ intent-filter
تگ intent-filter کمک میکند به تعیین زمانی که این اکتیویتی قرار است روی صفحه نمایش نشان داده شود.
پس یک اکتیویتی با تگ intent-filter که یک تگ action از MAIN و یک تگ category از LAUNCHER دارد، همان اکتیویتی اصلی برنامه یا اولین اکتیویتی نمایشی برنامه است.
در واقع موقع باز کردن برنامه این اکتیویتی اولین اکتیویتی یا صفحه نمایشی است که میبینیم.
تعریف permissions برای پروژه اندروید استودیو
به علاوه برای تگهای اکتیویتی، میتوانید یک مجوز یا permissions در فایل manifest تنظیم کنید.
این مجوزها به عنوان تگهای فرزند یا زیرشاخه تگ ریشه قرار میگیرند. دقت کنیم که این تگها را در کنار گزینه application قرار ندهیم و آنها باید بالاتر از این گزینه دقیقاً در این فضای خالی قرار بگیرند برای هر permission که میخواهید تهیه کنید، یک تگ uses-permission اضافه کنید.
توجه کنید وقتی حروف us را تایپ میکنید میبینید که یک uses-permission وجود دارد و بسرعت برای شما قابل نمایش میشود و در این ورژن جدید اندروید یکی به نام uses-permission-sdk-23 هم هست.
اگر بخواهید از همه ورژنهای اندروید پشتیبانی کنید، باید از uses-permission استفاده کنید.
و بعد یک نام برای permission انتخاب کنید. بنابراین برای مثال ACCESS_WIFI_STATE، که ممکن است کمی پایینتر لیست باشد، به شما اجازه میدهد کد جاوا برای بررسی وضعیت وایفای دستگاه اضافه کنید و اتفاقاتی را که در زمان تغییر وضعیت در سیستم پخش میشوند مدیریت کنید و به آنها گوش بدهید.
وقتی یک permission جدید اضافه میکنید، همیشه مطمئن شوید که تگ آنرا بستید.
ریفرمت کدها در اندروید استودیو (کلید میانبر)
من همیشه کدها را ریفرمت میکنم تا قابل خواندن شوند.
عمل ریفرمت کردن در ویندوز، با کلید های میانبر ctrl + alt + l انجام میشود.
بعد یک پیامی ظاهر میشود که میگوید یک تعداد مشخصی از خطوط فرمت شدند و در مک این کلید ها cmd + opt + l هستند.
به علاوه میتوانید از منوی Code و سپس Reformat Code این کار را انجام دهید.
حالا این کدی است که به ورژنهای قدیمیتر اندروید نزدیک شده. ولی برنامههایی که روی دستگاهایی با اندروید 6 یا مارشمالو اجرا میشوند میتوانند زمانی که کاربر بخواهد کارهایی که به permission نیاز دارند را انجام بدهد، پاسخگوی درخواستهای permission باشند. برای مثال، یک برنامه ممکن است به نوشتن تاریخ در تقویم دستگاه نیاز داشته باشد، که به یک permission خاص نیاز دارد، ولی کاربر تا زمانی که برنامه تلاش نکند آنرا انجام بدهد درخواست permission نمیدهد.
همچنین به label اکتیویتی اشاره میکنم که نشان دهنده رشتهای است که با آیکن لانچر در دستگاه نمایش داده میشود
حالا وقتی روی مقدار ویژگی label کلیک میکنم، نمایش آن تغییر میکند و یک سینتکس شناخته شده به عنوان آیدی منبع نشان داده میشود.
@string نوع منبع است، و app_name آیدی است.
میتوانید با فشار دادن کلید کنترل یا کامند و کلیک به آیدی منبع بروید.
وارد فایلی میشویم که این منبع را تعریف میکند، و کرسر جایی قرار میگیرد که منبع تعریف شده.
اجرا برنامه و اعمال تغییرات
حالا میخواهم در همین وضعیت فعلی یک اجرا از این برنامه روی Nexus 5X بگیرم. توجه کنید کلمه Hello World دوبار نمایش داده شده. یکبار در بالای صفحه نمایش در مکانی به نام اکشن بار، و یکبار هم در بدنه برنامه.
حالا به کدم برمیگردم و یکی از این دو رشته را تغییر میدهم.
من در فایل strings.xml کار میکنم.
رشته مربوط به app_name را به Hello from Android تغییر میدهم.
خب سیو میکنم و دوباره اجرا میگیرم. نتیجه را میبینید. رشتهای که تغییر دادم در اکشن بار نمایش داده شد نه در بدنه برنامه. بعداً چگونگی تغییر دادن آن را هم میگویم. حالا بقیه جاهایی که این رشته نشان داده میشود را نشان شما میدهم.
در دستگاه، به صفحه نمایش اصلی برمیگردم.
میبینید که آیکن برنامه در صفحه نمایش الان با رشته Hello from همان فرم کوتاه Hello from Android نشان داده شده.
اگر به لیست برنامهها بروم، میبینید که آن رشته با آیکن مربوطه در پایین لیست نشان داده میشود.
ولی باز میگویم، همه اینها از فایل Android Manifest سرچشمه میگیرند.
جمع بندی
فایل Android Manifest جایی است که اکتیویتیهای شما را تعریف میکنید و عملکرد آنها را کنترل میکنید و آنها را نمایش میدهید، و همینطور فایل Android Manifest جایی است که میتوانید مجوزهایی به برنامه خود بدهید که آن permissions اجازه اجرا تابعهای خاص را برای شما به راحتی صادر کند.
aksvare
درود
بسیار عالی بود
در صورت امکان توضیح دهید چگونه برنامهای را به گونهای ویرایش کنیم که در ورژنهای پایینتر اندروید هم نصب و اجرا شود. برای نمونه برنامه گوگل کیبورد که هماکنون از ورژن اندروید ۶ پایینتر نصب نمیشود را روی اندروید ۴ نصب کنیم.
سپاسگزارم
طهاکو
برای این کار، باید از نسخههای قدیمیتر برنامه استفاده کنید. در برخی موارد، نسخههای قدیمیتر برنامهها را میتوان روی دستگاههای جدید نصب کرد. اگر نسخه قدیمیتر برنامه را پیدا نکردید، میتوانید از سایتهای دانلود برنامههای قدیمی استفاده کنید. با این حال، توجه داشته باشید که استفاده از نسخههای قدیمیتر برنامهها ممکن است با مشکلات امنیتی همراه باشد.
در کل باید از نسخههای قدیمیتر اندروید استودیو استفاده کنید. در اندروید استودیو، شما میتوانید با تغییر minSdkVersion و targetSdkVersion برنامه خود را برای ورژنهای پایینتر اندروید نیز سازگار کنید.