Skip to content

Commit 001dda0

Browse files
author
80002462
committed
plugin bug
1 parent 8800624 commit 001dda0

File tree

5 files changed

+58
-27
lines changed

5 files changed

+58
-27
lines changed

android/app/build.gradle

+24-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
apply plugin: 'com.android.application'
2-
//apply plugin: 'io.lecon.debug_tools.plugin'
2+
apply plugin: 'io.lecon.debug_tools.plugin'
33

44
android {
55
compileSdkVersion 26
@@ -17,6 +17,18 @@ android {
1717
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
1818
}
1919
}
20+
21+
flavorDimensions "default"
22+
23+
productFlavors {
24+
sit {
25+
26+
}
27+
28+
prod {
29+
30+
}
31+
}
2032
}
2133

2234
//debug_tools {
@@ -39,14 +51,14 @@ dependencies {
3951
// implementation 'io.lecon.debugtools:debugtools:1.0.5'
4052
}
4153

42-
//debug_tools {
43-
// database {
44-
// services {
45-
// path '/sdcard/services.db'
46-
// }
47-
// extra {
48-
// path '/sdcard/.fxg_waybill_rule/waybill_rule.db'
49-
//// password '"fengxiaoge123456"'
50-
// }
51-
// }
52-
//}
54+
debug_tools {
55+
database {
56+
services {
57+
path '/sdcard/services.db'
58+
}
59+
extra {
60+
path '/sdcard/.fxg_waybill_rule/waybill_rule.db'
61+
// password '"fengxiaoge123456"'
62+
}
63+
}
64+
}

android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ buildscript {
1111
dependencies {
1212
classpath 'com.android.tools.build:gradle:3.1.4'
1313
classpath 'com.novoda:bintray-release:0.8.0'
14-
// classpath 'io.lecon.debug_tools.plugin:plugin:1.0.0'
14+
classpath 'io.lecon.debugtools.plugin:debugtoolsplugin:1.0.9.1'
1515
// NOTE: Do not place your application dependencies here; they belong
1616
// in the individual module build.gradle files
1717
}

android/plugin/plugin/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ publish {
7575
userOrg = 'leconio'//bintray.com你的用户名
7676
groupId = 'io.lecon.debugtools.plugin'//jcenter上的路径
7777
artifactId = 'debugtoolsplugin'//项目名称
78-
publishVersion = '1.0.8'//版本号
78+
publishVersion = '1.0.9'//版本号
7979
desc = 'Tools help you ez code'//描述,不重要
8080
website = 'https://github.com/leconio/AndroidDebugTools.git'
8181
}

android/plugin/plugin/src/main/java/io/lecon/debugtools.plugin/PluginMain.kt

+31-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package io.lecon.debugtools.plugin
22

3-
import com.android.build.gradle.AppExtension
3+
import com.android.build.gradle.*
44
import com.android.build.gradle.api.BaseVariant
5+
import com.android.build.gradle.api.LibraryVariant
56
import com.squareup.javapoet.ClassName
67
import com.squareup.javapoet.JavaFile
78
import com.squareup.javapoet.MethodSpec
@@ -10,6 +11,7 @@ import groovy.util.XmlSlurper
1011
import io.lecon.debugtools.plugin.domain.DebugTools
1112
import org.gradle.api.Plugin
1213
import org.gradle.api.Project
14+
import org.gradle.api.UnknownDomainObjectException
1315
import org.gradle.api.plugins.ExtensionContainer
1416
import org.gradle.internal.reflect.Instantiator
1517
import org.gradle.invocation.DefaultGradle
@@ -23,8 +25,12 @@ import kotlin.reflect.KClass
2325
*/
2426
class PluginMain : Plugin<Project> {
2527

26-
private operator fun <T : Any> ExtensionContainer.get(type: KClass<T>): T {
27-
return getByType(type.java)
28+
private operator fun <T : Any> ExtensionContainer.get(type: KClass<T>): T? {
29+
try {
30+
return getByType(type.java)
31+
} catch (_ : UnknownDomainObjectException) {
32+
return null
33+
}
2834
}
2935

3036
private lateinit var project: Project
@@ -66,20 +72,32 @@ class PluginMain : Plugin<Project> {
6672
val javaFile = JavaFile.builder("io.lecon.debug_tools", helloWorld)
6773
.build()
6874

69-
project.extensions[AppExtension::class].apply {
70-
this.applicationVariants.all { variant ->
71-
val outputDir = project.buildDir.resolve(
72-
"generated/source/debug_tools/${variant.dirName}")
73-
javaFile.writeTo(outputDir)
74-
variant.outputs.all {
75-
project.tasks.create("generate${variant.name.capitalize()}ExtraDatabaseBuilder") {
76-
variant.registerJavaGeneratingTask(it, outputDir)
77-
}
78-
}
75+
project.extensions[AppExtension::class].let {
76+
it?.let { extension ->
77+
extension.applicationVariants.all { variant->
78+
getConfig(variant,javaFile)
79+
}
80+
}
81+
}
7982

83+
project.extensions[LibraryExtension::class].let {
84+
it?.let { extension ->
85+
extension.libraryVariants.all { variant ->
86+
getConfig(variant,javaFile)
87+
}
8088
}
8189
}
90+
}
8291

92+
private fun getConfig(variant: BaseVariant,javaFile: JavaFile) {
93+
val outputDir = project.buildDir.resolve(
94+
"generated/source/debug_tools/${variant.dirName}")
95+
javaFile.writeTo(outputDir)
96+
variant.outputs.all {
97+
project.tasks.create("generate${variant.name.capitalize()}ExtraDatabaseBuilder") {
98+
variant.registerJavaGeneratingTask(it, outputDir)
99+
}
100+
}
83101
}
84102

85103
private fun getPackageName(variant: BaseVariant): String {

android/plugin/publish.sh

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./gradlew clean build bintrayUpload -PbintrayUser=$BINTRAY_USER -PbintrayKey=$BINTRAY_API_KEY -PdryRun=false

0 commit comments

Comments
 (0)