Skip to content

Commit 25544fd

Browse files
committed
Merge remote-tracking branch 'origin/dev'
2 parents a8abc74 + 6450cb6 commit 25544fd

File tree

12 files changed

+174
-87
lines changed

12 files changed

+174
-87
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
122122
plugins {
123123
//必须项 👇 apply 设置为 true 自动为所有module“预”配置debugMode,false则按下边步骤五的方式二
124-
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.4" apply true
124+
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.5" apply true
125125
}
126126
```
127127
<details>
@@ -131,7 +131,7 @@
131131
buildscript {
132132
dependencies {
133133
//必须项 👇
134-
classpath 'io.github.FlyJingFish.AndroidAop:android-aop-plugin:2.2.4'
134+
classpath 'io.github.FlyJingFish.AndroidAop:android-aop-plugin:2.2.5'
135135
}
136136
}
137137
// 👇加上这句自动为所有module“预”配置debugMode,不加则按下边步骤五的方式二
@@ -186,7 +186,7 @@
186186
//必须项 👇
187187
plugins {
188188
...
189-
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.4"//最好放在最后一行
189+
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.5"//最好放在最后一行
190190
}
191191
```
192192

@@ -212,18 +212,18 @@ plugins {
212212
213213
dependencies {
214214
//必须项 👇
215-
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-core:2.2.4'
215+
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-core:2.2.5'
216216
//非必须项 👇这个包提供了一些常见的注解切面
217-
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.4'
217+
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.5'
218218
219219
//必须项 👇如果您项目内已经有了这项不用加也可以
220220
implementation 'androidx.appcompat:appcompat:1.3.0' // 至少在1.3.0及以上
221221
222222
//非必须项 👇,如果你想自定义切面需要用到,⚠️支持Java和Kotlin代码写的切面
223-
ksp 'io.github.FlyJingFish.AndroidAop:android-aop-ksp:2.2.4'
223+
ksp 'io.github.FlyJingFish.AndroidAop:android-aop-ksp:2.2.5'
224224
225225
//非必须项 👇,如果你想自定义切面需要用到,⚠️只适用于Java代码写的切面
226-
annotationProcessor 'io.github.FlyJingFish.AndroidAop:android-aop-processor:2.2.4'
226+
annotationProcessor 'io.github.FlyJingFish.AndroidAop:android-aop-processor:2.2.5'
227227
//⚠️上边的 android-aop-ksp 和 android-aop-processor 二选一
228228
}
229229
```

README_EN.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Depend on the plug-in in <code>build.gradle</code> in the <strong>project root d
118118
119119
plugins {
120120
//Required item 👇 apply is set to true to automatically apply debugMode to all modules, if false, follow step 5 below.
121-
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.4" apply true
121+
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.5" apply true
122122
}
123123
```
124124
<details>
@@ -128,7 +128,7 @@ Depend on the plug-in in <code>build.gradle</code> in the <strong>project root d
128128
buildscript {
129129
dependencies {
130130
//Required items 👇
131-
classpath 'io.github.FlyJingFish.AndroidAop:android-aop-plugin:2.2.4'
131+
classpath 'io.github.FlyJingFish.AndroidAop:android-aop-plugin:2.2.5'
132132
}
133133
}
134134
//👇Add this sentence to automatically apply debugMode to all modules. If not, follow step 5 below.
@@ -176,7 +176,7 @@ Depend on the plug-in in <code>build.gradle</code> in the <strong>project root d
176176
//Required items 👇
177177
plugins {
178178
...
179-
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.4"
179+
id "io.github.FlyJingFish.AndroidAop.android-aop" version "2.2.5"
180180
}
181181
```
182182

@@ -206,17 +206,17 @@ plugins {
206206
207207
dependencies {
208208
//Required items 👇
209-
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-core:2.2.4'
209+
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-core:2.2.5'
210210
//Optional 👇This package provides some common annotation aspects
211-
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.4'
211+
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.5'
212212
213213
//Required item 👇If you already have this item in your project, you don’t need to add it.
214214
implementation 'androidx.appcompat:appcompat:1.3.0' // At least in 1.3.0 and above
215215
216216
//Optional 👇, if you want to customize aspects, you need to use them, ⚠️supports aspects written in Java and Kotlin code
217-
ksp 'io.github.FlyJingFish.AndroidAop:android-aop-ksp:2.2.4'
217+
ksp 'io.github.FlyJingFish.AndroidAop:android-aop-ksp:2.2.5'
218218
//Optional 👇, if you want to customize aspects, you need to use them, ⚠️only applies to aspects written in Java code
219-
annotationProcessor 'io.github.FlyJingFish.AndroidAop:android-aop-processor:2.2.4'
219+
annotationProcessor 'io.github.FlyJingFish.AndroidAop:android-aop-processor:2.2.5'
220220
//⚠️Choose one of the above android-aop-ksp and android-aop-processor
221221
}
222222
```
Lines changed: 8 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,37 @@
11
package com.flyjingfish.android_aop_plugin.plugin
22

3-
import com.flyjingfish.android_aop_plugin.config.RootBooleanConfig
43
import org.gradle.api.Plugin
54
import org.gradle.api.Project
65

76
abstract class BasePlugin :Plugin<Project> {
8-
private var reflectInvokeMethod = false
9-
private var reflectInvokeMethodOnlyDebug = false
10-
private var debugMode = false
11-
private var onlyDebug = false
12-
private var isIncremental = true
13-
private var buildConfig = true
7+
private lateinit var pluginConfig: PluginConfig
148
private fun init(project: Project){
15-
val reflectInvokeMethodStr = project.properties[RootBooleanConfig.REFLECT_INVOKE_METHOD.propertyName]?:"${RootBooleanConfig.REFLECT_INVOKE_METHOD.defaultValue}"
16-
val debugModeStr = project.properties[RootBooleanConfig.DEBUG_MODE.propertyName]?:"${RootBooleanConfig.DEBUG_MODE.defaultValue}"
17-
val onlyModeStr = project.properties[RootBooleanConfig.ONLY_DEBUG.propertyName]?:"${RootBooleanConfig.ONLY_DEBUG.defaultValue}"
18-
val isIncrementalStr = project.properties[RootBooleanConfig.INCREMENTAL.propertyName]?:"${RootBooleanConfig.INCREMENTAL.defaultValue}"
19-
val reflectInvokeMethodDebugStr = project.properties[RootBooleanConfig.REFLECT_INVOKE_METHOD_ONLY_DEBUG.propertyName]?:"${RootBooleanConfig.REFLECT_INVOKE_METHOD_ONLY_DEBUG.defaultValue}"
20-
val buildConfigStr = project.properties[RootBooleanConfig.BUILD_CONFIG.propertyName]?:"${RootBooleanConfig.BUILD_CONFIG.defaultValue}"
21-
debugMode = debugModeStr.toString() == "true"
22-
reflectInvokeMethod = reflectInvokeMethodStr.toString() == "true"
23-
onlyDebug = onlyModeStr.toString() == "true"
24-
isIncremental = isIncrementalStr.toString() == "true"
25-
reflectInvokeMethodOnlyDebug = reflectInvokeMethodDebugStr.toString() == "true"
26-
buildConfig = buildConfigStr.toString() == "true"
9+
pluginConfig = PluginConfig(project)
2710
}
2811

2912
fun isIncremental():Boolean{
30-
return isIncremental
13+
return pluginConfig.isIncremental()
3114
}
3215

3316
override fun apply(project: Project) {
3417
init(project)
3518
}
3619

3720
fun isDebugMode(buildTypeName :String?,variantName :String):Boolean{
38-
return if (debugMode){
39-
if (onlyDebug){
40-
if (buildTypeName != null){
41-
buildTypeName.lowercase() == "debug"
42-
}else{
43-
variantName.lowercase().contains("debug")
44-
}
45-
}else{
46-
true
47-
}
48-
}else{
49-
false
50-
}
21+
return pluginConfig.isDebugMode(buildTypeName, variantName)
5122
}
5223

5324
fun isReflectInvokeMethod(buildTypeName :String?,variantName :String):Boolean{
54-
return if (reflectInvokeMethod){
55-
if (reflectInvokeMethodOnlyDebug){
56-
if (buildTypeName != null){
57-
buildTypeName.lowercase() == "debug"
58-
}else{
59-
variantName.lowercase().contains("debug")
60-
}
61-
}else{
62-
true
63-
}
64-
}else{
65-
false
66-
}
25+
return pluginConfig.isReflectInvokeMethod(buildTypeName, variantName)
6726
}
6827

6928
fun isDebugMode():Boolean{
70-
return debugMode
29+
return pluginConfig.isDebugMode()
7130
}
7231
fun isReflectInvokeMethod():Boolean{
73-
return reflectInvokeMethod
32+
return pluginConfig.isReflectInvokeMethod()
7433
}
7534
fun hasBuildConfig():Boolean{
76-
return buildConfig
35+
return pluginConfig.hasBuildConfig()
7736
}
7837
}

android-aop-plugin/src/main/kotlin/com/flyjingfish/android_aop_plugin/plugin/CompilePlugin.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
4545
if (project.rootProject == project || root){
4646
return
4747
}
48+
val buildTypeName = "release"
49+
val variantName = "release"
4850
if (hasBuildConfig()){
4951
try {
5052
val javaPluginExtension = project.extensions.getByType(JavaPluginExtension::class.java)
@@ -75,6 +77,9 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
7577
project.tasks.register(DEBUG_MODE_FILE_TASK_NAME, DebugModeFileTask::class.java){
7678
it.debugModeDir = debugModeDir.absolutePath
7779
it.packageName = packageName
80+
it.variantName = variantName
81+
it.buildTypeName = buildTypeName
82+
it.isAndroidModule = false
7883
}
7984
project.afterEvaluate {
8085
project.tasks.findByName("compileJava")?.dependsOn(DEBUG_MODE_FILE_TASK_NAME)
@@ -102,8 +107,7 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
102107
}
103108
val compileKotlin = compileKotlinTask.get()
104109

105-
val buildTypeName = "release"
106-
val variantName = "release"
110+
107111

108112
val cacheDir = try {
109113
compileKotlin.destinationDirectory.get().asFile
@@ -183,7 +187,6 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
183187
null
184188
}
185189
val kotlinPath = cacheDir ?: File(project.buildDir.path + "/tmp/kotlin-classes/".adapterOSPath() + variantName)
186-
187190
doAopTask(project, isApp, variantName, buildTypeName, javaCompile, kotlinPath)
188191
}
189192
}
@@ -246,11 +249,15 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
246249
}
247250
}
248251
}
252+
val buildTypeName: String? = variant.buildType
249253
project
250254
.tasks
251255
.register("$DEBUG_MODE_FILE_TASK_NAME$variantNameCapitalized", DebugModeFileTask::class.java){
252256
it.debugModeDir = debugModeDir.absolutePath
253257
it.packageName = packageName
258+
it.variantName = variantName
259+
it.buildTypeName = buildTypeName
260+
it.isAndroidModule = true
254261
}
255262
}
256263
project.afterEvaluate {
@@ -269,7 +276,7 @@ class CompilePlugin(private val root:Boolean): BasePlugin() {
269276
if (srcDir.exists()){
270277
//说明这个才是真正的源码所在路径
271278
val packageFile = getPackageNameFile(srcDir,0)
272-
val relativePath = packageFile.getRelativePath(srcDir).replace(File.separator,".")
279+
val relativePath = packageFile.getRelativePath(srcDir).replace("/",".")
273280
return if (relativePath.endsWith(".")){
274281
relativePath.substring(0,relativePath.length-1)
275282
}else{
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.flyjingfish.android_aop_plugin.plugin
2+
3+
import com.flyjingfish.android_aop_plugin.config.RootBooleanConfig
4+
import org.gradle.api.Plugin
5+
import org.gradle.api.Project
6+
7+
class PluginConfig(private val project: Project) {
8+
private var reflectInvokeMethod = false
9+
private var reflectInvokeMethodOnlyDebug = false
10+
private var debugMode = false
11+
private var onlyDebug = false
12+
private var isIncremental = true
13+
private var buildConfig = true
14+
15+
init{
16+
val reflectInvokeMethodStr = project.properties[RootBooleanConfig.REFLECT_INVOKE_METHOD.propertyName]?:"${RootBooleanConfig.REFLECT_INVOKE_METHOD.defaultValue}"
17+
val debugModeStr = project.properties[RootBooleanConfig.DEBUG_MODE.propertyName]?:"${RootBooleanConfig.DEBUG_MODE.defaultValue}"
18+
val onlyModeStr = project.properties[RootBooleanConfig.ONLY_DEBUG.propertyName]?:"${RootBooleanConfig.ONLY_DEBUG.defaultValue}"
19+
val isIncrementalStr = project.properties[RootBooleanConfig.INCREMENTAL.propertyName]?:"${RootBooleanConfig.INCREMENTAL.defaultValue}"
20+
val reflectInvokeMethodDebugStr = project.properties[RootBooleanConfig.REFLECT_INVOKE_METHOD_ONLY_DEBUG.propertyName]?:"${RootBooleanConfig.REFLECT_INVOKE_METHOD_ONLY_DEBUG.defaultValue}"
21+
val buildConfigStr = project.properties[RootBooleanConfig.BUILD_CONFIG.propertyName]?:"${RootBooleanConfig.BUILD_CONFIG.defaultValue}"
22+
debugMode = debugModeStr.toString() == "true"
23+
reflectInvokeMethod = reflectInvokeMethodStr.toString() == "true"
24+
onlyDebug = onlyModeStr.toString() == "true"
25+
isIncremental = isIncrementalStr.toString() == "true"
26+
reflectInvokeMethodOnlyDebug = reflectInvokeMethodDebugStr.toString() == "true"
27+
buildConfig = buildConfigStr.toString() == "true"
28+
}
29+
30+
fun isIncremental():Boolean{
31+
return isIncremental
32+
}
33+
34+
fun isDebugMode(buildTypeName :String?,variantName :String):Boolean{
35+
return if (debugMode){
36+
if (onlyDebug){
37+
if (buildTypeName != null){
38+
buildTypeName.lowercase() == "debug"
39+
}else{
40+
variantName.lowercase().contains("debug")
41+
}
42+
}else{
43+
true
44+
}
45+
}else{
46+
false
47+
}
48+
}
49+
50+
fun isReflectInvokeMethod(buildTypeName :String?,variantName :String):Boolean{
51+
return if (reflectInvokeMethod){
52+
if (reflectInvokeMethodOnlyDebug){
53+
if (buildTypeName != null){
54+
buildTypeName.lowercase() == "debug"
55+
}else{
56+
variantName.lowercase().contains("debug")
57+
}
58+
}else{
59+
true
60+
}
61+
}else{
62+
false
63+
}
64+
}
65+
66+
fun isDebugMode():Boolean{
67+
return debugMode
68+
}
69+
fun isReflectInvokeMethod():Boolean{
70+
return reflectInvokeMethod
71+
}
72+
fun hasBuildConfig():Boolean{
73+
return buildConfig
74+
}
75+
}

android-aop-plugin/src/main/kotlin/com/flyjingfish/android_aop_plugin/tasks/DebugModeFileTask.kt

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.flyjingfish.android_aop_plugin.tasks
22

3+
import com.android.build.gradle.AppPlugin
4+
import com.flyjingfish.android_aop_plugin.config.AndroidAopConfig
5+
import com.flyjingfish.android_aop_plugin.plugin.BasePlugin
6+
import com.flyjingfish.android_aop_plugin.plugin.PluginConfig
7+
import com.flyjingfish.android_aop_plugin.utils.InitConfig
38
import com.flyjingfish.android_aop_plugin.utils.Utils
49
import com.flyjingfish.android_aop_plugin.utils.adapterOSPath
510
import com.flyjingfish.android_aop_plugin.utils.checkExist
@@ -15,10 +20,51 @@ import java.io.IOException
1520
abstract class DebugModeFileTask : DefaultTask() {
1621
@get:Input
1722
abstract var debugModeDir : String
23+
24+
@get:Input
25+
abstract var variantName : String
26+
27+
@get:Input
28+
abstract var isAndroidModule : Boolean
29+
30+
@get:Input
31+
abstract var buildTypeName : String?
32+
1833
@get:Input
1934
abstract var packageName : String?
35+
2036
@TaskAction
2137
fun taskAction() {
38+
val pluginConfig = PluginConfig(project)
39+
val exportFile :Boolean = if (isAndroidModule){
40+
val isApp = project.plugins.hasPlugin(AppPlugin::class.java)
41+
val androidAopConfig : AndroidAopConfig = if (isApp){
42+
project.extensions.getByType(AndroidAopConfig::class.java)
43+
}else{
44+
var config = InitConfig.optFromJsonString(
45+
InitConfig.readAsString(Utils.configJsonFile(project)),
46+
AndroidAopConfig::class.java)
47+
if (config == null){
48+
config = AndroidAopConfig()
49+
}
50+
config
51+
}
52+
53+
androidAopConfig.enabled && pluginConfig.isDebugMode(buildTypeName,variantName)
54+
}else{
55+
var config = InitConfig.optFromJsonString(
56+
InitConfig.readAsString(Utils.configJsonFile(project)),
57+
AndroidAopConfig::class.java)
58+
if (config == null){
59+
config = AndroidAopConfig()
60+
}
61+
config.enabled && pluginConfig.isDebugMode()
62+
}
63+
64+
if (!exportFile){
65+
return
66+
}
67+
2268
val packageName = this.packageName
2369
if (packageName.isNullOrEmpty() || packageName == "null"){
2470
return

docs/android_aop_extra.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
```groovy
55
dependencies {
66
//Optional 👇This package provides some common annotation aspects
7-
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.4'
7+
implementation 'io.github.FlyJingFish.AndroidAop:android-aop-extra:2.2.5'
88
}
99
```
1010

0 commit comments

Comments
 (0)