RePlugin主程序接入

来源:互联网 发布:百度云如何上传源码 编辑:程序博客网 时间:2024/05/16 14:55

官方GitHub Wiki《主程序接入指南》

只需三步,就能让您的“主程序”接入RePlugin:

第 1 步:添加 RePlugin Host Gradle 依赖

在项目根目录的 build.gradle(注意:不是 app/build.gradle) 中添加 replugin-host-gradle 依赖:

buildscript {    dependencies {        classpath 'com.qihoo360.replugin:replugin-host-gradle:2.1.0'        ...    }}

第 2 步:添加 RePlugin Host Library 依赖

在 app/build.gradle 中应用 replugin-host-gradle 插件,并添加 replugin-host-lib 依赖:

apply plugin: 'replugin-host-gradle'dependencies {    compile 'com.qihoo360.replugin:replugin-host-lib:2.1.0'    ...}

第 3 步:配置 Application 类

让工程的 Application 直接继承自 RePluginApplication。

如果您的工程已有Application类,则可以将基类切换到RePluginApplication即可。或者您也可以用“非继承式”接入。

public class MainApplication extends RePluginApplication {}

既然声明了Application,自然还需要在AndroidManifest中配置这个Application。

    <application        android:name=".MainApplication"        ... />

备选:“非继承式”配置Application

若您的应用对Application类继承关系的修改有限制,或想自定义RePlugin加载过程(慎用!),则可以直接调用相关方法来使用RePlugin。

public class MainApplication extends Application {    @Override    protected void attachBaseContext(Context base) {        super.attachBaseContext(base);        RePlugin.App.attachBaseContext(this);        ....    }    @Override    public void onCreate() {        super.onCreate();        RePlugin.App.onCreate();        ....    }    @Override    public void onLowMemory() {        super.onLowMemory();        /* Not need to be called if your application's minSdkVersion > = 14 */        RePlugin.App.onLowMemory();        ....    }    @Override    public void onTrimMemory(int level) {        super.onTrimMemory(level);        /* Not need to be called if your application's minSdkVersion > = 14 */        RePlugin.App.onTrimMemory(level);        ....    }    @Override    public void onConfigurationChanged(Configuration config) {        super.onConfigurationChanged(config);        /* Not need to be called if your application's minSdkVersion > = 14 */        RePlugin.App.onConfigurationChanged(config);        ....    }}

针对“非继承式”的注意点

  • 所有方法必须在UI线程来“同步”调用。切勿放到工作线程,或者通过post方法来执行
  • 所有方法必须一一对应,例如 RePlugin.App.attachBaseContext 方法只在Application.attachBaseContext中调用
  • 请将RePlugin.App的调用方法,放在“仅次于super.xxx()”方法的后面

实际接入过程中碰到的问题

1.下载RePlugin依赖包出错:

D:\jeff_workspace\TestRePlugin\app\build.gradleError:(33, 13) Failed to resolve: com.qihoo360.replugin:replugin-host-lib:2.1.0

解决过程:查看官方Sample源码中的build.gradle发现问题所在,需要在project下的build.gradle文件中添加以下代码:

//buildscript repositories以及allprojects repositories中添加RePlugin Repositorymaven {    url  "https://dl.bintray.com/qihoo360/replugin"}
  1. Gradle构建出现以下错误:
Execution failed for task ':app:processDebugResources'.> D:\jeff_workspace\TestRePlugin\app\src\main\assets\plugins

解决过程:在Github Issues中发现#48也提到了这个问题,解决办法在里面已经给出:

在 assets 下新建文件夹 plugins
原创粉丝点击