From ac1ab5af538db431783ae83c6719d566dd851399 Mon Sep 17 00:00:00 2001 From: zhangyang06 Date: Tue, 18 Jan 2022 11:05:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=20[feat]=20=20=E5=A2=9E=E5=8A=A0=20artifac?= =?UTF-8?q?ts=20=E4=BD=BF=E7=94=A8demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Plugin/AutoTrackPlugin/build.gradle | 4 +-- Plugin/build.gradle | 36 +++++-------------- Plugin/double_tap_plugin/build.gradle | 4 +-- Plugin/multiPlugin/build.gradle | 2 +- Plugin/thread_hook_plugin/build.gradle | 6 ++-- .../kronos/plugin/thread/ThreadHookPlugin.kt | 11 ++++++ .../kronos/plugin/thread/task/ManifestTask.kt | 31 ++++++++++++++++ .../com/wallstreetcn/sample/MainActivity.java | 2 ++ .../wallstreetcn/sample/utils/PrivacyUtils.kt | 2 +- .../sample/utils/TestIOThreadExecutor.kt | 4 +++ build.gradle | 3 -- gradle.properties | 1 + 12 files changed, 66 insertions(+), 40 deletions(-) create mode 100644 Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/task/ManifestTask.kt diff --git a/Plugin/AutoTrackPlugin/build.gradle b/Plugin/AutoTrackPlugin/build.gradle index 08b14b1..1c2d2ce 100644 --- a/Plugin/AutoTrackPlugin/build.gradle +++ b/Plugin/AutoTrackPlugin/build.gradle @@ -7,8 +7,8 @@ dependencies { implementation gradleApi() implementation localGroovy() implementation project(":BasePlugin") - kapt "com.google.auto.service:auto-service:1.0-rc7" - implementation 'com.google.auto.service:auto-service:1.0-rc7' + kapt "com.google.auto.service:auto-service:1.0" + implementation 'com.google.auto.service:auto-service:1.0' } gradlePlugin { diff --git a/Plugin/build.gradle b/Plugin/build.gradle index 4180423..02f017a 100644 --- a/Plugin/build.gradle +++ b/Plugin/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.5.30' repositories { maven { url 'https://maven.aliyun.com/repository/central/' @@ -52,36 +52,16 @@ allprojects { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } + group("com.github.leifzhang") version = property("plugin.version") - plugins.withId("com.vanniktech.maven.publish") { - mavenPublish { - pom { - name = "Android Auot Track" - description = "A description of what my library does." - inceptionYear = "2020" - url = "https://github.com/Leifzhang/AndroidAutoTrack" - licenses { - license { - name = "The Apache License, Version 2.0" - url = "http://www.apache.org/licenses/LICENSE-2.0.txt" - distribution = "http://www.apache.org/licenses/LICENSE-2.0.txt" - } - } - developers { - developer { - id = "Leifzhang" - name = "User Name" - url = "https://github.com/Leifzhang/" - } - } - scm { - url = "https://github.com/Leifzhang/AndroidAutoTrack" - connection = "scm:https://github.com/Leifzhang/AndroidAutoTrack.git" - developerConnection = "scm:https://github.com/Leifzhang/AndroidAutoTrack.git" - } + afterEvaluate { + if (project.plugins.hasPlugin('com.android.library') || project.plugins.hasPlugin('com.android.application')) { + def android = project.extensions.getByName('android') + android.compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } - } } } diff --git a/Plugin/double_tap_plugin/build.gradle b/Plugin/double_tap_plugin/build.gradle index badabf5..bcf536b 100644 --- a/Plugin/double_tap_plugin/build.gradle +++ b/Plugin/double_tap_plugin/build.gradle @@ -9,8 +9,8 @@ dependencies { implementation project(":BasePlugin") implementation 'commons-io:commons-io:2.6' implementation 'org.javassist:javassist:3.27.0-GA' - implementation 'com.google.auto.service:auto-service:1.0-rc6' - kapt "com.google.auto.service:auto-service:1.0-rc6" + kapt "com.google.auto.service:auto-service:1.0" + implementation 'com.google.auto.service:auto-service:1.0' } diff --git a/Plugin/multiPlugin/build.gradle b/Plugin/multiPlugin/build.gradle index 2ec3e16..987e061 100644 --- a/Plugin/multiPlugin/build.gradle +++ b/Plugin/multiPlugin/build.gradle @@ -7,7 +7,7 @@ dependencies { implementation localGroovy() implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation project(":BasePlugin") - implementation 'com.google.auto.service:auto-service:1.0-rc7' + implementation 'com.google.auto.service:auto-service:1.0' } gradlePlugin { diff --git a/Plugin/thread_hook_plugin/build.gradle b/Plugin/thread_hook_plugin/build.gradle index 66e66b8..374b3b6 100644 --- a/Plugin/thread_hook_plugin/build.gradle +++ b/Plugin/thread_hook_plugin/build.gradle @@ -6,10 +6,10 @@ dependencies { implementation gradleApi() implementation localGroovy() implementation project(":BasePlugin") - implementation 'commons-io:commons-io:2.6' + implementation 'commons-io:commons-io:2.11.0' implementation 'org.javassist:javassist:3.27.0-GA' - implementation 'com.google.auto.service:auto-service:1.0-rc7' - kapt "com.google.auto.service:auto-service:1.0-rc7" + implementation 'com.google.auto.service:auto-service:1.0' + kapt "com.google.auto.service:auto-service:1.0" } java { diff --git a/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt index 46a489c..61a12ff 100644 --- a/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt +++ b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt @@ -1,9 +1,11 @@ package com.kronos.plugin.thread +import com.android.build.api.artifact.SingleArtifact import com.android.build.api.instrumentation.FramesComputationMode import com.android.build.api.instrumentation.InstrumentationScope import com.android.build.api.variant.AndroidComponentsExtension import com.android.build.gradle.AppExtension +import com.kronos.plugin.thread.task.ManifestTask import org.gradle.api.Plugin import org.gradle.api.Project @@ -20,6 +22,15 @@ class ThreadHookPlugin : Plugin { appExtension.registerTransform(HookTransform()) val androidComponents = project.extensions.getByType(AndroidComponentsExtension::class.java) androidComponents.onVariants { variant -> + // artifacts 简单使用 + val taskProvider = project.tasks.register( + "manifestCopy${variant.name}Task", + ManifestTask::class.java + ) + variant.artifacts.use(taskProvider).wiredWithFiles( + ManifestTask::mergedManifest, + ManifestTask::updatedManifest + ).toTransform(SingleArtifact.MERGED_MANIFEST) variant.transformClassesWith(PrivacyClassVisitorFactory::class.java, InstrumentationScope.ALL) {} variant.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES) diff --git a/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/task/ManifestTask.kt b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/task/ManifestTask.kt new file mode 100644 index 0000000..c2c30a9 --- /dev/null +++ b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/task/ManifestTask.kt @@ -0,0 +1,31 @@ +package com.kronos.plugin.thread.task + +import org.gradle.api.DefaultTask +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.OutputFile +import org.gradle.api.tasks.TaskAction + +/** + * + * @Author LiABao + * @Since 2022/1/18 + * + */ +abstract class ManifestTask : DefaultTask() { + // 输入 + @get:InputFile + abstract val mergedManifest: RegularFileProperty + // 输出 + @get:OutputFile + abstract val updatedManifest: RegularFileProperty + + @TaskAction + fun taskAction() { + val file = mergedManifest.get().asFile.inputStream() + val steam = updatedManifest.get().asFile.outputStream() + steam.use { + it.write(file.readBytes()) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/wallstreetcn/sample/MainActivity.java b/app/src/main/java/com/wallstreetcn/sample/MainActivity.java index 49b9461..ddd7cc9 100644 --- a/app/src/main/java/com/wallstreetcn/sample/MainActivity.java +++ b/app/src/main/java/com/wallstreetcn/sample/MainActivity.java @@ -13,6 +13,7 @@ import com.wallstreetcn.sample.adapter.Test; import com.wallstreetcn.sample.utils.PrivacyUtils; +import com.wallstreetcn.sample.utils.TestIOThreadExecutor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -38,6 +39,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + TestIOThreadExecutor.Companion.getThreadPool("1234"); // service = Executors.newFixedThreadPool(2); // service = Executors.newSingleThreadExecutor(Executors.defaultThreadFactory()); findViewById(R.id.textView1).setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/wallstreetcn/sample/utils/PrivacyUtils.kt b/app/src/main/java/com/wallstreetcn/sample/utils/PrivacyUtils.kt index d08844b..7454a7d 100644 --- a/app/src/main/java/com/wallstreetcn/sample/utils/PrivacyUtils.kt +++ b/app/src/main/java/com/wallstreetcn/sample/utils/PrivacyUtils.kt @@ -53,7 +53,7 @@ object PrivacyUtils { fun getString(resolver: ContentResolver?, name: String?): String { resolver ?: return "" name ?: return "" - return Settings.Secure.getString(resolver, name) + return "" } diff --git a/app/src/main/java/com/wallstreetcn/sample/utils/TestIOThreadExecutor.kt b/app/src/main/java/com/wallstreetcn/sample/utils/TestIOThreadExecutor.kt index 3d58e67..df7b69a 100644 --- a/app/src/main/java/com/wallstreetcn/sample/utils/TestIOThreadExecutor.kt +++ b/app/src/main/java/com/wallstreetcn/sample/utils/TestIOThreadExecutor.kt @@ -34,6 +34,10 @@ class TestIOThreadExecutor private constructor() : ThreadPoolExecutor( return THREAD_POOL_SHARE } + + fun getThreadPool(name:String):TestIOThreadExecutor{ + return THREAD_POOL_SHARE + } } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 4bc5095..21fa170 100644 --- a/build.gradle +++ b/build.gradle @@ -5,9 +5,6 @@ buildscript { maven { url 'https://maven.aliyun.com/repository/central/' } - maven { - url 'https://dl.bintray.com/leifzhang/maven' - } google() } dependencies { diff --git a/gradle.properties b/gradle.properties index e60d8f8..75933d2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,4 +19,5 @@ android.useAndroidX=true android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=obsolete +android.nonTransitiveRClass=true From 845689e35b9518737e1ef1daa42bdc278ac3f258 Mon Sep 17 00:00:00 2001 From: zhangyang06 Date: Tue, 13 Sep 2022 12:09:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20=E9=80=82=E9=85=8D=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=ACapi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- Plugin/BasePlugin/build.gradle | 2 +- Plugin/build.gradle | 4 +--- Plugin/gradle.properties | 2 +- .../com/kronos/plugin/thread/ThreadHookPlugin.kt | 13 ++++++++----- app/build.gradle | 7 ++++--- build.gradle | 5 +++-- gradle/wrapper/gradle-wrapper.properties | 6 +++--- 8 files changed, 22 insertions(+), 19 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 1db5eda..424bc86 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -2,7 +2,7 @@ - + diff --git a/Plugin/BasePlugin/build.gradle b/Plugin/BasePlugin/build.gradle index 80722f3..5a29613 100644 --- a/Plugin/BasePlugin/build.gradle +++ b/Plugin/BasePlugin/build.gradle @@ -7,7 +7,7 @@ dependencies { implementation gradleApi() api "com.android.tools.build:gradle-api:$apgVersion" api "com.android.tools.build:gradle:$apgVersion" - implementation 'commons-io:commons-io:2.6' + implementation 'commons-io:commons-io:2.11.0' implementation "commons-codec:commons-codec:1.15" api 'org.ow2.asm:asm:9.2' api 'org.ow2.asm:asm-tree:9.2' diff --git a/Plugin/build.gradle b/Plugin/build.gradle index 02f017a..9ab75cf 100644 --- a/Plugin/build.gradle +++ b/Plugin/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.5.30' + ext.kotlin_version = '1.7.10' repositories { maven { url 'https://maven.aliyun.com/repository/central/' @@ -10,8 +10,6 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:$apgVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' - classpath 'com.vanniktech:gradle-maven-publish-plugin:0.17.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/Plugin/gradle.properties b/Plugin/gradle.properties index 4602c3c..e1ac5e1 100644 --- a/Plugin/gradle.properties +++ b/Plugin/gradle.properties @@ -21,4 +21,4 @@ android.enableJetifier=true kotlin.code.style=obsolete plugin.version=0.3.0 -apgVersion=7.0.0 \ No newline at end of file +apgVersion=7.2.2 \ No newline at end of file diff --git a/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt index 61a12ff..ecf01eb 100644 --- a/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt +++ b/Plugin/thread_hook_plugin/src/main/java/com/kronos/plugin/thread/ThreadHookPlugin.kt @@ -4,7 +4,7 @@ import com.android.build.api.artifact.SingleArtifact import com.android.build.api.instrumentation.FramesComputationMode import com.android.build.api.instrumentation.InstrumentationScope import com.android.build.api.variant.AndroidComponentsExtension -import com.android.build.gradle.AppExtension +import com.android.build.gradle.BaseExtension import com.kronos.plugin.thread.task.ManifestTask import org.gradle.api.Plugin import org.gradle.api.Project @@ -17,10 +17,11 @@ class ThreadHookPlugin : Plugin { override fun apply(project: Project) { val appExtension = project.extensions.getByType( - AppExtension::class.java + BaseExtension::class.java ) appExtension.registerTransform(HookTransform()) val androidComponents = project.extensions.getByType(AndroidComponentsExtension::class.java) + androidComponents.onVariants { variant -> // artifacts 简单使用 val taskProvider = project.tasks.register( @@ -31,9 +32,11 @@ class ThreadHookPlugin : Plugin { ManifestTask::mergedManifest, ManifestTask::updatedManifest ).toTransform(SingleArtifact.MERGED_MANIFEST) - variant.transformClassesWith(PrivacyClassVisitorFactory::class.java, - InstrumentationScope.ALL) {} - variant.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES) + variant.instrumentation.transformClassesWith(PrivacyClassVisitorFactory::class.java, + InstrumentationScope.ALL) { + + } + variant.instrumentation.setAsmFramesComputationMode(FramesComputationMode.COPY_FRAMES) } } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 723afcc..13505e2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,13 +28,14 @@ android { } } + dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.4.0-alpha02' - implementation 'androidx.recyclerview:recyclerview:1.2.0' + implementation 'androidx.appcompat:appcompat:1.4.2' + implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation project(":testmodule") implementation 'androidx.multidex:multidex:2.0.1' - implementation 'com.google.code.gson:gson:2.8.7' + implementation 'com.google.code.gson:gson:2.8.9' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.squareup.leakcanary:leakcanary-android-process:2.7' } diff --git a/build.gradle b/build.gradle index 21fa170..3daad9d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.4.30' + ext.kotlin_version = '1.7.10' repositories { maven { url 'https://maven.aliyun.com/repository/central/' @@ -8,7 +8,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:7.0.0' + classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' @@ -55,6 +55,7 @@ allprojects { } } } + } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 169f2f6..9530096 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Jan 14 17:05:42 CST 2021 +#Tue Sep 13 11:48:41 CST 2022 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip +zipStoreBase=GRADLE_USER_HOME