提交 53a7b8b7 编写于 作者: B Blankj

see 11/20 log

上级 acc19233
......@@ -6,4 +6,5 @@
/build
/captures
.externalNativeBuild
/apk
\ No newline at end of file
/apk
/maven
\ No newline at end of file
......@@ -2,7 +2,7 @@
buildscript {
apply from: 'config.gradle'
repositories {
if (localDebugPlugin) {
if (bus.isDebug) {
maven() {
url uri(new File(project.rootDir, "maven"))
}
......
......@@ -6,7 +6,7 @@ plugins {
apply {
from "../gradle/pluginPublish.gradle"
if (rootProject.localDebugPlugin) {
if (bus.isDebug) {
plugin 'maven'
from "../gradle/localMavenUpload.gradle"
} else {
......@@ -30,10 +30,12 @@ dependencies {
implementation dep.javassist
implementation dep.commons_io
implementation dep.junit
implementation gradleApi()
implementation localGroovy()
}
group = rootProject.group
version = rootProject.versionName
group = bus.group
version = bus.version
//./gradlew bus-gradle-plugin:bintrayUpload
//./gradlew publishPlugins
......@@ -8,19 +8,19 @@ import org.apache.commons.io.FileUtils
class BusInject {
static void start(HashMap<String, String> bus, File busJar) {
String jarPath = busJar.getAbsolutePath()
String decompressedJarPath = jarPath.substring(0, jarPath.length() - 4);
File decompressedJar = new File(decompressedJarPath)
ZipUtils.unzipFile(busJar, decompressedJar)
String jarPath = busJar.getAbsolutePath()
String decompressedJarPath = jarPath.substring(0, jarPath.length() - 4);
File decompressedJar = new File(decompressedJarPath)
ZipUtils.unzipFile(busJar, decompressedJar)
CtClass busUtils = Config.mPool.get(Config.CLASS_BUS_UTILS)
CtMethod callMethod = busUtils.getDeclaredMethod("post");
callMethod.insertAfter(getInsertContent(bus));
busUtils.writeFile(decompressedJarPath)
busUtils.defrost();
FileUtils.forceDelete(busJar)
ZipUtils.zipFile(decompressedJar, busJar)
FileUtils.forceDelete(decompressedJar)
CtClass busUtils = Config.mPool.get(Config.CLASS_BUS_UTILS)
CtMethod callMethod = busUtils.getDeclaredMethod("post");
callMethod.insertAfter(getInsertContent(bus));
busUtils.writeFile(decompressedJarPath)
busUtils.defrost();
FileUtils.forceDelete(busJar)
ZipUtils.zipFile(decompressedJar, busJar)
FileUtils.forceDelete(decompressedJar)
}
private static String getInsertContent(HashMap<String, String> bus) {
......
......@@ -60,7 +60,8 @@ class BusTransform extends Transform {
)
FileUtils.copyDirectory(dir, dest)
LogUtils.l("scan " + dirInput.name)
LogUtils.l("scan dir: " + dirInput.name)
busScan.scanDir(dir)
}
......@@ -78,16 +79,17 @@ class BusTransform extends Transform {
FileUtils.copyFile(jar, dest)
if (jumpScan(jarName)) {
LogUtils.l("jump " + jarName)
LogUtils.l("jump jar: " + jarName)
return
}
if (jarName.startsWith("com.blankj:bus:")) {
if (jarName.startsWith("com.blankj:utilcode:")
|| jarName.contains("utilcode-lib")) {
busScan.busJar = dest
return
}
LogUtils.l("scan " + jarName)
LogUtils.l("scan jar: " + jarName)
busScan.scanJar(jar)
}
}
......@@ -100,7 +102,7 @@ class BusTransform extends Transform {
BusInject.start(busScan.busMap, busScan.busJar)
} else {
LogUtils.l('u should <implementation "com.blankj:utilcode:1.30.+"> ' +
'or <implementation "com.blankj:bus:1.0+">')
'or <implementation "com.blankj:bus:1.0+">')
}
LogUtils.l(getName() + " finished: " + (System.currentTimeMillis() - stTime) + "ms")
......
......@@ -10,8 +10,7 @@ class Config {
public static final List<String> EXCEPTS = [
'com.android.support:',
'com.android.support.constraint:',
'android.arch.',
'com.blankj:utilcode:'
'android.arch.'
]
public static final String FILE_SEP = System.getProperty("file.separator")
......
......@@ -8,7 +8,11 @@ ext {
versionCode = 1_022_000
versionName = '1.22.0'// E.g. 1.9.72 => 1,009,072
localDebugPlugin = false
bus = [
isDebug: true,
version: '1.4',
group : 'com.blankj'
]
// lib version
kotlin_version = '1.3.0'
......@@ -21,7 +25,7 @@ ext {
kotlin_gradle_plugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version",
android_maven_gradle_plugin: "com.github.dcendents:android-maven-gradle-plugin:2.1",
gradle_bintray_plugin : "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4",
bus_gradle_plugin : "com.blankj:bus-gradle-plugin:1.3",
bus_gradle_plugin : "com.blankj:bus-gradle-plugin:1.4",
// lib
support : [
......
......@@ -15,4 +15,6 @@
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
\ No newline at end of file
# org.gradle.parallel=true
org.gradle.jvmargs=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
\ No newline at end of file
{}
\ No newline at end of file
plugins {
id "com.android.application"
// id "com.blankj.bus"
id 'kotlin-android'
id 'kotlin-android-extensions'
// id "com.blankj.bus"
}
// in config.gradle
......
......@@ -2,7 +2,6 @@ plugins {
id "com.android.library"
id 'kotlin-android'
id 'kotlin-android-extensions'
// id "com.blankj.bus"
}
// in config.gradle
......@@ -10,5 +9,5 @@ configAndroidDomain project
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':lib-base')
api project(':lib-base')
}
\ No newline at end of file
......@@ -47,7 +47,6 @@
android:name=".UtilsApp"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
......
......@@ -42,6 +42,14 @@ class MainActivity : BaseDrawerActivity() {
BarUtils.setStatusBarAlpha4Drawer(this, mDrawerRootLayout, launcherMainFakeStatusBar, 0, false)
BarUtils.addMarginTopEqualStatusBarHeight(launcherMainToolbar)
// launcherMainCoreUtilBtn.setOnClickListener {
// BusUtils.post<Any>("CoreUtilActivity#start", this)
// }
//
// launcherMainSubUtilBtn.setOnClickListener {
// BusUtils.post<Any>("SubUtilActivity#start", this)
// }
}
override fun doBusiness() {
......@@ -53,7 +61,7 @@ class MainActivity : BaseDrawerActivity() {
}
fun coreUtilClick(view: View) {
BusUtils.post<Any>("CoreUtilActivity#start", this)
}
fun subUtilClick(view: View) {
......
......@@ -56,16 +56,16 @@
<Button
style="@style/WideBtnStyle"
android:id="@+id/launcherMainCoreUtilBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="coreUtilClick"
android:text="@string/core_util" />
<Button
style="@style/WideBtnStyle"
android:id="@+id/launcherMainSubUtilBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="subUtilClick"
android:text="@string/sub_util" />
</LinearLayout>
......
<resources>
<string name="app_name">pkg</string>
</resources>
......@@ -85,26 +85,26 @@ getSurnameFirstLetter: 根据名字获取姓氏的首字母
[brightness.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/BrightnessUtils.java
[brightness.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/BrightnessUtils.java
[brightness.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/brightness/BrightnessActivity.java
[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
[clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/CloneUtils.java
[clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/CloneUtilsTest.java
[clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/CloneUtils.java
[clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/CloneUtilsTest.java
[coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
[coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
[coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
[coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
[flashlight.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/FlashlightUtils.java
[flashlight.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/FlashlightUtils.java
[flashlight.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/flashlight/FlashlightActivity.java
[gson.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/GsonUtils.java
[gson.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/GsonUtilsTest.java
[gson.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/GsonUtils.java
[gson.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/GsonUtilsTest.java
[location.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/LocationUtils.java
[location.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
[location.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/location/LocationActivity.java
[pinyin.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/PinyinUtils.java
[pinyin.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
[pinyin.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/pinyin/PinyinActivity.java
......@@ -85,26 +85,26 @@ getSurnameFirstLetter
[brightness.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/BrightnessUtils.java
[brightness.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/BrightnessUtils.java
[brightness.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/brightness/BrightnessActivity.java
[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
[clipboard.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/ClipboardUtils.java
[clipboard.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/ClipboardUtilsTest.java
[clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/CloneUtils.java
[clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/CloneUtilsTest.java
[clone.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/CloneUtils.java
[clone.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/CloneUtilsTest.java
[coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
[coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
[coordinate.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/CoordinateUtils.java
[coordinate.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/CoordinateUtilsTest.java
[flashlight.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/FlashlightUtils.java
[flashlight.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/FlashlightUtils.java
[flashlight.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/flashlight/FlashlightActivity.java
[gson.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/GsonUtils.java
[gson.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/test/java/com/blankj/subutil/util/GsonUtilsTest.java
[gson.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/GsonUtils.java
[gson.test]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/test/java/com/blankj/subutil/util/GsonUtilsTest.java
[location.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/LocationUtils.java
[location.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/LocationUtils.java
[location.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/location/LocationActivity.java
[pinyin.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/src/main/java/com/blankj/subutil/util/PinyinUtils.java
[pinyin.java]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/subutil-lib/src/main/java/com/blankj/subutil/util/PinyinUtils.java
[pinyin.demo]: https://github.com/Blankj/AndroidUtilCode/blob/master/app/src/main/java/com/blankj/androidutilcode/feature/sub/pinyin/PinyinActivity.java
......@@ -7,8 +7,8 @@ plugins {
configAndroidDomain project
readme {
readmeFile file('README.md')
readmeCnFile file('README-CN.md')
readmeFile file('../README.md')
readmeCnFile file('../README-CN.md')
}
dependencies {
......
此差异已折叠。
此差异已折叠。
......@@ -10,8 +10,8 @@ plugins {
configAndroidDomain project
readme {
readmeFile file('README.md')
readmeCnFile file('README-CN.md')
readmeFile file('../README.md')
readmeCnFile file('../README-CN.md')
}
apply from: "../../gradle/bintrayUploadAndroid.gradle"
......
......@@ -35,7 +35,7 @@ import java.lang.reflect.Field;
* author: Blankj
* blog : http://blankj.com
* time : 2016/09/29
* desc : utils about sToast
* desc : utils about toast
* </pre>
*/
public final class ToastUtils {
......@@ -44,7 +44,7 @@ public final class ToastUtils {
private static final Handler HANDLER = new Handler(Looper.getMainLooper());
private static final String NULL = "null";
private static IToast sToast;
private static IToast iToast;
private static int sGravity = -1;
private static int sXOffset = -1;
private static int sYOffset = -1;
......@@ -107,7 +107,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a short period of time.
* Show the toast for a short period of time.
*
* @param text The text.
*/
......@@ -116,7 +116,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a short period of time.
* Show the toast for a short period of time.
*
* @param resId The resource id for text.
*/
......@@ -125,7 +125,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a short period of time.
* Show the toast for a short period of time.
*
* @param resId The resource id for text.
* @param args The args.
......@@ -135,7 +135,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a short period of time.
* Show the toast for a short period of time.
*
* @param format The format.
* @param args The args.
......@@ -145,7 +145,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a long period of time.
* Show the toast for a long period of time.
*
* @param text The text.
*/
......@@ -154,7 +154,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a long period of time.
* Show the toast for a long period of time.
*
* @param resId The resource id for text.
*/
......@@ -163,7 +163,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a long period of time.
* Show the toast for a long period of time.
*
* @param resId The resource id for text.
* @param args The args.
......@@ -173,7 +173,7 @@ public final class ToastUtils {
}
/**
* Show the sToast for a long period of time.
* Show the toast for a long period of time.
*
* @param format The format.
* @param args The args.
......@@ -183,7 +183,7 @@ public final class ToastUtils {
}
/**
* Show custom sToast for a short period of time.
* Show custom toast for a short period of time.
*
* @param layoutId ID for an XML layout resource to load.
*/
......@@ -194,7 +194,7 @@ public final class ToastUtils {
}
/**
* Show custom sToast for a long period of time.
* Show custom toast for a long period of time.
*
* @param layoutId ID for an XML layout resource to load.
*/
......@@ -205,11 +205,11 @@ public final class ToastUtils {
}
/**
* Cancel the sToast.
* Cancel the toast.
*/
public static void cancel() {
if (sToast != null) {
sToast.cancel();
if (iToast != null) {
iToast.cancel();
}
}
......@@ -251,8 +251,8 @@ public final class ToastUtils {
@Override
public void run() {
cancel();
sToast = ToastFactory.makeToast(Utils.getTopActivityOrApp(), text, duration);
final TextView tvMessage = sToast.getView().findViewById(android.R.id.message);
iToast = ToastFactory.makeToast(Utils.getTopActivityOrApp(), text, duration);
final TextView tvMessage = iToast.getView().findViewById(android.R.id.message);
if (sMsgColor != COLOR_DEFAULT) {
tvMessage.setTextColor(sMsgColor);
}
......@@ -260,10 +260,10 @@ public final class ToastUtils {
tvMessage.setTextSize(sMsgTextSize);
}
if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) {
sToast.setGravity(sGravity, sXOffset, sYOffset);
iToast.setGravity(sGravity, sXOffset, sYOffset);
}
setBg(tvMessage);
sToast.show();
iToast.show();
}
});
}
......@@ -273,24 +273,24 @@ public final class ToastUtils {
@Override
public void run() {
cancel();
sToast = ToastFactory.newToast(Utils.getApp());
sToast.setView(view);
sToast.setDuration(duration);
iToast = ToastFactory.newToast(Utils.getApp());
iToast.setView(view);
iToast.setDuration(duration);
if (sGravity != -1 || sXOffset != -1 || sYOffset != -1) {
sToast.setGravity(sGravity, sXOffset, sYOffset);
iToast.setGravity(sGravity, sXOffset, sYOffset);
}
setBg();
sToast.show();
iToast.show();
}
});
}
private static void setBg() {
if (sBgResource != -1) {
final View toastView = sToast.getView();
final View toastView = iToast.getView();
toastView.setBackgroundResource(sBgResource);
} else if (sBgColor != COLOR_DEFAULT) {
final View toastView = sToast.getView();
final View toastView = iToast.getView();
Drawable background = toastView.getBackground();
if (background != null) {
background.setColorFilter(
......@@ -308,11 +308,11 @@ public final class ToastUtils {
private static void setBg(final TextView tvMsg) {
if (sBgResource != -1) {
final View toastView = sToast.getView();
final View toastView = iToast.getView();
toastView.setBackgroundResource(sBgResource);
tvMsg.setBackgroundColor(Color.TRANSPARENT);
} else if (sBgColor != COLOR_DEFAULT) {
final View toastView = sToast.getView();
final View toastView = iToast.getView();
Drawable tvBg = toastView.getBackground();
Drawable msgBg = tvMsg.getBackground();
if (tvBg != null && msgBg != null) {
......
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
plugins {
id "com.android.library"
id 'kotlin-android'
id 'kotlin-android-extensions'
// id "com.blankj.bus"
}
// in config.gradle
configAndroidDomain project
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation project(':lib-base')
implementation project(':utilcode-lib')
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.blankj.pkgutilcode" />
package="com.blankj.utilcode" />
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册