From 193d5350847fccb95ef238bb4ff93387e38eac02 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sat, 11 Dec 2021 10:23:25 +0530 Subject: [PATCH] Moved project to Android Studio --- .idea/.gitignore | 3 + .idea/.name | 1 + .idea/compiler.xml | 6 ++ .idea/jarRepositories.xml | 35 ++++++++++ .idea/misc.xml | 9 +++ app/build.gradle | 60 +++++++--------- .../language/groovy/GroovyAnalyzer.java | 4 +- build.gradle | 10 ++- common/build.gradle | 17 +++-- .../com/itsaky/androidide/utils/Logger.java | 69 +++++++------------ emulatorview/build.gradle | 2 +- gradle/dependencies.gradle | 41 ++++++++--- javapoet/build.gradle | 2 +- layout-inflater/build.gradle | 10 +-- .../itsaky/layoutinflater/adapters/README.md | 2 +- .../android/widget/AbsSeekBarAttrAdapter.java | 59 ++++++++++++++++ .../widget/RadioButtonAttrAdapter.java | 27 ++++++++ .../android/widget/SeekBarAttrAdapter.java | 49 +++++++++++++ lexers/build.gradle | 2 +- lsp/build.gradle | 4 +- sdk-info/build.gradle | 4 +- treeview/build.gradle | 2 +- 22 files changed, 302 insertions(+), 116 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/AbsSeekBarAttrAdapter.java create mode 100644 layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/RadioButtonAttrAdapter.java create mode 100644 layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/SeekBarAttrAdapter.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 000000000..10a856a10 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +AndroidIDE \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 000000000..fb7f4a8a4 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 000000000..1c6fee5ed --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..2a4d5b521 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index fc5897483..81127d1ad 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,14 +18,9 @@ android { } compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility rootProject.ext.javaSourceVersion + coreLibraryDesugaringEnabled true + sourceCompatibility rootProject.ext.javaSourceVersion targetCompatibility rootProject.ext.javaTargetVersion - } - - // This is to get completions for R.java in AIDE - aaptOptions { - additionalParameters "--java", "$buildDir/gen" } lintOptions { @@ -81,41 +76,34 @@ android { } } -// This is to get completions for view binding classes in AIDE -task copyBindings(type: Copy) { - from "build/generated/data_binding_base_class_source_out/debug/out" - into 'build/gen' -} - dependencies { // Annotation processors annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' - implementation 'com.blankj:utilcodex:1.30.6' - implementation 'com.github.abhishekti7:UnicornFilePicker:1.0.2' - implementation 'com.github.bumptech.glide:glide:4.12.0' - implementation 'com.github.megatronking.stringfog:xor:1.1.0' - implementation 'com.github.piruin:quickaction:2.4.3' - implementation 'com.github.Rosemoe:BlockLinkedList:1.0.0' - implementation 'com.github.smart-fun:XmlToJson:1.5.1' - implementation 'com.google.code.gson:gson:2.8.8' - implementation 'com.google.guava:guava:30.1.1-android' + implementation common.utilcode + implementation common.file_picker + implementation common.glide + implementation common.quickaction + implementation common.bll + implementation common.xml2json + implementation google.gson + implementation google.guava - implementation 'org.jsoup:jsoup:1.14.2' + implementation common.jsoup // AndroidX - implementation 'androidx.annotation:annotation:1.3.0' - implementation 'androidx.appcompat:appcompat:1.4.0' - implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.2' - implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0' - implementation 'androidx.drawerlayout:drawerlayout:1.1.1' - implementation 'androidx.gridlayout:gridlayout:1.0.0' - implementation 'androidx.preference:preference:1.1.1' - implementation 'androidx.recyclerview:recyclerview:1.2.1' - implementation 'androidx.vectordrawable:vectordrawable:1.1.0' - implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' - implementation 'com.google.android.material:material:1.4.0' + implementation androidx.annotation + implementation androidx.appcompat + implementation androidx.cardview + implementation androidx.constraintlayout + implementation androidx.coordinatorlayout + implementation androidx.drawer + implementation androidx.grid + implementation androidx.preference + implementation androidx.recyclerview + implementation androidx.vectors + implementation androidx.animated_vectors + implementation google.material // Firebase implementation platform('com.google.firebase:firebase-bom:29.0.0') @@ -133,7 +121,7 @@ dependencies { implementation project(':common') // LSP4J - implementation 'org.eclipse.lsp4j:org.eclipse.lsp4j:0.12.0' + implementation common.lsp4j implementation fileTree(dir: 'libs', include: ['*.jar']) diff --git a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.java b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.java index a8e5eb245..d783f711e 100644 --- a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.java +++ b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAnalyzer.java @@ -20,6 +20,8 @@ package com.itsaky.androidide.language.groovy; +import androidx.annotation.NonNull; + import com.itsaky.androidide.syntax.lexer.impls.groovy.GroovyLexerImpl; import com.itsaky.lsp.SemanticHighlight; import com.itsaky.lsp.services.IDELanguageServer; @@ -41,7 +43,7 @@ public class GroovyAnalyzer extends io.github.rosemoe.editor.langs.AbstractCodeA } @Override - public void analyze(IDELanguageServer server, File file, CharSequence content, TextAnalyzeResult colors, TextAnalyzer.AnalyzeThread.Delegate delegate) throws IOException { + public void analyze(IDELanguageServer server, File file, CharSequence content, TextAnalyzeResult colors, @NonNull TextAnalyzer.AnalyzeThread.Delegate delegate) throws IOException { GroovyLexerImpl lexer = new GroovyLexerImpl(this.language, (Content) content, colors); lexer.init(); diff --git a/build.gradle b/build.gradle index 17fae2707..b65893c83 100644 --- a/build.gradle +++ b/build.gradle @@ -8,8 +8,8 @@ buildscript { versionName = "2.0-beta" packageName = "com.itsaky.androidide" - javaSourceVersion = JavaVersion.VERSION_1_8 - javaTargetVersion = JavaVersion.VERSION_1_8 + javaSourceVersion = JavaVersion.VERSION_11 + javaTargetVersion = JavaVersion.VERSION_11 } repositories { @@ -20,12 +20,16 @@ buildscript { } dependencies { - classpath "com.android.tools.build:gradle:7.0.2" + classpath "com.android.tools.build:gradle:7.0.4" classpath 'com.google.gms:google-services:4.3.8' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.0' } } +subprojects { + apply from: "${rootDir}/gradle/dependencies.gradle" +} + allprojects { repositories { google() diff --git a/common/build.gradle b/common/build.gradle index 228e023f7..a10a2dc20 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -27,15 +27,14 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.blankj:utilcodex:1.30.6' - implementation 'com.elvishew:xlog:1.8.0' + implementation common.utilcode + + implementation google.material - implementation 'com.google.android.material:material:1.4.0' + implementation androidx.appcompat + implementation androidx.preference + implementation androidx.vectors + implementation androidx.animated_vectors - implementation 'androidx.appcompat:appcompat:1.4.0' - implementation 'androidx.preference:preference:1.1.1' - implementation 'androidx.vectordrawable:vectordrawable:1.1.0' - implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' - - api 'androidx.multidex:multidex:2.0.1' + api androidx.multidex } diff --git a/common/src/main/java/com/itsaky/androidide/utils/Logger.java b/common/src/main/java/com/itsaky/androidide/utils/Logger.java index 85d2e06da..848253eb7 100644 --- a/common/src/main/java/com/itsaky/androidide/utils/Logger.java +++ b/common/src/main/java/com/itsaky/androidide/utils/Logger.java @@ -1,68 +1,47 @@ /************************************************************************************ * This file is part of AndroidIDE. - * + * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * AndroidIDE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with AndroidIDE. If not, see . * **************************************************************************************/ package com.itsaky.androidide.utils; -import com.elvishew.xlog.LogConfiguration; -import com.elvishew.xlog.LogLevel; -import com.elvishew.xlog.XLog; -import com.elvishew.xlog.printer.Printer; -import com.elvishew.xlog.printer.file.FilePrinter; -import com.elvishew.xlog.printer.file.naming.LevelFileNameGenerator; +import android.util.Log; + import com.blankj.utilcode.util.ThrowableUtils; public class Logger { private static Logger instance; - private static com.elvishew.xlog.Logger xLogger; private static String TAG = "AndroidIDE"; public static Logger instance() { - return instance == null ? createInstance(TAG) : instance; + return instance == null ? instance = createInstance(TAG) : instance; } - + + private static Logger createInstance(String tag) { + return new Logger(tag); + } + public static Logger instance(String tag) { return createInstance(tag); } private Logger(String tag) { - this.TAG = tag; + TAG = tag; } - - private static Logger createInstance(String tag) { - LogConfiguration config = new LogConfiguration.Builder() - .disableStackTrace() - .disableThreadInfo() - .logLevel(LogLevel.ALL) - .tag("AndroidIDE") - .disableBorder() - .build(); - Printer filePrinter = new FilePrinter - .Builder(FileUtil.getExternalStorageDir() + "/ide_xlog") - .fileNameGenerator(new LevelFileNameGenerator()) - .cleanStrategy(f -> false) - .build(); - XLog.init(config, filePrinter); - xLogger = XLog.tag("AndroidIDE").build(); - - instance = new Logger(tag); - return instance; - } - + public Logger warn(Object... messages) { StringBuilder sb = new StringBuilder(); sb.append("["); @@ -70,14 +49,14 @@ public class Logger { sb.append("]"); sb.append("\n"); if(messages == null) { - xLogger.w("null"); + Log.w(TAG, "null"); return this; } for(Object msg : messages) { sb.append(msg); sb.append("\n"); } - xLogger.w(sb.toString()); + Log.w(TAG, sb.toString()); return this; } @@ -88,14 +67,14 @@ public class Logger { sb.append("]"); sb.append("\n"); if(messages == null) { - xLogger.d("null"); + Log.d(TAG, "null"); return this; } for(Object msg : messages) { sb.append(msg); sb.append("\n"); } - xLogger.d(sb.toString()); + Log.d(TAG, sb.toString()); return this; } @@ -106,16 +85,16 @@ public class Logger { sb.append("]"); sb.append("\n"); if(messages == null) { - xLogger.e("null"); + Log.e(TAG, "null"); return this; } for(Object msg : messages) { - if(msg != null && msg instanceof Throwable) { + if(msg instanceof Throwable) { sb.append(ThrowableUtils.getFullStackTrace((Throwable) msg)); } else sb.append(msg); sb.append("\n"); } - xLogger.e(sb.toString()); + Log.e(TAG, sb.toString()); return this; } @@ -126,14 +105,14 @@ public class Logger { sb.append("]"); sb.append("\n"); if(messages == null) { - xLogger.v("null"); + Log.v(TAG, "null"); return this; } for(Object msg : messages) { sb.append(msg); sb.append("\n"); } - xLogger.v(sb.toString()); + Log.v(TAG, sb.toString()); return this; } @@ -144,14 +123,14 @@ public class Logger { sb.append("]"); sb.append("\n"); if(messages == null) { - xLogger.i("null"); + Log.i(TAG, "null"); return this; } for(Object msg : messages) { sb.append(msg); sb.append("\n"); } - xLogger.i(sb.toString()); + Log.i(TAG, sb.toString()); return this; } } diff --git a/emulatorview/build.gradle b/emulatorview/build.gradle index abba0c9af..0cb451005 100644 --- a/emulatorview/build.gradle +++ b/emulatorview/build.gradle @@ -24,5 +24,5 @@ android { } dependencies { - implementation "androidx.annotation:annotation:1.2.0" + implementation androidx.annotation } diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index 07adbac5f..6429c5c1e 100644 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -1,9 +1,34 @@ ext { - - // Common dependencies across all subprojects - common { - utilcode = 'com.blankj:utilcodex:1.30.6' - - } - -} + common = [ + utilcode: 'com.blankj:utilcodex:1.30.6', + lsp4j: 'org.eclipse.lsp4j:org.eclipse.lsp4j:0.12.0', + file_picker: 'com.github.abhishekti7:UnicornFilePicker:1.0.2', + glide: 'com.github.bumptech.glide:glide:4.12.0', + quickaction: 'com.github.piruin:quickaction:2.4.3', + bll: 'com.github.Rosemoe:BlockLinkedList:1.0.0', + xml2json: 'com.github.smart-fun:XmlToJson:1.5.1', + jsoup: 'org.jsoup:jsoup:1.14.2', + antlr4: 'org.antlr:antlr4-runtime:4.9.2' + ] + + androidx = [ + annotation: 'androidx.annotation:annotation:1.3.0', + appcompat: 'androidx.appcompat:appcompat:1.4.0', + cardview: 'androidx.cardview:cardview:1.0.0', + constraintlayout: 'androidx.constraintlayout:constraintlayout:2.1.2', + coordinatorlayout: 'androidx.coordinatorlayout:coordinatorlayout:1.1.0', + drawer: 'androidx.drawerlayout:drawerlayout:1.1.1', + grid: 'androidx.gridlayout:gridlayout:1.0.0', + preference: 'androidx.preference:preference:1.1.1', + recyclerview: 'androidx.recyclerview:recyclerview:1.2.1', + vectors: 'androidx.vectordrawable:vectordrawable:1.1.0', + animated_vectors: 'androidx.vectordrawable:vectordrawable-animated:1.1.0', + multidex: 'androidx.multidex:multidex:2.0.1' + ] + + google = [ + material: 'com.google.android.material:material:1.4.0', + gson: 'com.google.code.gson:gson:2.8.8', + guava: 'com.google.guava:guava:30.1.1-android' + ] +} \ No newline at end of file diff --git a/javapoet/build.gradle b/javapoet/build.gradle index 313b893e1..59ebf8129 100644 --- a/javapoet/build.gradle +++ b/javapoet/build.gradle @@ -25,5 +25,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.google.code.gson:gson:2.8.5' + implementation google.gson } diff --git a/layout-inflater/build.gradle b/layout-inflater/build.gradle index 1b71ff6fd..d662659e1 100644 --- a/layout-inflater/build.gradle +++ b/layout-inflater/build.gradle @@ -25,12 +25,12 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.annotation:annotation:1.2.0' - implementation 'androidx.appcompat:appcompat:1.3.1' + implementation androidx.annotation + implementation androidx.appcompat - implementation 'com.google.guava:guava:31.0.1-android' - implementation 'com.blankj:utilcodex:1.30.6' - implementation 'org.jsoup:jsoup:1.14.2' + implementation google.guava + implementation common.utilcode + implementation common.jsoup implementation project (":common") api project (':sdk-info') diff --git a/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/README.md b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/README.md index af866a26b..426cbd21c 100644 --- a/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/README.md +++ b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/README.md @@ -40,7 +40,7 @@ See ```XMLLayoutInflater#onCreateAttributeAdapter(View)```. You could also check if you can use a method. Some methods are already implemented in ViewAttrAdapter so you won't have to rewrite them. For example: -```java +``` isApi26() // Android 8 (Oreo) isApi28() // Android 9 (Pie) isApi29() // Android 10 (Q) diff --git a/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/AbsSeekBarAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/AbsSeekBarAttrAdapter.java new file mode 100644 index 000000000..d40410a0a --- /dev/null +++ b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/AbsSeekBarAttrAdapter.java @@ -0,0 +1,59 @@ +package com.itsaky.layoutinflater.adapters.android.widget; + +import android.view.View; +import android.widget.AbsSeekBar; +import androidx.annotation.NonNull; +import com.itsaky.layoutinflater.IAttribute; +import com.itsaky.layoutinflater.IResourceFinder; + +/** + * Attribute adapter for handling attributes related to + * AbsSeekBar. + * + * @author Akash Yadav + */ +public abstract class AbsSeekBarAttrAdapter extends ProgressBarAttrAdapter { + + @Override + public boolean isApplicableTo(View view) { + return view instanceof AbsSeekBar; + } + + @Override + public boolean apply(@NonNull IAttribute attribute, View view, IResourceFinder resFinder) { + final var seek = (AbsSeekBar) view; + final var namespace = attribute.getNamespace(); + final var name = attribute.getAttributeName(); + final var value = attribute.getValue(); + + if (!canHandleNamespace(namespace)) { + return false; + } + + boolean handled = true; + + switch (name) { + case "thumbTint" : + // TODO Parse color state list + break; + case "thumbTintMode" : + seek.setThumbTintMode(parsePorterDuffMode(value)); + break; + case "tickMarkTint" : + // TODO Parse color state list + break; + case "tickMarkTintMode": + seek.setTickMarkTintMode(parsePorterDuffMode(value)); + break; + default: + handled = false; + break; + } + + if (!handled) { + handled = super.apply(attribute, view, resFinder); + } + + return handled; + } +} diff --git a/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/RadioButtonAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/RadioButtonAttrAdapter.java new file mode 100644 index 000000000..7997ae2dc --- /dev/null +++ b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/RadioButtonAttrAdapter.java @@ -0,0 +1,27 @@ +package com.itsaky.layoutinflater.adapters.android.widget; + +import android.view.View; +import android.widget.RadioButton; + +import com.itsaky.layoutinflater.IAttribute; +import com.itsaky.layoutinflater.IResourceFinder; + +/** + * Attribute adapter for handling attributes related to + * RadioButton. + * + * @author Akash Yadav + */ +public class RadioButtonAttrAdapter extends CompondButtonAttrAdapter { + + @Override + public boolean isApplicableTo(View view) { + return view instanceof RadioButton; + } + + @Override + public boolean apply(IAttribute attribute, View view, IResourceFinder resFinder) { + // No special attributes for RadioButton + return super.apply(attribute, view, resFinder); + } +} diff --git a/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/SeekBarAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/SeekBarAttrAdapter.java new file mode 100644 index 000000000..76c5ca8a9 --- /dev/null +++ b/layout-inflater/src/main/java/com/itsaky/layoutinflater/adapters/android/widget/SeekBarAttrAdapter.java @@ -0,0 +1,49 @@ +package com.itsaky.layoutinflater.adapters.android.widget; + +import android.view.View; +import android.widget.SeekBar; + +import androidx.annotation.NonNull; + +import com.itsaky.layoutinflater.IAttribute; +import com.itsaky.layoutinflater.IResourceFinder; + +/** + * Attribute adapter for handling attributes related to + * SeekBar. + * + * @author Akash Yadav + */ +public class SeekBarAttrAdapter extends AbsSeekBarAttrAdapter { + + @Override + public boolean isApplicableTo(View view) { + return view instanceof SeekBar; + } + + @Override + public boolean apply(@NonNull IAttribute attribute, View view, IResourceFinder resFinder) { + final var seek = (SeekBar) view; + final var context = seek.getContext(); + final var namespace = attribute.getNamespace(); + final var name = attribute.getAttributeName(); + final var value = attribute.getValue(); + + if (!canHandleNamespace(namespace)) { + return false; + } + boolean handled = true; + + switch (name) { + case "thumb": + seek.setThumb(parseDrawable(value, resFinder, context)); + break; + default: + handled = false; + break; + } + + return handled; + + } +} diff --git a/lexers/build.gradle b/lexers/build.gradle index cf219316b..81f7a29e4 100644 --- a/lexers/build.gradle +++ b/lexers/build.gradle @@ -26,5 +26,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - api 'org.antlr:antlr4-runtime:4.9.2' + api common.antlr4 } diff --git a/lsp/build.gradle b/lsp/build.gradle index 19c59c115..3f7bbdf7d 100644 --- a/lsp/build.gradle +++ b/lsp/build.gradle @@ -25,7 +25,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.google.code.gson:gson:2.8.7' + implementation google.gson // LSP4J - implementation 'org.eclipse.lsp4j:org.eclipse.lsp4j:0.12.0' + implementation common.lsp4j } diff --git a/sdk-info/build.gradle b/sdk-info/build.gradle index ba30c513b..b3f6c7bce 100644 --- a/sdk-info/build.gradle +++ b/sdk-info/build.gradle @@ -25,6 +25,6 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.blankj:utilcodex:1.30.6' - implementation 'org.jsoup:jsoup:1.14.2' + implementation common.utilcode + implementation common.jsoup } diff --git a/treeview/build.gradle b/treeview/build.gradle index 0add6fd09..ae2ea8638 100644 --- a/treeview/build.gradle +++ b/treeview/build.gradle @@ -25,5 +25,5 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.3.0' + implementation androidx.appcompat }