کتابخانه VirtualAPK اندروید
امکان نوشتن پلاگین برای اندروید
به همراه سورس کد پروژه
ایجاد قابلیت پلاگین پذیری از طرف یک اپلیکیشن، روشهای مختلفی دارد! اما روشی که VirtualAPK از آن استفاده میکند، این است که میتواند یک فایل APK را به صورت داینامیک (پویا) بارگزاری کند. سپس در این حالت توسعه دهندگان میتوانند از ریسورسها، اکتیویتیها، سرویسها، ریسورها، Provider و دیگرچیزهای موجود در داخل آن فایل APK به سادگی استفاده نمایند!
ویژگیهایی پشتیبانی شده توسط VirtualAPK
ویژگی | جزئیات |
کامپوننتهای پشتیبانی شده | Activity, Service, Receiver and Provider |
ثبت دستی کامپوننتها در AndroidManifest.xml | نیازی نیست |
دسترسی به کلاسها و ریسورسهای اپلیکیشن میزبان | پشتیبانی میشود |
PendingIntent | پشتیبانی میشود |
ویژگیهای اندروید پشتیبانی شده | تقریبا تمامی ویژگیها |
سازگاری | تقریبا با تمامی دستگاها |
Building system | Gradle plugin |
ورژن اندروید پشتیبانی شده | API Level 15+ |
شروع به کار: اپلیکیشن میزبان
ابتدا باید به buid.gradle پروژه رفته و سپس classpth زیر را به dependencies ها اضافه کنید:
dependencies { classpath 'com.didi.virtualapk:gradle:0.9.8.6' }
حالا باید به build.gradle ماژول اپلیکیشن رفته و پلاگین VirtualAPK مربوط به اپلیکیشن میزبان را اضافه کنید:
apply plugin: 'com.didi.virtualapk.host'
و در نهایت مورد زیر را هم به build.gradle ماژول اپلیکیشن dependencies و اضافه کنید:
compile 'com.didi.virtualapk:core:0.9.8'
یک کلاس اپلیکیشن ساخته و به Manifest اضافه کنید. سپس باید متد attachBaseContext را اورراید کرده و به صورت زیر VirtualAPK را داخل آن مقداردهی کنید:
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); PluginManager.getInstance(base).init(); }
مقادیر Proguard
در صورت استفاده از Proguard، موارد زیر را به آن اضافه کنید:
-keep class com.didi.virtualapk.internal.VAInstrumentation { *; } -keep class com.didi.virtualapk.internal.PluginContentResolver { *; } -dontwarn com.didi.virtualapk.** -dontwarn android.** -keep class android.** { *; }
مثال: لودکردن یک APK
در این مثال، ما یک پلاگینی را که به نام Test.apk در SDCard قرار دارد لود کرده، سپس برای مثال فرض کنیم نام پکیج پلاگین com.fullkade.test است و ما قصد داریم MainActivity آن را اجرا کنیم:
String pluginPath = Environment.getExternalStorageDirectory().getAbsolutePath().concat("/Test.apk"); File plugin = new File(pluginPath); PluginManager.getInstance(base).loadPlugin(plugin); Intent intent = new Intent(); intent.setClassName("com.fullkade.test", "com.fullkade.test.MainActivity"); startActivity(intent);
شروع به کار: ساخت یک پلاگین
ابتدا همانند قبل، باید به buid.gradle پروژه رفته و سپس classpth زیر را به dependencies ها اضافه کنید:
dependencies { classpath 'com.didi.virtualapk:gradle:0.9.8.6' }
حالا باید به build.gradle ماژول اپلیکیشن رفته و پلاگین VirtualAPK مربوط به پلاگین اپلیکیشن میزبان را اضافه کنید:
apply plugin: 'com.didi.virtualapk.plugin'
حالا باید کانفیگ یا پیکربرندی اولیه را انجام دهیم. بنابراین در همان build.gradle، کدهای زیر را به انتهای آن اضافه نمایید:
virtualApk { packageId = 0x6f // The package id of Resources. targetHost='source/host/app' // The path of application module in host project. applyHostMapping = true // [Optional] Default value is true. }
مشکلات شناخته شده
- اعلانها (نوتیفیکیشنها) با طرح سفارشی در پلاگین پشتیبانی نمیشوند.
- انیمیشنهای Transitionبا منابع انیمیشن، در پلاگین پشتیبانی نمیشوند.
◀️ راهنمای API کتابخانه در اینلینک قرار دارد؛ اما متاسفانه زبان آن چینی میباشد. 😀
نظرات ثبت شده بدون دیدگاه