diff --git a/yukireflection/build.gradle b/yukireflection/build.gradle
index 6a38f29..f7424bd 100644
--- a/yukireflection/build.gradle
+++ b/yukireflection/build.gradle
@@ -1,31 +1,33 @@
plugins {
- id 'java-library'
- id 'org.jetbrains.kotlin.jvm'
+ id 'com.android.library'
+ id 'org.jetbrains.kotlin.android'
id 'maven-publish'
id 'signing'
}
-java {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- sourceSets.main { java.srcDir("src/api/kotlin") }
- withJavadocJar()
- withSourcesJar()
-}
+android {
+ namespace 'com.highcapable.yukireflection'
+ compileSdk 33
-javadoc {
- options.addStringOption("charset", "UTF-8")
- if (JavaVersion.current().isJava9Compatible()) options.addBooleanOption('html5', true)
-}
+ defaultConfig {
+ minSdk 21
+ targetSdk 33
-kotlin {
- sourceSets.main { kotlin.srcDir("src/api/kotlin") }
- sourceSets { all { languageSettings { optIn('com.highcapable.yukireflection.annotation.YukiPrivateApi') } } }
-}
+ consumerProguardFiles 'consumer-rules.pro'
+ }
-tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
kotlinOptions {
- jvmTarget = 11
+ jvmTarget = '11'
freeCompilerArgs = [
'-opt-in=com.highcapable.yukireflection.annotation.YukiPrivateApi',
'-Xno-param-assertions',
@@ -33,11 +35,27 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
'-Xno-receiver-assertions'
]
}
+ lintOptions {
+ checkReleaseBuilds false
+ }
+ publishing {
+ singleVariant('release') {
+ withSourcesJar()
+ withJavadocJar()
+ }
+ }
}
+kotlin { sourceSets { all { languageSettings { optIn('com.highcapable.yukireflection.annotation.YukiPrivateApi') } } } }
+
dependencies {
- compileOnly fileTree(include: ['*.jar'], dir: 'libs')
- implementation 'androidx.annotation:annotation:1.6.0'
+ implementation 'androidx.core:core-ktx:1.10.0'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+}
+
+tasks.register('androidSourcesJar', Jar) {
+ archiveClassifier.set('sources')
+ from android.sourceSets.main.java.srcDirs
}
group = rootProject.ext.groupId
@@ -45,9 +63,10 @@ version = rootProject.ext.apiVersion
publishing {
publications {
- mavenJava(MavenPublication) {
+ release(MavenPublication) {
artifactId = 'api'
- from components.java
+ artifact "$buildDir/outputs/aar/${project.name}-release.aar"
+ artifact androidSourcesJar
pom {
name = rootProject.ext.repoName
description = rootProject.ext.repoDescription
@@ -86,6 +105,4 @@ publishing {
}
}
-signing {
- sign(publishing.publications.mavenJava)
-}
\ No newline at end of file
+signing { sign publishing.publications }
\ No newline at end of file
diff --git a/yukireflection/consumer-rules.pro b/yukireflection/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/yukireflection/libs/android-stub.jar b/yukireflection/libs/android-stub.jar
deleted file mode 100644
index ba20700..0000000
Binary files a/yukireflection/libs/android-stub.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-activity.jar b/yukireflection/libs/androidx-activity.jar
deleted file mode 100644
index c6661be..0000000
Binary files a/yukireflection/libs/androidx-activity.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-appcompat.jar b/yukireflection/libs/androidx-appcompat.jar
deleted file mode 100644
index d0c8d7e..0000000
Binary files a/yukireflection/libs/androidx-appcompat.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-core.jar b/yukireflection/libs/androidx-core.jar
deleted file mode 100644
index 2c40dd3..0000000
Binary files a/yukireflection/libs/androidx-core.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-customview.jar b/yukireflection/libs/androidx-customview.jar
deleted file mode 100644
index dd51769..0000000
Binary files a/yukireflection/libs/androidx-customview.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-drawerlayout.jar b/yukireflection/libs/androidx-drawerlayout.jar
deleted file mode 100644
index 2510a5a..0000000
Binary files a/yukireflection/libs/androidx-drawerlayout.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-fragment.jar b/yukireflection/libs/androidx-fragment.jar
deleted file mode 100644
index 160357a..0000000
Binary files a/yukireflection/libs/androidx-fragment.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-common.jar b/yukireflection/libs/androidx-lifecycle-common.jar
deleted file mode 100644
index da323a9..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-common.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-livedata-core.jar b/yukireflection/libs/androidx-lifecycle-livedata-core.jar
deleted file mode 100644
index 44a52c1..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-livedata-core.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-livedata.jar b/yukireflection/libs/androidx-lifecycle-livedata.jar
deleted file mode 100644
index d0a17a9..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-livedata.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-runtime.jar b/yukireflection/libs/androidx-lifecycle-runtime.jar
deleted file mode 100644
index ef898ee..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-runtime.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-viewmodel-savestate.jar b/yukireflection/libs/androidx-lifecycle-viewmodel-savestate.jar
deleted file mode 100644
index ab6eb53..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-viewmodel-savestate.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-lifecycle-viewmodel.jar b/yukireflection/libs/androidx-lifecycle-viewmodel.jar
deleted file mode 100644
index 9cade31..0000000
Binary files a/yukireflection/libs/androidx-lifecycle-viewmodel.jar and /dev/null differ
diff --git a/yukireflection/libs/androidx-savestate.jar b/yukireflection/libs/androidx-savestate.jar
deleted file mode 100644
index 40f58a5..0000000
Binary files a/yukireflection/libs/androidx-savestate.jar and /dev/null differ
diff --git a/yukireflection/proguard-rules.pro b/yukireflection/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/yukireflection/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# 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 *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/yukireflection/src/main/AndroidManifest.xml b/yukireflection/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..568741e
--- /dev/null
+++ b/yukireflection/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/YukiReflection.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/YukiReflection.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/YukiReflection.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/YukiReflection.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/annotation/CauseProblemsApi.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/annotation/CauseProblemsApi.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/annotation/CauseProblemsApi.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/annotation/CauseProblemsApi.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/annotation/YukiPrivateApi.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/annotation/YukiPrivateApi.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/annotation/YukiPrivateApi.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/annotation/YukiPrivateApi.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/CurrentClass.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/bean/CurrentClass.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/CurrentClass.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/bean/CurrentClass.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/GenericClass.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/bean/GenericClass.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/GenericClass.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/bean/GenericClass.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/VariousClass.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/bean/VariousClass.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/bean/VariousClass.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/bean/VariousClass.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/factory/ReflectionFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/factory/ReflectionFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/factory/ReflectionFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/factory/ReflectionFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/BaseFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/BaseFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/BaseFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/BaseFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/ClassBaseFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/MemberBaseFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/data/BaseRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/data/BaseRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/data/BaseRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/data/BaseRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/CountRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/CountRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/CountRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/CountRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/ModifierRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/ModifierRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/ModifierRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/ModifierRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/NameRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/NameRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/NameRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/NameRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/ObjectRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/ObjectRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/base/rules/ObjectRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/base/rules/ObjectRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt
similarity index 97%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt
index c3ed07c..c8c52cf 100644
--- a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt
+++ b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/DexClassFinder.kt
@@ -49,8 +49,10 @@ import com.highcapable.yukireflection.finder.classes.rules.result.MemberRulesRes
import com.highcapable.yukireflection.finder.tools.ReflectionTool
import com.highcapable.yukireflection.finder.type.factory.ModifierConditions
import com.highcapable.yukireflection.finder.type.factory.NameConditions
+import com.highcapable.yukireflection.log.yLoggerW
import com.highcapable.yukireflection.utils.await
import com.highcapable.yukireflection.utils.runBlocking
+import com.highcapable.yukireflection.utils.toStackTrace
import dalvik.system.BaseDexClassLoader
import java.lang.reflect.Constructor
import java.lang.reflect.Field
@@ -84,13 +86,15 @@ class DexClassFinder @PublishedApi internal constructor(
* 通过 [Context] 获取当前 [SharedPreferences]
* @param versionName 版本名称 - 默认空
* @param versionCode 版本号 - 默认空
- * @return [SharedPreferences]
+ * @return [SharedPreferences] or null
*/
- private fun Context.currentSp(versionName: String? = null, versionCode: Long? = null) =
+ private fun Context.currentSp(versionName: String? = null, versionCode: Long? = null) = runCatching {
+ @Suppress("DEPRECATION")
getSharedPreferences(packageManager?.getPackageInfo(packageName, PackageManager.GET_META_DATA)
?.let { "${CACHE_FILE_NAME}_${versionName ?: it.versionName}_${versionCode ?: PackageInfoCompat.getLongVersionCode(it)}" }
?: "${CACHE_FILE_NAME}_unknown",
Context.MODE_PRIVATE)
+ }.onFailure { yLoggerW(msg = "Failed to read app's SharedPreferences when using DexClassFinder\n${it.toStackTrace()}") }.getOrNull()
/**
* 清除当前 [DexClassFinder] 的 [Class] 缓存
@@ -101,7 +105,7 @@ class DexClassFinder @PublishedApi internal constructor(
* @param versionCode 版本号 - 默认空
*/
fun clearCache(context: Context, versionName: String? = null, versionCode: Long? = null) =
- context.currentSp(versionName, versionCode).edit().clear().apply()
+ context.currentSp(versionName, versionCode)?.edit()?.clear()?.apply() ?: yLoggerW(msg = "Failed to clear DexClassFinder's cache")
}
@PublishedApi
@@ -451,7 +455,7 @@ class DexClassFinder @PublishedApi internal constructor(
takeIf { it.isNotEmpty() }?.forEach { names.add(it.name) }
context?.also {
if (it.packageName == "android") error("Cannot create classes cache for \"android\", please remove \"name\" param")
- it.currentSp().edit().apply { putStringSet(name, names) }.apply()
+ it.currentSp()?.edit()?.apply { putStringSet(name, names) }?.apply() ?: yLoggerW(msg = "Failed to use caching in DexClassFinder")
}
}
}
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/data/ClassRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/data/ClassRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/data/ClassRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/data/ClassRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/ConstructorRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/ConstructorRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/ConstructorRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/ConstructorRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/FieldRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/FieldRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/FieldRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/FieldRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/MemberRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/MemberRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/MemberRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/MemberRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/MethodRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/MethodRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/MethodRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/MethodRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/base/BaseRules.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/base/BaseRules.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/base/BaseRules.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/base/BaseRules.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/result/MemberRulesResult.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/result/MemberRulesResult.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/classes/rules/result/MemberRulesResult.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/classes/rules/result/MemberRulesResult.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/ConstructorFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/FieldFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/FieldFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/FieldFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/MethodFinder.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/MethodFinder.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/MethodFinder.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/ConstructorRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/ConstructorRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/ConstructorRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/ConstructorRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/FieldRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/FieldRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/FieldRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/FieldRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/MemberRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/MemberRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/MemberRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/MemberRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/MethodRulesData.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/MethodRulesData.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/members/data/MethodRulesData.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/members/data/MethodRulesData.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/store/ReflectsCacheStore.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/store/ReflectsCacheStore.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/store/ReflectsCacheStore.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/store/ReflectsCacheStore.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/tools/ReflectionTool.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/type/factory/TypeAliasFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/finder/type/factory/TypeAliasFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/finder/type/factory/TypeAliasFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/finder/type/factory/TypeAliasFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/log/LoggerFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/log/LoggerFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/log/LoggerFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/log/LoggerFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/ComponentTypeFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/type/android/ComponentTypeFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/ComponentTypeFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/type/android/ComponentTypeFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/ViewTypeFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/type/android/ViewTypeFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/android/ViewTypeFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/type/android/ViewTypeFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.kt
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt
similarity index 98%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt
index 4d4452a..48213cb 100644
--- a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt
+++ b/yukireflection/src/main/java/com/highcapable/yukireflection/type/java/VariableTypeFactory.kt
@@ -33,6 +33,7 @@ package com.highcapable.yukireflection.type.java
import android.os.Build
import com.highcapable.yukireflection.factory.classOf
import com.highcapable.yukireflection.factory.toClass
+import com.highcapable.yukireflection.factory.toClassOrNull
import dalvik.system.BaseDexClassLoader
import dalvik.system.DexClassLoader
import dalvik.system.InMemoryDexClassLoader
@@ -48,7 +49,6 @@ import java.lang.reflect.Member
import java.lang.reflect.Method
import java.net.HttpCookie
import java.net.HttpURLConnection
-import java.net.http.HttpClient
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.atomic.AtomicBoolean
@@ -633,9 +633,9 @@ val HttpCookieClass get() = classOf()
/**
* 获得 [HttpClient] 类型
- * @return [Class]<[HttpClient]>
+ * @return [Class] or null
*/
-val HttpClientClass get() = classOf()
+val HttpClientClass get() = "java.net.http.HttpClient".toClassOrNull()
/**
* 获得 [AtomicBoolean] 类型
diff --git a/yukireflection/src/api/kotlin/com/highcapable/yukireflection/utils/UtilsFactory.kt b/yukireflection/src/main/java/com/highcapable/yukireflection/utils/UtilsFactory.kt
similarity index 100%
rename from yukireflection/src/api/kotlin/com/highcapable/yukireflection/utils/UtilsFactory.kt
rename to yukireflection/src/main/java/com/highcapable/yukireflection/utils/UtilsFactory.kt