【移动应用开发技术】Android插件化之RePlugin项目怎么用_第1页
【移动应用开发技术】Android插件化之RePlugin项目怎么用_第2页
【移动应用开发技术】Android插件化之RePlugin项目怎么用_第3页
【移动应用开发技术】Android插件化之RePlugin项目怎么用_第4页
【移动应用开发技术】Android插件化之RePlugin项目怎么用_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】Android插件化之RePlugin项目怎么用

1.什么是RePlugin?2.RePlugin有什么用?3.RePlugin官方介绍一、集成主工程buildscript

{

repositories

{

jcenter()

}

dependencies

{

classpath

'com.android.tools.build:gradle:2.3.3'

//

1、添加RePlugin

Host

Gradle依赖

classpath

'com.qihoo360.replugin:replugin-host-gradle:2.2.1'

}

}android

{

compileSdkVersion

26

buildToolsVersion

"26.0.1"

defaultConfig

{

applicationId

"cn.codingblock.repluginstudy"

minSdkVersion

21

targetSdkVersion

26

versionCode

1

versionName

"1.0"

testInstrumentationRunner

"android.support.test.runner.AndroidJUnitRunner"

}

buildTypes

{

release

{

minifyEnabled

false

proguardFiles

getDefaultProguardFile('proguard-android.txt'),

''

}

}

}

apply

plugin:

'replugin-host-gradle'//

集成

RePlugin

添加的配置

//

集成

RePlugin

添加的配置

repluginHostConfig

{

useAppCompat

=

true

//

如果项目需要支持

AppComat,则需要将此配置置为

true

//

如果应用需要个性化配置坑位数量,则需要添加以下代码进行配置

//

countNotTranslucentStandard

=

6

//

countNotTranslucentSingleTop

=

2

//

countNotTranslucentSingleTask

=

3

//

countNotTranslucentSingleInstance

=

2

}

dependencies

{

compile

fileTree(dir:

'libs',

include:

['*.jar'])

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',

{

exclude

group:

'com.android.support',

module:

'support-annotations'

})

compile

'com.android.support:appcompat-v7:26.+'

compile

'com.android.support.constraint:constraint-layout:1.0.2'

compile

'com.qihoo360.replugin:replugin-host-lib:2.2.1'

//

集成

RePlugin

添加的配置

testCompile

'junit:junit:4.12'

}countNotTranslucentStandard

=

6

countNotTranslucentSingleTop

=

2

countNotTranslucentSingleTask

=

3

countNotTranslucentSingleInstance

=

2public

class

MyApplication

extends

RePluginApplication

{

}public

class

MyApplication

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();

RePlugin.App.onLowMemory();

}

@Override

public

void

onTrimMemory(int

level)

{

super.onTrimMemory(level);

RePlugin.App.onTrimMemory(level);

}

@Override

public

void

onConfigurationChanged(Configuration

newConfig)

{

super.onConfigurationChanged(newConfig);

RePlugin.App.onConfigurationChanged(newConfig);

}

}二、集成插件buildscript

{

repositories

{

jcenter()

}

dependencies

{

classpath

'com.android.tools.build:gradle:2.3.3'

//

1、添加RePlugin

Host

Gradle依赖(主工程用)

classpath

'com.qihoo360.replugin:replugin-host-gradle:2.2.1'

//

2、添加RePlugin

Plugin

Gradle依赖(插件工程用)

classpath

'com.qihoo360.replugin:replugin-plugin-gradle:2.2.1'

}

}apply

plugin:

'com.android.application'

android

{

...

}

apply

plugin:

'replugin-plugin-gradle'

//

集成

RePlugin

添加的配置

dependencies

{

compile

fileTree(dir:

'libs',

include:

['*.jar'])

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',

{

exclude

group:

'com.android.support',

module:

'support-annotations'

})

compile

'com.android.support:appcompat-v7:26.+'

compile

'com.android.support.constraint:constraint-layout:1.0.2'

compile

'com.qihoo360.replugin:replugin-plugin-lib:2.2.1'

//

集成

RePlugin

添加的配置

testCompile

'junit:junit:4.12'

}三、管理插件PluginInfo

pluginInfo

=

RePlugin.install(Environment.getExternalStorageDirectory().getPath().toString()

+

"/plugin1.apk");

