diff --git a/app/build.gradle b/app/build.gradle index 43d7f7a2..a996f3ed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,27 +1,27 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -if (PLUGIN_ENABLE.toBoolean()) { - apply plugin: 'android-junk-code' -} -apply plugin: 'com.getkeepsafe.dexcount' +//if (PLUGIN_ENABLE.toBoolean()) { +// apply plugin: 'android-junk-code' +//} +//apply plugin: 'com.getkeepsafe.dexcount' apply plugin: 'kotlin-kapt' android { - compileSdkVersion 31 + compileSdkVersion 29 defaultConfig { applicationId "cn.hx.plugin.junkcode.demo" - minSdkVersion 16 - targetSdkVersion 31 + minSdkVersion 21 + targetSdkVersion 26 versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } - buildFeatures { - dataBinding = true - viewBinding = true - } +// buildFeatures { +// dataBinding = true +// viewBinding = true +// } buildTypes { release { minifyEnabled true @@ -71,33 +71,33 @@ android { } } -if (PLUGIN_ENABLE.toBoolean()) { - androidJunkCode { - def config = { - packageBase = "cn.hx.plugin.ui" - packageCount = 30 - activityCountPerPackage = 30 - excludeActivityJavaFile = false - otherCountPerPackage = 50 - methodCountPerClass = 20 - resPrefix = "junk_" - drawableCount = 300 - stringCount = 300 - } - variantConfig { - freeRelease config - proRelease config - } - } -} +//if (PLUGIN_ENABLE.toBoolean()) { +// androidJunkCode { +// def config = { +// packageBase = "cn.hx.plugin.ui" +// packageCount = 30 +// activityCountPerPackage = 30 +// excludeActivityJavaFile = false +// otherCountPerPackage = 50 +// methodCountPerClass = 20 +// resPrefix = "junk_" +// drawableCount = 300 +// stringCount = 300 +// } +// variantConfig { +// freeRelease config +// proRelease config +// } +// } +//} dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.multidex:multidex:2.0.1' - implementation 'androidx.core:core-ktx:1.6.0' - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.multidex:multidex:1.0.3' + implementation 'androidx.core:core-ktx:1.3.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/build.gradle b/build.gradle index 9def2a96..c80cd198 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,20 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = "1.5.31" + ext.kotlin_version = "1.3.50" repositories { google() mavenCentral() + jcenter(){ url 'https://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'https://jitpack.io' } mavenLocal() } dependencies { - classpath 'com.android.tools.build:gradle:4.2.1' + classpath 'com.android.tools.build:gradle:3.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:3.0.1" - if (PLUGIN_ENABLE.toBoolean()) { - classpath "com.github.qq549631030:android-junk-code:1.1.7" - } +// if (PLUGIN_ENABLE.toBoolean()) { +// classpath "com.github.qq549631030:android-junk-code:1.1.7" +// } // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -22,6 +24,8 @@ allprojects { repositories { google() mavenCentral() + jcenter(){ url 'https://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'https://jitpack.io' } } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index be6e8e98..483f2b41 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip diff --git a/library/build.gradle b/library/build.gradle index c14ef475..3f4e9912 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -9,7 +9,7 @@ buildscript { } apply plugin: 'groovy' -apply plugin: "com.vanniktech.maven.publish" +//apply plugin: "com.vanniktech.maven.publish" java { sourceCompatibility JavaVersion.VERSION_1_8 diff --git a/library/src/main/groovy/cn/hx/plugin/junkcode/ext/JunkCodeConfig.groovy b/library/src/main/groovy/cn/hx/plugin/junkcode/ext/JunkCodeConfig.groovy index f4bb9b8a..70a88865 100644 --- a/library/src/main/groovy/cn/hx/plugin/junkcode/ext/JunkCodeConfig.groovy +++ b/library/src/main/groovy/cn/hx/plugin/junkcode/ext/JunkCodeConfig.groovy @@ -17,7 +17,7 @@ class JunkCodeConfig { @Input int methodCountPerClass = 0 @Input - String resPrefix = "junk_" + String resPrefix = "sns_app" @Input int drawableCount = 0 @Input diff --git a/library/src/main/groovy/cn/hx/plugin/junkcode/task/AndroidJunkCodeTask.groovy b/library/src/main/groovy/cn/hx/plugin/junkcode/task/AndroidJunkCodeTask.groovy index 65b4afd8..cc8378e1 100644 --- a/library/src/main/groovy/cn/hx/plugin/junkcode/task/AndroidJunkCodeTask.groovy +++ b/library/src/main/groovy/cn/hx/plugin/junkcode/task/AndroidJunkCodeTask.groovy @@ -14,6 +14,7 @@ import org.gradle.api.tasks.TaskAction import javax.lang.model.element.Modifier import java.nio.charset.Charset +import java.nio.charset.StandardCharsets import java.nio.file.Files import java.nio.file.Path @@ -24,6 +25,9 @@ class AndroidJunkCodeTask extends DefaultTask { static abc = "abcdefghijklmnopqrstuvwxyz".toCharArray() static color = "0123456789abcdef".toCharArray() + + static otherAbc = "mnopqrstuvwxyzabcdefghijkl".toCharArray() + @Nested JunkCodeConfig config @@ -53,18 +57,24 @@ class AndroidJunkCodeTask extends DefaultTask { * 生成java代码和AndroidManifest.xml */ void generateClasses() { + //生成包数量 config.packageCount for (int i = 0; i < config.packageCount; i++) { String packageName + if (config.packageBase.isEmpty()) { packageName = generateName(i) } else { packageName = config.packageBase + "." + generateName(i) } + + printLog(packageName) + //生成Activity for (int j = 0; j < config.activityCountPerPackage; j++) { def activityPreName = generateName(j) generateActivity(packageName, activityPreName) } + //生成其它类 for (int j = 0; j < config.otherCountPerPackage; j++) { def className = generateName(j).capitalize() @@ -138,9 +148,18 @@ class AndroidJunkCodeTask extends DefaultTask { * @param activityPreName */ void generateActivity(String packageName, String activityPreName) { + //生成Activity类名 def className = activityPreName.capitalize() + "Activity" - def layoutName = "${config.resPrefix.toLowerCase()}${packageName.replace(".", "_")}_activity_${activityPreName}" + + printLog("generateActivity and class name is " + className) + + //生成Activity对应的布局文件的类名 + def layoutName = "${config.resPrefix.toLowerCase()}_activity_${activityPreName}" + + printLog("generateActivity and layoutName is " + layoutName) + //生成对应的布局文件 generateLayout(layoutName) + if (!config.excludeActivityJavaFile) { def typeBuilder = TypeSpec.classBuilder(className) typeBuilder.superclass(ClassName.get("android.app", "Activity")) @@ -199,8 +218,14 @@ class AndroidJunkCodeTask extends DefaultTask { * @param layoutName */ void generateLayout(String layoutName) { + + //生成布局文件 def layoutFile = new File(outDir, "res/layout/${layoutName}.xml") - def layoutStr = String.format(ResTemplate.LAYOUT_TEMPLATE, generateId()) + //生成布局文件内容 + def currentGenerateId = generateId() + printLog("generateLayout currentGenerateId " + currentGenerateId) + def layoutStr = String.format(ResTemplate.LAYOUT_TEMPLATE, currentGenerateId) + //内容写文件 writeStringToFile(layoutFile, layoutStr) } @@ -252,9 +277,11 @@ class AndroidJunkCodeTask extends DefaultTask { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs() } - FileWriter writer + Writer writer try { - writer = new FileWriter(file, Charset.forName("UTF-8")) + + writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8); + writer.write(data) } catch (Exception e) { e.printStackTrace() @@ -307,7 +334,16 @@ class AndroidJunkCodeTask extends DefaultTask { def sb = new StringBuilder() for (i in 0..5) { sb.append(abc[random.nextInt(abc.size())]) + sb.append(otherAbc[random.nextInt(otherAbc.size())]) } return sb.toString() } + + /** + * 打印日志 + * @param content + */ + static void printLog(String content){ + print("==============junk=====================" + content) + } } \ No newline at end of file diff --git a/library/src/main/groovy/cn/hx/plugin/junkcode/template/ResTemplate.groovy b/library/src/main/groovy/cn/hx/plugin/junkcode/template/ResTemplate.groovy index d2924d5c..4854ce22 100644 --- a/library/src/main/groovy/cn/hx/plugin/junkcode/template/ResTemplate.groovy +++ b/library/src/main/groovy/cn/hx/plugin/junkcode/template/ResTemplate.groovy @@ -2,40 +2,15 @@ package cn.hx.plugin.junkcode.template class ResTemplate { - static final def DRAWABLE = ''' - - - - - - - - - -''' + static final def DRAWABLE = ''' + + + + +''' static final def LAYOUT_TEMPLATE = '''