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

注意:目前有开发同学反馈,开启Instant Run时可能会出现运行时异常情况,请临时关掉此功能后再试。需要重新编译和安装之前因开启Instant Run的插件和宿主。我们正在为此做兼容处理。谢谢理解!

有关“混淆”

RePlugin的AAR自带Proguard文件,您无需关心,直接引入AAR即可生效。此外,其内部仅Keep了关键的接口类,大部分都是允许被混淆的,故对应用来说也没有影响。

第 1 步:添加 RePlugin Host Gradle 依赖

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

buildscript{

dependencies{

classpath'com.qihoo360.replugin:replugin-host-gradle:2.2.4'

...

}

}

第 2 步:添加 RePlugin Host Library 依赖

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

android{

// ATTENTION!!! Must CONFIG this to accord with Gradle's standard, and avoid some error

defaultConfig{

applicationId"com.qihoo360.replugin.sample.host"

...

}

...

}

// ATTENTION!!! Must be PLACED AFTER "android{}" to read the applicationId

apply plugin:'replugin-host-gradle'

/**

* 配置项均为可选配置,默认无需添加

* 更多可选配置项参见replugin-host-gradle的RepluginConfig类

* 可更改配置项参见 自动生成RePluginHostConfig.java

*/

repluginHostConfig{

/**

* 是否使用 AppCompat 库

* 不需要个性化配置时,无需添加

*/

useAppCompat=true

/**

* 背景不透明的坑的数量

* 不需要个性化配置时,无需添加

*/

countNotTranslucentStandard=6

countNotTranslucentSingleTop=2

countNotTranslucentSingleTask=3

countNotTranslucentSingleInstance=2

}

dependencies{

compile'com.qihoo360.replugin:replugin-host-lib:2.2.4'

...

}

务必注意

以下请务必注意:

请一定要确保符合Gradle开发规范,也即“必须将包名写在applicatonId”,而非AndroidManifest.xml中(通常从Eclipse迁移过来的项目可能出现此问题)。如果不这么写,则有可能导致运行时出现“Failed to find provider info for com.ss.android.auto.loader.p.main”的问题。具体可参见 #87 Issue的问答。

请将apply plugin: 'replugin-host-gradle'放在 android{} 块之后,防止出现无法读取applicationId,导致生成的坑位出现异常

如果您的应用需要支持AppComat,则除了在主程序中引入AppComat-v7包以外,还需要在宿主的build.gradle中添加下面的代码若不支持AppComat则请不要设置此项:

repluginHostConfig{

useAppCompat=true

}

开启useAppCompat后,我们会在编译期生成AppCompat专用坑位,这样插件若使用AppCompat的Theme时就能生效了。若不设置,则可能会出现“IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.”的异常。

如果您的应用需要个性化配置坑位数量,则需要在宿主的build.gradle中添加下面的代码:

repluginHostConfig{

/**

* 背景不透明的坑的数量

*/

countNotTranslucentStandard=6

countNotTranslucentSingleTop=2

countNotTranslucentSingleTask=3

countNotTranslucentSingleInstance=2

}

更多可选配置项参见replugin-host-gradle的RepluginConfig类

第 3 步:配置 Application 类

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

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

publicclassMainApplicationextendsRePluginApplication{

}

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

android:name=".MainApplication"

.../>

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

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

