Awesome
Droid Plugin
DroidPlugin is a new Plugin Framework developed and maintained by Andy Zhang( Fllow me at github ). It enables the host app run any third-party apk without installation, modification and repackage, which benefit a lot for collaborative development on Android.
Problems to be solved:
-
Unable to send
Notification
with custom Resources,eg:a. Notification with custom RemoteLayout, which means
Notification
'scontentView
,tickerView
,bigContentView
andheadsUpContentView
must be null.b. Notification with icon customized by R.drawable.XXX. The framework will transform it to Bitmap instead.
-
Unable to define specified
Intent Filter
for the plugged app'sService
、Activity
、BroadcastReceiver
andContentProvider
. So the plugged app is invisible for the outside system and app. -
Lack of
Hook
to theNative
layer, thus apk (e.g. a majority of game apps) withnative
code cannot be loaded as plugin.
Features:
- Compatible to Android 2.3 and later versions
- Given its .apk file, the plugged app could be run either independently or as plugin of the host, NO source code needed.
- Unnecessary to register the plugged app's
Service
、Activity
、BroadcastReceiver
、ContentProvider
in the host. - The plugged app are recognized as Installed by the host and other plugged apps
- Very low level of code invasion, in deed just one line code to integrate DroidPlugin into the host app.
- Complete code level separation between host and plugged apps, only system level message passing method provide by Android allowed.
- All system API supported
- Resources management are also completely separated between host and plugged apps.
- Process management for plugged apps, idle processed of the plugged app will be timely recycled to guarantee minimum memory usage.
- Static broadcast of plugged app will be treated as dynamic, thus the static broadcasting will never be trigger if the plugged app are not activated.
Usage:
Integrate with the host apps
It is very simple integrate Droid Plugin to your proejct:
-
Import Droid Plugin project to your project as a lib.
-
Include following attributes in host's
AndroidManifest.xml
:<application android:name="com.morgoo.droidplugin.PluginApplication" android:label="@string/app_name" android:icon="@drawable/ic_launcher" >
-
Or, if you use customized
Application
,add following code in the methodsonCreate
andattachBaseContext
:@Override public void onCreate() { super.onCreate(); PluginHelper.getInstance().applicationOnCreate(getBaseContext()); //must be after super.onCreate() } @Override protected void attachBaseContext(Context base) { PluginHelper.getInstance().applicationAttachBaseContext(base); super.attachBaseContext(base); }
-
Modify the
authorityName
value inLibraries\DroidPlugin\build.gradle
(suggested use your package name)
Install、Uninstall or Upgrade the plugged app:
-
Install/Upgrade, use this method:
int PluginManager.getInstance().installPackage(String filepath, int flags);
For installation,
filepath
set to path of the .apk file, andflags
set to 0.For upgrade,
filepath
set to path of the .apk file, andflags
set toPackageManagerCompat.INSTALL_REPLACE_EXISTING
. -
Uninstall, use this method:
int PluginManager.getInstance().deletePackage(String packageName,int flags);
packageName
is package name of the plugged app,flags = 0
。 -
Activate
Just use android's API, same for communication between components.
FAQ
Remark:
Please feel free to report bugs or ask for help via email. QQ Group:318901026
##Who is using Droid Plugin?
Thanks:
Translated by Ming Song(gnosoir@hotmail.com)