From f2c40728c3c950277c55c3953eefe79938973c99 Mon Sep 17 00:00:00 2001 From: kale Date: Sat, 9 Apr 2016 17:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86UiBlock=E7=9A=84grad?= =?UTF-8?q?le=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 51 +----------- .../java/kale/ui/block/DemoTopUiBlock.java | 5 +- build.gradle | 20 +++-- lib/build.gradle | 42 +++++++--- lib/proguard-rules.pro | 17 ++++ .../1.0.0/uiblock-gradle-plugin-1.0.0.jar | Bin 0 -> 8237 bytes .../1.0.0/uiblock-gradle-plugin-1.0.0.jar.md5 | 1 + .../uiblock-gradle-plugin-1.0.0.jar.sha1 | 1 + .../1.0.0/uiblock-gradle-plugin-1.0.0.pom | 28 +++++++ .../1.0.0/uiblock-gradle-plugin-1.0.0.pom.md5 | 1 + .../uiblock-gradle-plugin-1.0.0.pom.sha1 | 1 + .../uiblock-gradle-plugin/maven-metadata.xml | 12 +++ .../maven-metadata.xml.md5 | 1 + .../maven-metadata.xml.sha1 | 1 + settings.gradle | 2 +- uiblock-plugin/.gitignore | 1 + uiblock-plugin/build.gradle | 56 +++++++++++++ .../AspectPlugin.groovy | 74 ++++++++++++++++++ .../gradle-plugins/uiblock-plugin.properties | 1 + 19 files changed, 247 insertions(+), 68 deletions(-) create mode 100644 lib/proguard-rules.pro create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.md5 create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.sha1 create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.md5 create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.sha1 create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.md5 create mode 100644 plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.sha1 create mode 100644 uiblock-plugin/.gitignore create mode 100644 uiblock-plugin/build.gradle create mode 100644 uiblock-plugin/src/main/groovy/kale.ui.uiblock.plugin/AspectPlugin.groovy create mode 100644 uiblock-plugin/src/main/resources/META-INF/gradle-plugins/uiblock-plugin.properties diff --git a/app/build.gradle b/app/build.gradle index 7a4ece4..473eed1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,5 @@ -import org.aspectj.bridge.IMessage -import org.aspectj.bridge.MessageHandler -import org.aspectj.tools.ajc.Main - apply plugin: 'com.android.application' +apply plugin: 'uiblock-plugin' android { compileSdkVersion 23 @@ -25,54 +22,10 @@ android { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:23.1.1' - - compile 'com.jakewharton:butterknife:7.0.1' + compile 'com.android.support:appcompat-v7:23.3.0' debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' compile project(':lib') -} - -final def log = project.logger - -android.applicationVariants.all { variant -> - if (!variant.buildType.isDebuggable()) { - log.debug("Skipping non-debuggable build type '${variant.buildType.name}'.") - return; - } - - JavaCompile javaCompile = variant.javaCompile - javaCompile.doLast { - String[] args = ["-showWeaveInfo", - "-1.5", - "-inpath", javaCompile.destinationDir.toString(), - "-aspectpath", javaCompile.classpath.asPath, - "-d", javaCompile.destinationDir.toString(), - "-classpath", javaCompile.classpath.asPath, - "-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)] - log.debug "ajc args: " + Arrays.toString(args) - - MessageHandler handler = new MessageHandler(true); - new Main().run(args, handler); - for (IMessage message : handler.getMessages(null, true)) { - switch (message.getKind()) { - case IMessage.ABORT: - case IMessage.ERROR: - case IMessage.FAIL: - log.error message.message, message.thrown - break; - case IMessage.WARNING: - log.warn message.message, message.thrown - break; - case IMessage.INFO: - log.info message.message, message.thrown - break; - case IMessage.DEBUG: - log.debug message.message, message.thrown - break; - } - } - } } \ No newline at end of file diff --git a/app/src/main/java/kale/ui/block/DemoTopUiBlock.java b/app/src/main/java/kale/ui/block/DemoTopUiBlock.java index b8c98fd..1443c63 100644 --- a/app/src/main/java/kale/ui/block/DemoTopUiBlock.java +++ b/app/src/main/java/kale/ui/block/DemoTopUiBlock.java @@ -3,8 +3,6 @@ import android.view.View; import android.widget.TextView; -import butterknife.Bind; -import butterknife.ButterKnife; import kale.ui.R; import kale.ui.uiblock.UiBlock; @@ -14,7 +12,6 @@ */ public class DemoTopUiBlock extends UiBlock { - @Bind(R.id.top_tv) TextView mTopTv; @Override @@ -24,7 +21,7 @@ protected int getLayoutResId() { @Override public void bindViews(View rootView) { - ButterKnife.bind(this, getRootView()); + mTopTv = getView(R.id.top_tv); } @Override diff --git a/build.gradle b/build.gradle index 225dfd7..50aba56 100644 --- a/build.gradle +++ b/build.gradle @@ -3,25 +3,35 @@ buildscript { repositories { jcenter() + maven { + url 'plugin' + } } dependencies { classpath 'com.android.tools.build:gradle:2.1.0-alpha5' classpath 'me.tatarka:gradle-retrolambda:3.2.0'//lambda classpath 'org.aspectj:aspectjtools:1.8.1' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' + + classpath 'com.github.tianzhijiexian:uiblock-gradle-plugin:1.0.0' } } allprojects { repositories { jcenter() + maven { + url 'plugin' + } } } -/* task clean(type: Delete) { delete rootProject.buildDir } -*/ + +apply plugin: 'groovy' + +dependencies { + compile localGroovy() +} \ No newline at end of file diff --git a/lib/build.gradle b/lib/build.gradle index 492a4f1..dafdf2d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,8 +1,3 @@ -import com.android.build.gradle.LibraryPlugin -import org.aspectj.bridge.IMessage -import org.aspectj.bridge.MessageHandler -import org.aspectj.tools.ajc.Main - apply plugin: 'com.android.library' apply plugin: 'me.tatarka.retrolambda' @@ -13,10 +8,15 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 23 - versionCode 2 - versionName "1.0.1" } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + compileOptions { encoding "UTF-8" sourceCompatibility JavaVersion.VERSION_1_8 @@ -25,13 +25,19 @@ android { } dependencies { - // compile 'com.android.support:support-annotations:23.1.0' provided 'com.android.support:appcompat-v7:23.1.1' provided "org.projectlombok:lombok:1.12.6" compile 'org.aspectj:aspectjrt:1.8.1' } +import com.android.build.gradle.LibraryPlugin +import org.aspectj.bridge.IMessage +import org.aspectj.bridge.MessageHandler +import org.aspectj.tools.ajc.Main + +final def log = project.logger + android.libraryVariants.all { variant -> LibraryPlugin plugin = project.plugins.getPlugin(LibraryPlugin) JavaCompile javaCompile = variant.javaCompile @@ -46,6 +52,24 @@ android.libraryVariants.all { variant -> File.pathSeparator)] MessageHandler handler = new MessageHandler(true); - new Main().run(args, handler) + new Main().run(args, handler); + for (IMessage message : handler.getMessages(null, true)) { + switch (message.getKind()) { + case IMessage.ABORT: + case IMessage.ERROR: + case IMessage.FAIL: + log.error message.message, message.thrown + break; + case IMessage.WARNING: + log.warn message.message, message.thrown + break; + case IMessage.INFO: + log.info message.message, message.thrown + break; + case IMessage.DEBUG: + log.debug message.message, message.thrown + break; + } + } } } \ No newline at end of file diff --git a/lib/proguard-rules.pro b/lib/proguard-rules.pro new file mode 100644 index 0000000..648d8a5 --- /dev/null +++ b/lib/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in H:\Android\sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..248893fac05e84a49c9db61e5595020e202020d3 GIT binary patch literal 8237 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 T902h6;Sxpy0KPql00935&9-8e literal 0 HcmV?d00001 diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.md5 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.md5 new file mode 100644 index 0000000..94bc3d8 --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.md5 @@ -0,0 +1 @@ +761b97311948ac9610415ee9d192e932 \ No newline at end of file diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.sha1 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.sha1 new file mode 100644 index 0000000..f4d0ea1 --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.jar.sha1 @@ -0,0 +1 @@ +a394d8b20af0f169b92b811eef11b35ce5eb4af0 \ No newline at end of file diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom new file mode 100644 index 0000000..0d17b9a --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom @@ -0,0 +1,28 @@ + + + 4.0.0 + com.github.tianzhijiexian + uiblock-gradle-plugin + 1.0.0 + + + com.android.tools.build + gradle + 1.3.1 + compile + + + org.aspectj + aspectjrt + 1.8.6 + compile + + + org.aspectj + aspectjtools + 1.8.6 + compile + + + diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.md5 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.md5 new file mode 100644 index 0000000..317a0e8 --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.md5 @@ -0,0 +1 @@ +f594416dd96f1b760d4c478422274bff \ No newline at end of file diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.sha1 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.sha1 new file mode 100644 index 0000000..72ebec0 --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/1.0.0/uiblock-gradle-plugin-1.0.0.pom.sha1 @@ -0,0 +1 @@ +779ad489394ceaf9fbd8cc3a8ad4a10efa1e0580 \ No newline at end of file diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml new file mode 100644 index 0000000..133bf5d --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml @@ -0,0 +1,12 @@ + + + com.github.tianzhijiexian + uiblock-gradle-plugin + + 1.0.0 + + 1.0.0 + + 20160409092959 + + diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.md5 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.md5 new file mode 100644 index 0000000..0e3691c --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.md5 @@ -0,0 +1 @@ +c0cc2c474f69081c19da3d9b674da176 \ No newline at end of file diff --git a/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.sha1 b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.sha1 new file mode 100644 index 0000000..cc2fed4 --- /dev/null +++ b/plugin/com/github/tianzhijiexian/uiblock-gradle-plugin/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +cb013835d336dd535ebd2b4c70835bcd2cda0860 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 3cbe249..4723490 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':lib' +include ':app', ':lib', ':uiblock-plugin' diff --git a/uiblock-plugin/.gitignore b/uiblock-plugin/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/uiblock-plugin/.gitignore @@ -0,0 +1 @@ +/build diff --git a/uiblock-plugin/build.gradle b/uiblock-plugin/build.gradle new file mode 100644 index 0000000..784fd42 --- /dev/null +++ b/uiblock-plugin/build.gradle @@ -0,0 +1,56 @@ +apply plugin: 'groovy' + +targetCompatibility = JavaVersion.VERSION_1_7 +sourceCompatibility = JavaVersion.VERSION_1_7 + +dependencies { + compile gradleApi() + compile localGroovy() + compile 'com.android.tools.build:gradle:1.3.1' + compile 'org.aspectj:aspectjtools:1.8.6' + compile 'org.aspectj:aspectjrt:1.8.6' + compile files('libs/proguard.jar') +} + +apply plugin: 'maven' + +version = '1.0.0' +group = 'com.github.tianzhijiexian' +archivesBaseName = 'uiblock-gradle-plugin' + +repositories { + mavenCentral() +} + +compileGroovy { + options.encoding = "UTF-8" +} + +uploadArchives { + repositories.mavenDeployer { + repository(url: 'file:../plugin/') + } +} + +/* +apply plugin: 'com.github.dcendents.android-maven' // ADD THIS + +task pluginJavadocs(type: Groovydoc) { + source = sourceSets.main.groovy.srcDirs + classpath = sourceSets.main.compileClasspath +} + +task pluginJavadocsJar(type: Jar, dependsOn: pluginJavadocs) { + classifier = 'javadoc' + from pluginJavadocs.destinationDir +} + +task pluginSourcesJar(type: Jar) { + classifier = 'sources' + from sourceSets.main.allGroovy +} + +artifacts { + archives pluginSourcesJar + archives pluginJavadocsJar +}*/ diff --git a/uiblock-plugin/src/main/groovy/kale.ui.uiblock.plugin/AspectPlugin.groovy b/uiblock-plugin/src/main/groovy/kale.ui.uiblock.plugin/AspectPlugin.groovy new file mode 100644 index 0000000..63e801e --- /dev/null +++ b/uiblock-plugin/src/main/groovy/kale.ui.uiblock.plugin/AspectPlugin.groovy @@ -0,0 +1,74 @@ +package kale.ui.uiblock.plugin + +import com.android.build.gradle.AppPlugin +import com.android.build.gradle.LibraryPlugin +import org.aspectj.bridge.IMessage +import org.aspectj.bridge.MessageHandler +import org.aspectj.tools.ajc.Main +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.tasks.compile.JavaCompile + +class AspectPlugin implements Plugin { + + @Override + void apply(Project project) { + def hasApp = project.plugins.withType(AppPlugin) + def hasLib = project.plugins.withType(LibraryPlugin) + + if (!hasApp && !hasLib) { + throw new IllegalStateException("'android' or 'android-library' plugin required.") + } + + final def log = project.logger + final def variants + if (hasApp) { + variants = project.android.applicationVariants + } else { + variants = project.android.libraryVariants + } + + variants.all { variant -> + if (!variant.buildType.isDebuggable()) { + log.debug("Skipping non-debuggable build type '${variant.buildType.name}'.") + return; + } + + JavaCompile javaCompile = variant.javaCompile + javaCompile.doLast { + String[] args = [ + "-showWeaveInfo", + "-1.5", + "-inpath", javaCompile.destinationDir.toString(), + "-aspectpath", javaCompile.classpath.asPath, + "-d", javaCompile.destinationDir.toString(), + "-classpath", javaCompile.classpath.asPath, + "-bootclasspath", project.android.bootClasspath.join(File.pathSeparator) + ] + + log.debug "ajc args: " + Arrays.toString(args) + + MessageHandler handler = new MessageHandler(true); + new Main().run(args, handler); + for (IMessage message : handler.getMessages(null, true)) { + switch (message.getKind()) { + case IMessage.ABORT: + case IMessage.ERROR: + case IMessage.FAIL: + log.error message.message, message.thrown + break; + case IMessage.WARNING: + log.warn message.message, message.thrown + break; + case IMessage.INFO: + log.info message.message, message.thrown + break; + case IMessage.DEBUG: + log.debug message.message, message.thrown + break; + } + } + } + } + } +} \ No newline at end of file diff --git a/uiblock-plugin/src/main/resources/META-INF/gradle-plugins/uiblock-plugin.properties b/uiblock-plugin/src/main/resources/META-INF/gradle-plugins/uiblock-plugin.properties new file mode 100644 index 0000000..9e931e5 --- /dev/null +++ b/uiblock-plugin/src/main/resources/META-INF/gradle-plugins/uiblock-plugin.properties @@ -0,0 +1 @@ +implementation-class = kale.ui.uiblock.plugin.AspectPlugin \ No newline at end of file