publicclassMainApplicationextendsApplication{

@Override

protectedvoidattachBaseContext(Contextbase){

super.attachBaseContext(base);

RePlugin.App.attachBaseContext(this);

....

}

@Override

publicvoidonCreate(){

super.onCreate();

RePlugin.App.onCreate();

....

}

@Override

publicvoidonLowMemory(){

super.onLowMemory();

/* Not need to be called if your application's minSdkVersion > = 14 */

RePlugin.App.onLowMemory();

....

}

@Override

publicvoidonTrimMemory(intlevel){

super.onTrimMemory(level);

/* Not need to be called if your application's minSdkVersion > = 14 */

RePlugin.App.onTrimMemory(level);

....

}

@Override

publicvoidonConfigurationChanged(Configurationconfig){

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()”方法的后面

接下来

如果您想马上着手开发插件,请移步到插件接入指南,跟随指引完成插件的开发

如果您想看下如何安装、运行插件,请移步到详细教程,了解更多玩法。

ss+android插件安装,主程序接入指南-RePlugin - Android插件化方案-面试哥相关推荐

  1. RePlugin 主程序接入指南

    RePlugin 主程序接入指南 只需三步,就能让您的"主程序"接入RePlugin: 注意:目前有开发同学反馈,开启Instant Run时可能会出现运行时异常情况,请临时关掉此 ...

  2. Tinker -- 微信Android热补丁方案 接入指南

    这两年来热修复对与移动开发是比较热门的话题,  HotFix  能做什么?他可以在用户无感知的情况下,后台修复出现的 bug,不需要通过升级发版新App,对用户体验来说是很大的提升,因为频繁发版的话, ...

  3. WEB之浏览器使用入门--chrome扩展插件安装及好用的扩展插件小集合

    chrome插件 chrome本身是浏览器,提供最基本的谷歌提供的浏览器相关的功能.但是仅仅有基本的chrome本体在很多时候使用还是会感到力不从心,对浏览器本身通过安装一些常用的扩展(extenti ...

  4. Android应用安装apk版本升级,适配Android 8.0和Android 10.0下载安装,shell命令安装APK

    shell命令安装 /*** 安装apk** @param path apk文件路径*/ public void installAPK(String path) {Log.i(TAG, "i ...

  5. Sublime插件安装与提高Verilog编写效率插件推荐

    前言 相对于Vivado与Quartus自带的编辑器,使用Sublime可以提高Verilog的编写效率.Sublime是可以自己编写插件并使用的,合理的运用插件可以提高开发Verilog生产力. 一 ...

  6. 【Android开发】Android入门安装与使用教程——以Android Studio3.6.1为例

    [Android开发]Android入门教程--以Android Studio3.6.1为例 1.为什么要学习Android 2.学习资源 3.安装Android Studio 3.1 下载安装包 3 ...

  7. Mac上的ps插件安装教程:苹果电脑ps插件怎么安装

    Mac上的ps插件如何安装? 很多朋友习惯了PC平台的PS使用,一旦转到Mac平台就变成了小白一个,其中很多ps插件完全不知道如何安装. 不要着急,小编今天就给大家带来Mac上的PS插件安装教程分享. ...

  8. AE插件安装教程——Optical Flares(镜头光晕插件)、红巨人粒子特效套装AE插件 Red Giant Trapcode Suite、Element 3D(E3D

    Optical Flares(镜头光晕插件) 红巨人粒子特效套装AE插件 Red Giant Trapcode Suite Element 3D(E3D) https://www.bilibili.c ...

  9. 使用IntelliJ IDEA 社区版开发Android 应用安装和设置指南

    要开始开发Android应用程序,必须建立一个合适的开发环境.它有助于开发人员使用创建应用程序所需的工具,并确保所有操作/流程以顺畅的方式进行.IDE(集成开发环境)是一个完整的应用程序套件,提供编写 ...

最新文章

  1. SpringMVC 整合新浪微博登录 Java SDK
  2. SAP 销售订单删除及如何查已删除的单
  3. matlab中fprintf函数的具体使用方法
  4. 华中科技大学2005年计算机组成原理试题,华中科技大学200年计算机组成原理考研试题.doc...
  5. qt opengl 2d绘图效率_Qt趣味开发之打造一个3D名字渲染小工具
  6. 工作流系统之三十四 集成用户系统
  7. 国际学术期刊会议大排名与常用的期刊会议名字
  8. Qt编译Mysql驱动
  9. JAVA一键获取文件名并对比Excel名单,看看谁没有交作业
  10. 调用企业微信接口发送微信消息
  11. [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)
  12. 48.XML保存衣服尺码信息
  13. 开启京东自动化领京豆
  14. 【nginx】nginx读书笔记
  15. php 抓取搜狗页面,爬虫解决方案之爬取“搜狗引擎”
  16. 苹果迄今最潮的产品:AirPods Max竟然有125种配色哦!
  17. 有一个母羊,第2年和第4年可以生一头小母羊,在第5年死去,小母羊在它出生的第2年和第4年生小母羊,第5年死去,求第N年有多少个母羊
  18. 管理计算机硬件设备并使用应用软件,计算机硬件管理的基本原则
  19. 实用函数-php数字转为汉字金额
  20. 什么是服务器?如何租用服务器?

热门文章

  1. onenet物联网平台使用
  2. MySQL原理 - InnoDB引擎 - 行记录存储 - Compact 行格式
  3. python抓取word中的图片并另存为
  4. 怀揣“年少梦”追赶自己成为00后网安的候补No.1篇文章
  5. VC修改C++工程名称的方法
  6. viewer动态加载图片第一次点击预览图片失败的问题
  7. 【GAMES104】Lecture2-游戏引擎五层架构
  8. 怎么使用PDF编辑软件,如何旋转PDF文件页面方向
  9. 在IIS中实现JSP
  10. 联想SureSAS 112新创建的卷无法正常读写处理