Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
VirtualAPK
提交
3f725ee3
V
VirtualAPK
项目概览
门心叼龙
/
VirtualAPK
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VirtualAPK
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3f725ee3
编写于
3月 26, 2018
作者:
S
superq_sky
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactored TaskHookerManager.
上级
db38c198
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
68 addition
and
33 deletion
+68
-33
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
...lugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
+33
-1
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/TaskHookerManager.groovy
...roovy/com.didi.virtualapk/hooker/TaskHookerManager.groovy
+7
-23
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
...in/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
+3
-9
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/TaskUtil.groovy
...src/main/groovy/com.didi.virtualapk/utils/TaskUtil.groovy
+25
-0
未找到文件。
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
浏览文件 @
3f725ee3
package
com.didi.virtualapk
import
com.android.build.gradle.internal.api.ApplicationVariantImpl
import
com.didi.virtualapk.hooker.DxTaskHooker
import
com.didi.virtualapk.hooker.MergeAssetsHooker
import
com.didi.virtualapk.hooker.MergeJniLibsHooker
import
com.didi.virtualapk.hooker.MergeManifestsHooker
import
com.didi.virtualapk.hooker.PrepareDependenciesHooker
import
com.didi.virtualapk.hooker.ProcessResourcesHooker
import
com.didi.virtualapk.hooker.ProguardHooker
import
com.didi.virtualapk.hooker.TaskHookerManager
import
com.didi.virtualapk.transform.StripClassAndResTransform
import
com.didi.virtualapk.utils.FileBinaryCategory
...
...
@@ -63,7 +70,7 @@ class VAPlugin extends BasePlugin {
return
}
taskHookerManager
=
new
TaskHookerManager
(
project
,
instantiator
)
taskHookerManager
=
new
VA
TaskHookerManager
(
project
,
instantiator
)
taskHookerManager
.
registerTaskHookers
()
project
.
android
.
applicationVariants
.
each
{
ApplicationVariantImpl
variant
->
...
...
@@ -143,4 +150,29 @@ class VAPlugin extends BasePlugin {
}
}
}
static
class
VATaskHookerManager
extends
TaskHookerManager
{
VATaskHookerManager
(
Project
project
,
Instantiator
instantiator
)
{
super
(
project
,
instantiator
)
}
@Override
void
registerTaskHookers
()
{
android
.
applicationVariants
.
all
{
ApplicationVariantImpl
appVariant
->
if
(!
appVariant
.
buildType
.
name
.
equalsIgnoreCase
(
"release"
))
{
return
}
registerTaskHooker
(
instantiator
.
newInstance
(
PrepareDependenciesHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeAssetsHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeManifestsHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeJniLibsHooker
,
project
,
appVariant
))
// registerTaskHooker(instantiator.newInstance(ShrinkResourcesHooker, project, appVariant))
registerTaskHooker
(
instantiator
.
newInstance
(
ProcessResourcesHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
ProguardHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
DxTaskHooker
,
project
,
appVariant
))
}
}
}
}
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/TaskHookerManager.groovy
浏览文件 @
3f725ee3
...
...
@@ -14,13 +14,13 @@ import org.gradle.internal.reflect.Instantiator
*
* @author zhengtao
*/
public
class
TaskHookerManager
{
public
abstract
class
TaskHookerManager
{
pr
ivate
Map
<
String
,
GradleTaskHooker
>
taskHookerMap
=
new
HashMap
<>()
pr
otected
Map
<
String
,
GradleTaskHooker
>
taskHookerMap
=
new
HashMap
<>()
pr
ivate
Project
project
pr
ivate
AppExtension
android
pr
ivate
Instantiator
instantiator
pr
otected
Project
project
pr
otected
AppExtension
android
pr
otected
Instantiator
instantiator
public
TaskHookerManager
(
Project
project
,
Instantiator
instantiator
)
{
this
.
project
=
project
...
...
@@ -29,25 +29,9 @@ public class TaskHookerManager {
project
.
gradle
.
addListener
(
new
VirtualApkTaskListener
())
}
public
void
registerTaskHookers
()
{
android
.
applicationVariants
.
all
{
ApplicationVariantImpl
appVariant
->
if
(!
appVariant
.
buildType
.
name
.
equalsIgnoreCase
(
"release"
))
{
return
}
registerTaskHooker
(
instantiator
.
newInstance
(
PrepareDependenciesHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeAssetsHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeManifestsHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
MergeJniLibsHooker
,
project
,
appVariant
))
// registerTaskHooker(instantiator.newInstance(ShrinkResourcesHooker, project, appVariant))
registerTaskHooker
(
instantiator
.
newInstance
(
ProcessResourcesHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
ProguardHooker
,
project
,
appVariant
))
registerTaskHooker
(
instantiator
.
newInstance
(
DxTaskHooker
,
project
,
appVariant
))
}
}
public
abstract
void
registerTaskHookers
()
pr
ivate
void
registerTaskHooker
(
GradleTaskHooker
taskHooker
)
{
pr
otected
void
registerTaskHooker
(
GradleTaskHooker
taskHooker
)
{
taskHooker
.
setTaskHookerManager
(
this
)
taskHookerMap
.
put
(
taskHooker
.
taskName
,
taskHooker
)
}
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/tasks/AssemblePlugin.groovy
浏览文件 @
3f725ee3
...
...
@@ -2,6 +2,7 @@ package com.didi.virtualapk.tasks
import
com.android.annotations.NonNull
import
com.android.build.gradle.api.ApkVariant
import
com.didi.virtualapk.utils.TaskUtil
import
com.sun.istack.internal.NotNull
import
org.gradle.api.Action
import
org.gradle.api.DefaultTask
...
...
@@ -82,15 +83,8 @@ public class AssemblePlugin extends DefaultTask{
assemblePluginTask
.
dependsOn
(
variant
.
assemble
.
name
)
}
public
static
void
map
(
@NonNull
Task
task
,
@NonNull
String
key
,
@NonNull
Callable
<?>
value
)
{
if
(
task
instanceof
GroovyObject
)
{
ConventionMapping
conventionMapping
=
(
ConventionMapping
)
((
GroovyObject
)
task
).
getProperty
(
"conventionMapping"
);
conventionMapping
.
map
(
key
,
value
);
}
else
{
throw
new
IllegalArgumentException
(
"Don't know how to apply convention mapping to task of type "
+
task
.
getClass
().
getName
());
}
static
void
map
(
@NonNull
Task
task
,
@NonNull
String
key
,
@NonNull
Callable
<?>
value
)
{
TaskUtil
.
map
(
task
,
key
,
value
)
}
}
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/utils/TaskUtil.groovy
0 → 100644
浏览文件 @
3f725ee3
package
com.didi.virtualapk.utils
import
com.android.annotations.NonNull
import
org.gradle.api.Task
import
org.gradle.api.internal.ConventionMapping
import
java.util.concurrent.Callable
/**
* Created by qiaopu on 2018/3/19.
*/
public
class
TaskUtil
{
public
static
void
map
(
@NonNull
Task
task
,
@NonNull
String
key
,
@NonNull
Callable
<?>
value
)
{
if
(
task
instanceof
GroovyObject
)
{
ConventionMapping
conventionMapping
=
(
ConventionMapping
)
((
GroovyObject
)
task
).
getProperty
(
"conventionMapping"
);
conventionMapping
.
map
(
key
,
value
);
}
else
{
throw
new
IllegalArgumentException
(
"Don't know how to apply convention mapping to task of type "
+
task
.
getClass
().
getName
());
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录