动态apk插件化框架(Android 5.0+)
项目根目录
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
模块目录
dependencies {
implementation 'com.github.lavalike:plugin-manager:0.0.8.1'
}
public interface Plugin {
void loadAsset(String path);
void loadAsset(String path, PluginLoadCallback callback);
void load(String path);
void load(String path, PluginLoadCallback callback);
void startActivity(String className);
void startActivity();
}
PluginManager.getInstance().load(path, new PluginLoadCallback() {
@Override
public void onSuccess() {
PluginManager.getInstance().startActivity();
}
@Override
public void onFail(String error) {
}
});
- 插件Activity需继承 PluginBaseActivity
- 暂不支持插件Application的初始化,请正确处理相关逻辑
public class PluginBaseActivity extends FragmentActivity {
@Override
public Resources getResources() {
Resources resources = PluginManager.getInstance().getPluginResources();
return resources != null ? resources : super.getResources();
}
@Override
public AssetManager getAssets() {
AssetManager assets = PluginManager.getInstance().getAssets();
return assets != null ? assets : super.getAssets();
}
@Override
public Resources.Theme getTheme() {
Resources.Theme theme = PluginManager.getInstance().getTheme();
return theme != null ? theme : super.getTheme();
}
}
public class BaseActivity extends PluginBaseActivity {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
}
}