System.out.println(pluginInfo);/**

*

创建一个用来定向到插件组件的Intent

<p>

*

<p>

*

推荐用法:

<p>

*

<code>

*

Intent

in

=

RePlugin.createIntent("clean",

"com.qihoo360.mobilesafe.clean.CleanActivity");

*

</code>

<p>

*

当然,也可以用标准的Android创建方法:

<p>

*

<code>

*

Intent

in

=

new

Intent();

<p>

*

in.setComponent(new

ComponentName("clean",

"com.qihoo360.mobilesafe.clean.CleanActivity"));

*

</code>

*

*

@param

pluginName

插件名

*

@param

cls

目标全名

*

@return

可以被RePlugin识别的Intent

*

@since

1.0.0

*/

public

static

Intent

createIntent(String

pluginName,

String

cls)

{

Intent

in

=

new

Intent();

in.setComponent(createComponentName(pluginName,

cls));

return

in;

}

/**

*

开启一个插件的Activity

<p>

*

其中Intent的ComponentName的Key应为插件名(而不是包名),可使用createIntent方法来创建Intent对象

*

*

@param

context

Context对象

*

@param

intent

要打开Activity的Intent,其中ComponentName的Key必须为插件名

*

@return

插件Activity是否被成功打开?

*

FIXME

是否需要Exception来做?

*

@see

#createIntent(String,

String)

*

@since

1.0.0

*/

public

static

boolean

startActivity(Context

context,

Intent

intent)

{

//

TODO

先用旧的开启Activity方案,以后再优化

ComponentName

cn

=

intent.getComponent();

if

(cn

==

null)

{

//

TODO

需要支持Action方案

return

false;

}

String

plugin

=

cn.getPackageName();

String

cls

=

cn.getClassName();

return

Factory.startActivityWithNoInjectCN(context,

intent,

plugin,

cls,

IPluginManager.PROCESS_AUTO);

}Intent

intent

=

RePlugin.createIntent("Plugin1",

"cn.codingblock.plugin1.MainActivity");

if

(!RePlugin.startActivity(MainActivity.this,

intent))

{

Toast.makeText(mContext,

"启动失败",

Toast.LENGTH_LONG).show();

}10-30

16:21:02.464

20280-20280/cn.codingblock.repluginstudy

D/RePlugin.ws001:

start

activity:

intent=Intent

{

cmp=Plugin1/cn.codingblock.plugin1.MainActivity

}

plugin=Plugin1

activity=cn.codingblock.plugin1.MainActivity

process=-2147483648

10-30

16:21:02.464

20280-20280/cn.codingblock.repluginstudy

D/RePlugin.ws001:

start

activity:

intent=Intent

{

cmp=Plugin1/cn.codingblock.plugin1.MainActivity

}

plugin=Plugin1

activity=cn.codingblock.plugin1.MainActivity

process=-2147483648

download=true

10-30

16:21:02.464

20280-20280/cn.codingblock.repluginstudy

D/RePlugin.ws001:

plugin=Plugin1

not

found,

start

download

...

10-30

16:21:02.469

20280-20280/cn.codingblock.repluginstudy

D/RePlugin.ws001:

isNeedToDownload():

V5

file

not

exists.

Plugin

=

Plugin1卸载插件RePlugin.uninstall("Plugin1");10-30

16:31:21.988

5006-5006/cn.codingblock.repluginstudy

D/RePlugin.ws001:

MP.pluginUninstall

...

pluginName=Plugin1

10-30

16:31:21.988

5006-5006/cn.codingblock.repluginstudy

D/RePlugin.ws001:

Not

installed.

pluginName=Plugin110-30

16:41:46.179

10193-10193/cn.codingblock.repluginstudy

D/RePlugin.ws001:

MP.pluginUninstall

...

pluginName=cn.codingblock.plugin1

10-30

16:41:46.202

10193-10193/cn.codingblock.repluginstudy

D/RePlugin.ws001:

sendIntent

pr=cn.codingblock.repluginstudy

intent=Intent

{

act=ACTION_UNINSTALL_PLUGIN

(has

extras)

}

10-30

16:41:46.203

10193-10193/cn.codingblock.repluginstudy

D/RePlugin.ws001:

Clear

plugin

cache.

pn=cn.codingblock.plugin1

10-30

16:41:46.204

10193-10193/cn.codingblock.repluginstudy

D/Re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论