diff --git a/README.md b/README.md
index b410c0f..ea63069 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
# Tools
+Draft.
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..54b989c
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,36 @@
+plugins {
+ id 'com.android.application'
+}
+
+android {
+ namespace 'com.mxdyeah.tools'
+ compileSdk 31
+
+ defaultConfig {
+ applicationId "com.mxdyeah.tools"
+ minSdk 21
+ targetSdk 31
+ versionCode 1
+ versionName "1.0"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation 'androidx.appcompat:appcompat:1.3.1'
+ implementation 'com.google.android.material:material:1.4.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
+ implementation 'com.google.zxing:core:3.5.3'
+ implementation 'com.google.android.gms:play-services-ads:20.6.0'
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..3564070
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,2 @@
+-keep class com.google.android.gms.** { *; }
+-keep class com.google.ads.** { *; }
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c3df1c8
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/mxdyeah/tools/AdActivity.java b/app/src/main/java/com/mxdyeah/tools/AdActivity.java
new file mode 100644
index 0000000..d96a360
--- /dev/null
+++ b/app/src/main/java/com/mxdyeah/tools/AdActivity.java
@@ -0,0 +1,85 @@
+package com.mxdyeah.tools;
+
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.FrameLayout;
+import android.widget.ProgressBar;
+import androidx.appcompat.app.AppCompatActivity;
+import com.google.android.gms.ads.AdRequest;
+import com.google.android.gms.ads.AdSize;
+import com.google.android.gms.ads.AdView;
+import com.google.android.gms.ads.MobileAds;
+import com.google.android.gms.ads.initialization.InitializationStatus;
+import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
+import com.google.android.gms.ads.AdListener;
+import com.google.android.gms.ads.LoadAdError;
+
+public class AdActivity extends AppCompatActivity {
+
+ private WebView webView;
+ private ProgressBar progressBar;
+ private AdView adView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_ad);
+
+ MobileAds.initialize(this, new OnInitializationCompleteListener() {
+ @Override
+ public void onInitializationComplete(InitializationStatus status) {
+ Log.d("AdActivity", "Mobile Ads initialized");
+ }
+ });
+
+ webView = findViewById(R.id.webView);
+ progressBar = findViewById(R.id.progressBar);
+
+ webView.setWebViewClient(new WebViewClient() {
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ progressBar.setVisibility(View.GONE);
+ }
+ });
+
+ webView.getSettings().setJavaScriptEnabled(true);
+ webView.loadUrl("https://www.mxdyeah.com");
+
+ FrameLayout adContainer = findViewById(R.id.adContainer);
+ adView = new AdView(this);
+ //adView.setAdUnitId("ca-app-pub-7916126561134304/3815879702");
+ //use google admob test id
+ adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
+ adView.setAdSize(AdSize.BANNER);
+ adContainer.addView(adView);
+
+ AdRequest adRequest = new AdRequest.Builder().build();
+ adView.loadAd(adRequest);
+
+ adView.setAdListener(new AdListener() {
+ @Override
+ public void onAdLoaded() {
+ Log.d("AdMob", "Ad loaded");
+ }
+
+ @Override
+ public void onAdFailedToLoad(LoadAdError error) {
+ Log.e("AdMob", "Failed code: " + error.getCode());
+ Log.e("AdMob", "Failed message: " + error.getMessage());
+ Log.e("AdMob", "Full: " + error.toString());
+ }
+ });
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ if (adView != null) {
+ adView.destroy();
+ }
+ super.onDestroy();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mxdyeah/tools/GenerateActivity.java b/app/src/main/java/com/mxdyeah/tools/GenerateActivity.java
new file mode 100644
index 0000000..cd62d6c
--- /dev/null
+++ b/app/src/main/java/com/mxdyeah/tools/GenerateActivity.java
@@ -0,0 +1,73 @@
+package com.mxdyeah.tools;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.Toast;
+import androidx.appcompat.app.AppCompatActivity;
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.qrcode.QRCodeWriter;
+import com.google.zxing.common.BitMatrix;
+import java.util.Hashtable;
+
+public class GenerateActivity extends AppCompatActivity {
+
+ private EditText etContent;
+ private ImageView ivQRCode;
+ private Button btnGenerate;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_generate);
+
+ etContent = findViewById(R.id.etContent);
+ ivQRCode = findViewById(R.id.ivQRCode);
+ btnGenerate = findViewById(R.id.btnGenerate);
+
+ btnGenerate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String content = etContent.getText().toString().trim();
+ if (content.isEmpty()) {
+ Toast.makeText(GenerateActivity.this, "请输入内容", Toast.LENGTH_SHORT).show();
+ return;
+ }
+ generateQRCode(content);
+ }
+ });
+ }
+
+ private void generateQRCode(String content) {
+ try {
+ Hashtable hints = new Hashtable<>();
+ hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
+
+ QRCodeWriter writer = new QRCodeWriter();
+ BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, 512, 512, hints);
+
+ int width = bitMatrix.getWidth();
+ int height = bitMatrix.getHeight();
+ int[] pixels = new int[width * height];
+
+ for (int y = 0; y < height; y++) {
+ int offset = y * width;
+ for (int x = 0; x < width; x++) {
+ pixels[offset + x] = bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF;
+ }
+ }
+
+ Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
+ ivQRCode.setImageBitmap(bitmap);
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ Toast.makeText(this, "生成失败: " + e.getMessage(), Toast.LENGTH_SHORT).show();
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mxdyeah/tools/MainActivity.java b/app/src/main/java/com/mxdyeah/tools/MainActivity.java
new file mode 100644
index 0000000..04ef159
--- /dev/null
+++ b/app/src/main/java/com/mxdyeah/tools/MainActivity.java
@@ -0,0 +1,61 @@
+package com.mxdyeah.tools;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+
+import androidx.appcompat.app.AppCompatActivity;
+import com.google.android.gms.ads.MobileAds;
+import com.google.android.gms.ads.AdRequest;
+import com.google.android.gms.ads.AdView;
+import com.google.android.gms.ads.initialization.InitializationStatus;
+import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
+
+public class MainActivity extends AppCompatActivity {
+
+ private AdView mAdView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ MobileAds.initialize(this, new OnInitializationCompleteListener() {
+ @Override
+ public void onInitializationComplete(InitializationStatus status) {
+ Log.d("MainActivity", "Mobile Ads initialized");
+ }
+ });
+
+ mAdView = findViewById(R.id.adView);
+ AdRequest adRequest = new AdRequest.Builder().build();
+ mAdView.loadAd(adRequest);
+
+ Button btnGenerate = findViewById(R.id.btnGenerate);
+ Button btnScan = findViewById(R.id.btnScan);
+ Button btnAd = findViewById(R.id.btnAd);
+
+ btnGenerate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(new Intent(MainActivity.this, GenerateActivity.class));
+ }
+ });
+
+ btnScan.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(new Intent(MainActivity.this, ScanActivity.class));
+ }
+ });
+
+ btnAd.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(new Intent(MainActivity.this, AdActivity.class));
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/mxdyeah/tools/ScanActivity.java b/app/src/main/java/com/mxdyeah/tools/ScanActivity.java
new file mode 100644
index 0000000..8bea14f
--- /dev/null
+++ b/app/src/main/java/com/mxdyeah/tools/ScanActivity.java
@@ -0,0 +1,66 @@
+package com.mxdyeah.tools;
+
+import android.Manifest;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.widget.Toast;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
+
+public class ScanActivity extends AppCompatActivity {
+
+ private static final int REQUEST_CAMERA_PERMISSION = 100;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);
+ } else {
+ startScan();
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == REQUEST_CAMERA_PERMISSION) {
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ startScan();
+ } else {
+ Toast.makeText(this, "需要相机权限才能扫描", Toast.LENGTH_SHORT).show();
+ finish();
+ }
+ }
+ }
+
+ private void startScan() {
+ IntentIntegrator integrator = new IntentIntegrator(this);
+ integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE);
+ integrator.setPrompt("扫描二维码");
+ integrator.setCameraId(0);
+ integrator.setBeepEnabled(true);
+ integrator.setBarcodeImageEnabled(true);
+ integrator.initiateScan();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
+ if (result != null) {
+ if (result.getContents() != null) {
+ Toast.makeText(this, "扫描结果: " + result.getContents(), Toast.LENGTH_LONG).show();
+ } else {
+ Toast.makeText(this, "取消扫描", Toast.LENGTH_SHORT).show();
+ }
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ finish();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..ca5e045
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_ad.xml b/app/src/main/res/layout/activity_ad.xml
new file mode 100644
index 0000000..d04d8c7
--- /dev/null
+++ b/app/src/main/res/layout/activity_ad.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_generate.xml b/app/src/main/res/layout/activity_generate.xml
new file mode 100644
index 0000000..27b86ca
--- /dev/null
+++ b/app/src/main/res/layout/activity_generate.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..7d1217f
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..cecd537
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_foreground.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_foreground.xml
new file mode 100644
index 0000000..92355fe
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_foreground.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..cecd537
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.xml b/app/src/main/res/mipmap-hdpi/ic_launcher.xml
new file mode 100644
index 0000000..0588111
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.xml b/app/src/main/res/mipmap-hdpi/ic_launcher_round.xml
new file mode 100644
index 0000000..0588111
--- /dev/null
+++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.xml b/app/src/main/res/mipmap-mdpi/ic_launcher.xml
new file mode 100644
index 0000000..957fe07
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.xml b/app/src/main/res/mipmap-mdpi/ic_launcher_round.xml
new file mode 100644
index 0000000..957fe07
--- /dev/null
+++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.xml b/app/src/main/res/mipmap-xhdpi/ic_launcher.xml
new file mode 100644
index 0000000..6a699f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.xml b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.xml
new file mode 100644
index 0000000..6a699f6
--- /dev/null
+++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.xml b/app/src/main/res/mipmap-xxhdpi/ic_launcher.xml
new file mode 100644
index 0000000..cd6ff6f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.xml b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.xml
new file mode 100644
index 0000000..cd6ff6f
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.xml b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.xml
new file mode 100644
index 0000000..9f159fe
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.xml b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.xml
new file mode 100644
index 0000000..9f159fe
--- /dev/null
+++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..f8c6127
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,10 @@
+
+
+ #FFBB86FC
+ #FF6200EE
+ #FF3700B3
+ #FF03DAC5
+ #FF018786
+ #FF000000
+ #FFFFFFFF
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..c9edf96
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+
+ Tools
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..01c8ccd
--- /dev/null
+++ b/app/src/main/res/values/themes.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..8e13ada
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,3 @@
+plugins {
+ id 'com.android.application' version '7.0.2' apply false
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..7b4f503
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,4 @@
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+android.useAndroidX=true
+android.nonTransitiveRClass=true
+org.gradle.jvmargs=-Dfile.encoding=UTF-8
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..49ddbb2
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+#distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
+distributionUrl=https\://mirrors.aliyun.com/gradle/distributions/v7.0.2/gradle-7.0.2-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
\ No newline at end of file
diff --git a/local.properties b/local.properties
new file mode 100644
index 0000000..ecb79b0
--- /dev/null
+++ b/local.properties
@@ -0,0 +1,8 @@
+## This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+#
+# Location of the SDK. This is only used by Gradle.
+# For customization when using a Version Control System, please read the
+# header note.
+#Sat Apr 11 02:24:43 CST 2026
+sdk.dir=F\:\\Android\\AndroidSDK
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..63c4872
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,27 @@
+pluginManagement {
+ repositories {
+ // 国内镜像(优先)
+ maven { url 'https://maven.aliyun.com/repository/google' }
+ maven { url 'https://maven.aliyun.com/repository/public' }
+ maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+ // 官方源(备用)
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ // 国内镜像(优先)
+ maven { url 'https://maven.aliyun.com/repository/google' }
+ maven { url 'https://maven.aliyun.com/repository/public' }
+ // 官方源(备用)
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "Tools"
+include ':app'
\ No newline at end of file