Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
virtualapk
提交
e6174132
V
virtualapk
项目概览
DiDi
/
virtualapk
8 个月 前同步成功
通知
63
Star
8886
Fork
1530
代码
文件
提交
分支
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,体验更适合开发者的 AI 搜索 >>
提交
e6174132
编写于
5月 23, 2018
作者:
S
superq_sky
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimized log.
上级
03178da2
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
54 addition
and
17 deletion
+54
-17
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/BasePlugin.groovy
...gin/src/main/groovy/com.didi.virtualapk/BasePlugin.groovy
+3
-3
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
...n/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
+6
-4
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
...lugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
+1
-1
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/HostJniLibsCollector.groovy
...com.didi.virtualapk/collector/HostJniLibsCollector.groovy
+1
-1
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/dependence/AarDependenceInfo.groovy
....virtualapk/collector/dependence/AarDependenceInfo.groovy
+7
-0
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/dependence/JarDependenceInfo.groovy
....virtualapk/collector/dependence/JarDependenceInfo.groovy
+2
-0
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
...m.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
+4
-0
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/transform/StripClassAndResTransform.groovy
...idi.virtualapk/transform/StripClassAndResTransform.groovy
+4
-3
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/transform/TransformWrapper.groovy
...ovy/com.didi.virtualapk/transform/TransformWrapper.groovy
+5
-4
virtualapk-gradle-plugin/src/main/java/com/didi/virtualapk/databinding/annotationprocessor/ProcessDataBinding.java
...k/databinding/annotationprocessor/ProcessDataBinding.java
+3
-1
virtualapk-gradle-plugin/src/main/java/com/didi/virtualapk/utils/Log.java
...e-plugin/src/main/java/com/didi/virtualapk/utils/Log.java
+18
-0
未找到文件。
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/BasePlugin.groovy
浏览文件 @
e6174132
...
...
@@ -57,7 +57,7 @@ public abstract class BasePlugin implements Plugin<Project> {
Object
invoke
(
Object
proxy
,
Method
method
,
Object
[]
args
)
throws
Throwable
{
if
(
'preVariantWork'
==
method
.
name
)
{
checkVariantFactoryInvoked
=
true
Log
.
i
'Plugin'
,
"Evaluating VirtualApk's configurations..."
Log
.
i
'
VA
Plugin'
,
"Evaluating VirtualApk's configurations..."
boolean
isBuildingPlugin
=
evaluateBuildingPlugin
(
appPlugin
,
project
)
beforeCreateAndroidTasks
(
isBuildingPlugin
)
}
...
...
@@ -127,7 +127,7 @@ public abstract class BasePlugin implements Plugin<Project> {
}
// pluginTasks.each {
// Log.i 'Plugin', "pluginTask: ${it}"
// Log.i '
VA
Plugin', "pluginTask: ${it}"
// }
boolean
isBuildingPlugin
=
false
...
...
@@ -135,7 +135,7 @@ public abstract class BasePlugin implements Plugin<Project> {
targetTasks
.
every
{
String
taskName
=
nameMatcher
.
find
(
it
,
pluginTasks
)
if
(
taskName
!=
null
)
{
// Log.i 'Plugin', "Found task name '${taskName}' by given name '${it}'"
// Log.i '
VA
Plugin', "Found task name '${taskName}' by given name '${it}'"
isBuildingPlugin
=
true
return
false
}
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAHostPlugin.groovy
浏览文件 @
e6174132
...
...
@@ -8,6 +8,7 @@ import com.android.build.gradle.internal.publishing.AndroidArtifacts
import
com.android.build.gradle.internal.transforms.ProGuardTransform
import
com.android.build.gradle.tasks.ProcessAndroidResources
import
com.didi.virtualapk.utils.FileUtil
import
com.didi.virtualapk.utils.Log
import
org.gradle.api.Plugin
import
org.gradle.api.Project
import
org.gradle.api.artifacts.component.ComponentIdentifier
...
...
@@ -23,8 +24,9 @@ import org.gradle.api.artifacts.component.ProjectComponentIdentifier
*/
public
class
VAHostPlugin
implements
Plugin
<
Project
>
{
public
static
final
String
TAG
=
'VAHostPlugin'
Project
project
File
vaHostDir
;
File
vaHostDir
@Override
public
void
apply
(
Project
project
)
{
...
...
@@ -33,7 +35,7 @@ public class VAHostPlugin implements Plugin<Project> {
//The target project must be a android application module
if
(!
project
.
plugins
.
hasPlugin
(
'com.android.application'
))
{
System
.
err
.
println
(
"application required!"
);
Log
.
e
(
TAG
,
"application required!"
)
return
;
}
...
...
@@ -83,9 +85,9 @@ public class VAHostPlugin implements Plugin<Project> {
FileUtil
.
saveFile
(
vaHostDir
,
"versions"
,
{
List
<
String
>
deps
=
new
ArrayList
<
String
>()
println
"Used compileClasspath: ${applicationVariant.name}"
Log
.
i
TAG
,
"Used compileClasspath: ${applicationVariant.name}"
Set
<
ArtifactDependencyGraph
.
HashableResolvedArtifactResult
>
compileArtifacts
=
ArtifactDependencyGraph
.
getAllArtifacts
(
applicationVariant
.
variantData
.
scope
,
AndroidArtifacts
.
ConsumedConfigType
.
COMPILE_CLASSPATH
,
null
)
;
applicationVariant
.
variantData
.
scope
,
AndroidArtifacts
.
ConsumedConfigType
.
COMPILE_CLASSPATH
,
null
)
compileArtifacts
.
each
{
ArtifactDependencyGraph
.
HashableResolvedArtifactResult
artifact
->
ComponentIdentifier
id
=
artifact
.
id
.
componentIdentifier
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/VAPlugin.groovy
浏览文件 @
e6174132
...
...
@@ -53,7 +53,7 @@ class VAPlugin extends BasePlugin {
protected
void
beforeCreateAndroidTasks
(
boolean
isBuildingPlugin
)
{
this
.
isBuildingPlugin
=
isBuildingPlugin
if
(!
isBuildingPlugin
)
{
Log
.
i
'Plugin'
,
"Skipped all VirtualApk's configurations!"
Log
.
i
'
VA
Plugin'
,
"Skipped all VirtualApk's configurations!"
return
}
stripClassAndResTransform
=
new
StripClassAndResTransform
(
project
)
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/HostJniLibsCollector.groovy
浏览文件 @
e6174132
...
...
@@ -120,7 +120,7 @@ class HostJniLibsCollector {
@NonNull
File
file
,
@NonNull
String
path
,
@NonNull
AarDependenceInfo
aarDependenceInfo
,
@NonNull
ListMultimap
<
String
,
QualifiedContent
>
content
)
{
@NonNull
ListMultimap
<
String
,
DependenceInfo
>
content
)
{
File
[]
children
=
file
.
listFiles
(
new
FilenameFilter
()
{
@Override
public
boolean
accept
(
File
f
,
String
name
)
{
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/dependence/AarDependenceInfo.groovy
浏览文件 @
e6174132
...
...
@@ -6,6 +6,7 @@ import com.android.builder.model.AndroidLibrary
import
com.android.utils.FileUtils
import
com.didi.virtualapk.collector.res.ResourceEntry
import
com.didi.virtualapk.collector.res.StyleableEntry
import
com.didi.virtualapk.utils.Log
import
com.google.common.collect.ArrayListMultimap
import
com.google.common.collect.ListMultimap
import
com.google.common.collect.Lists
...
...
@@ -39,6 +40,7 @@ class AarDependenceInfo extends DependenceInfo {
@Override
File
getJarFile
()
{
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s jar file: ${library.jarFile}"
return
library
.
jarFile
}
...
...
@@ -48,14 +50,17 @@ class AarDependenceInfo extends DependenceInfo {
}
File
getAssetsFolder
()
{
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s assets folder: ${library.assetsFolder}"
return
library
.
assetsFolder
}
File
getJniFolder
()
{
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s jni folder: ${library.jniFolder}"
return
library
.
jniFolder
}
Collection
<
File
>
getLocalJars
()
{
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s local jars: ${library.localJars}"
return
library
.
localJars
}
...
...
@@ -73,6 +78,7 @@ class AarDependenceInfo extends DependenceInfo {
rSymbol
=
FileUtils
.
join
(
intermediatesDir
,
TaskManager
.
DIR_BUNDLES
,
library
.
projectVariant
,
SdkConstants
.
FN_RESOURCE_TEXT
)
}
if
(
rSymbol
.
exists
())
{
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s symbol file: ${rSymbol}"
rSymbol
.
eachLine
{
line
->
if
(!
line
.
empty
)
{
def
tokenizer
=
new
StringTokenizer
(
line
)
...
...
@@ -101,6 +107,7 @@ class AarDependenceInfo extends DependenceInfo {
// module library
manifest
=
FileUtils
.
join
(
intermediatesDir
,
'manifests'
,
'full'
,
library
.
projectVariant
,
SdkConstants
.
ANDROID_MANIFEST_XML
)
}
Log
.
i
'AarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s manifest file: ${manifest}"
def
xmlManifest
=
new
XmlParser
().
parse
(
manifest
)
return
xmlManifest
.
@package
}
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/collector/dependence/JarDependenceInfo.groovy
浏览文件 @
e6174132
package
com.didi.virtualapk.collector.dependence
import
com.android.builder.model.JavaLibrary
import
com.didi.virtualapk.utils.Log
/**
* Represents a Jar library. This could be the output of a Java project.
...
...
@@ -18,6 +19,7 @@ class JarDependenceInfo extends DependenceInfo {
@Override
File
getJarFile
()
{
Log
.
i
'JarDependenceInfo'
,
"Found [${library.resolvedCoordinates}]'s jar file: ${library.jarFile}"
return
library
.
jarFile
}
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/hooker/PrepareDependenciesHooker.groovy
浏览文件 @
e6174132
...
...
@@ -73,6 +73,7 @@ class PrepareDependenciesHooker extends GradleTaskHooker<AppPreBuildTask> {
dependencies
.
libraries
.
each
{
def
mavenCoordinates
=
it
.
resolvedCoordinates
if
(
hostDependencies
.
contains
(
"${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}"
))
{
Log
.
i
'PrepareDependenciesHooker'
,
"Need strip aar: ${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}:${mavenCoordinates.version}"
stripDependencies
.
add
(
new
AarDependenceInfo
(
mavenCoordinates
.
groupId
,
...
...
@@ -81,6 +82,7 @@ class PrepareDependenciesHooker extends GradleTaskHooker<AppPreBuildTask> {
it
))
}
else
{
Log
.
i
'PrepareDependenciesHooker'
,
"Need retain aar: ${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}:${mavenCoordinates.version}"
retainedAarLibs
.
add
(
new
AarDependenceInfo
(
mavenCoordinates
.
groupId
,
...
...
@@ -93,6 +95,7 @@ class PrepareDependenciesHooker extends GradleTaskHooker<AppPreBuildTask> {
dependencies
.
javaLibraries
.
each
{
def
mavenCoordinates
=
it
.
resolvedCoordinates
if
(
hostDependencies
.
contains
(
"${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}"
))
{
Log
.
i
'PrepareDependenciesHooker'
,
"Need strip jar: ${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}:${mavenCoordinates.version}"
stripDependencies
.
add
(
new
JarDependenceInfo
(
mavenCoordinates
.
groupId
,
...
...
@@ -100,6 +103,7 @@ class PrepareDependenciesHooker extends GradleTaskHooker<AppPreBuildTask> {
mavenCoordinates
.
version
,
it
))
}
else
{
Log
.
i
'PrepareDependenciesHooker'
,
"Need retain jar: ${mavenCoordinates.groupId}:${mavenCoordinates.artifactId}:${mavenCoordinates.version}"
retainedJarLib
.
add
(
new
JarDependenceInfo
(
mavenCoordinates
.
groupId
,
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/transform/StripClassAndResTransform.groovy
浏览文件 @
e6174132
...
...
@@ -66,10 +66,10 @@ class StripClassAndResTransform extends Transform {
transformInvocation
.
inputs
.
each
{
it
.
directoryInputs
.
each
{
directoryInput
->
//
Log.i 'StripClassAndResTransform', "input dir: ${directoryInput.file.absoluteFile}"
Log
.
i
'StripClassAndResTransform'
,
"input dir: ${directoryInput.file.absoluteFile}"
def
destDir
=
transformInvocation
.
outputProvider
.
getContentLocation
(
directoryInput
.
name
,
directoryInput
.
contentTypes
,
directoryInput
.
scopes
,
Format
.
DIRECTORY
)
//
Log.i 'StripClassAndResTransform', "output dir: ${destDir.absoluteFile}"
Log
.
i
'StripClassAndResTransform'
,
"output dir: ${destDir.absoluteFile}"
directoryInput
.
file
.
traverse
(
type:
FileType
.
FILES
)
{
def
entryName
=
it
.
path
.
substring
(
directoryInput
.
file
.
path
.
length
()
+
1
)
// Log.i 'StripClassAndResTransform', "found file: ${it.absoluteFile}"
...
...
@@ -85,11 +85,12 @@ class StripClassAndResTransform extends Transform {
}
it
.
jarInputs
.
each
{
jarInput
->
// Log.i 'StripClassAndResTransform', "${name}
jar: ${jarInput.file.absoluteFile}"
Log
.
i
'StripClassAndResTransform'
,
"input
jar: ${jarInput.file.absoluteFile}"
Set
<
String
>
jarEntries
=
HostClassAndResCollector
.
unzipJar
(
jarInput
.
file
)
if
(!
stripEntries
.
containsAll
(
jarEntries
)){
def
dest
=
transformInvocation
.
outputProvider
.
getContentLocation
(
jarInput
.
name
,
jarInput
.
contentTypes
,
jarInput
.
scopes
,
Format
.
JAR
)
Log
.
i
'StripClassAndResTransform'
,
"output jar: ${dest.absoluteFile}"
FileUtils
.
copyFile
(
jarInput
.
file
,
dest
)
// Log.i 'StripClassAndResTransform', "Copied to jar: ${dest.absoluteFile}"
}
else
{
...
...
virtualapk-gradle-plugin/src/main/groovy/com.didi.virtualapk/transform/TransformWrapper.groovy
浏览文件 @
e6174132
package
com.didi.virtualapk.transform
import
com.android.build.api.transform.*
import
com.didi.virtualapk.utils.Log
public
class
TransformWrapper
extends
Transform
{
...
...
@@ -75,20 +76,20 @@ public class TransformWrapper extends Transform {
Collection
<
TransformInput
>
inputs
=
invocation
.
getInputs
()
for
(
TransformInput
input
:
inputs
)
{
for
(
DirectoryInput
directoryInput
:
input
.
getDirectoryInputs
())
{
println
"input dir: ${directoryInput.getFile()}"
Log
.
i
"${name}"
,
"input dir: ${directoryInput.getFile()}"
}
for
(
JarInput
jarInput
:
input
.
getJarInputs
())
{
println
"input jar: ${jarInput.getFile()}"
Log
.
i
"${name}"
,
"input jar: ${jarInput.getFile()}"
}
}
Collection
<
TransformInput
>
referencedInputs
=
invocation
.
getReferencedInputs
();
for
(
TransformInput
transformInput
:
referencedInputs
)
{
for
(
DirectoryInput
directoryInput
:
transformInput
.
getDirectoryInputs
())
{
println
"referenced input dir: ${directoryInput.getFile()}"
Log
.
i
"${name}"
,
"referenced input dir: ${directoryInput.getFile()}"
}
for
(
JarInput
jarInput
:
transformInput
.
getJarInputs
())
{
println
"referenced input jar: ${jarInput.getFile()}"
Log
.
i
"${name}"
,
"referenced input jar: ${jarInput.getFile()}"
}
}
...
...
virtualapk-gradle-plugin/src/main/java/com/didi/virtualapk/databinding/annotationprocessor/ProcessDataBinding.java
浏览文件 @
e6174132
...
...
@@ -16,6 +16,8 @@
package
com.didi.virtualapk.databinding.annotationprocessor
;
import
com.didi.virtualapk.utils.Log
;
import
java.io.BufferedReader
;
import
java.io.BufferedWriter
;
import
java.io.Closeable
;
...
...
@@ -100,7 +102,7 @@ public class ProcessDataBinding extends AbstractProcessor {
writer
.
newLine
();
}
System
.
out
.
print
(
"Generated java source file: "
+
DATA_BINDER_MAPPER_PACKAGE
+
"."
+
className
);
Log
.
i
(
"ProcessDataBinding"
,
"Generated java source file: "
+
DATA_BINDER_MAPPER_PACKAGE
+
"."
+
className
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
virtualapk-gradle-plugin/src/main/
groovy/com.didi.virtualapk/utils/LogUtil.groovy
→
virtualapk-gradle-plugin/src/main/
java/com/didi/virtualapk/utils/Log.java
浏览文件 @
e6174132
package
com.didi.virtualapk.utils
package
com.didi.virtualapk.utils
;
public
final
class
Log
{
...
...
@@ -7,8 +7,12 @@ public final class Log {
}
public
static
int
i
(
String
tag
,
String
msg
)
{
println
"[INFO][${tag}] ${msg}"
return
0
System
.
out
.
println
(
"[INFO]["
+
tag
+
"] "
+
msg
);
return
0
;
}
public
static
int
e
(
String
tag
,
String
msg
)
{
System
.
err
.
println
(
"[ERROR]["
+
tag
+
"] "
+
msg
);
return
0
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录