diff --git a/app/.gitignore b/app/.gitignore index 56cc6425e..ab9532df6 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -83,3 +83,7 @@ lint/generated/ lint/outputs/ lint/tmp/ # lint/reports/ + +# Proguard files +dictionary.txt +proguard-rules.pro diff --git a/app/build.gradle b/app/build.gradle index 6b16cd67a..b9684b3f2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,10 +2,6 @@ apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' -if(rootProject.ext.stringfogEnabled) { - apply plugin: com.github.megatronking.stringfog.plugin.StringFogPlugin -} - android { compileSdkVersion rootProject.ext.compileSdk buildToolsVersion rootProject.ext.buildTools @@ -27,6 +23,7 @@ android { targetCompatibility rootProject.ext.javaTargetVersion } + // This is to get completions for R.java in AIDE aaptOptions { additionalParameters "--java", "$buildDir/gen" } @@ -41,25 +38,20 @@ android { buildFeatures.viewBinding true - def key = new File("/sdcard/AndroidAppProjects/publishKey.keystore"); - def isKeyAvailable = key.exists() - - if(isKeyAvailable) { - signingConfigs { - - debug { - storeFile file("/sdcard/AndroidAppProjects/publishKey.keystore") - storePassword "itsaky" - keyAlias "itsaky" - keyPassword "itsaky" - } + signingConfigs { - release { - storeFile file("/sdcard/AndroidAppProjects/publishKey.keystore") - storePassword "itsaky" - keyAlias "itsaky" - keyPassword "itsaky" - } + debug { + storeFile file("dev.keystore") + keyAlias "androidide" + storePassword "ed68424fb109e5aa8146e4b86caa72e3" + keyPassword "ed68424fb109e5aa8146e4b86caa72e3" + } + + release { + storeFile file("dev.keystore") + keyAlias "androidide" + storePassword "ed68424fb109e5aa8146e4b86caa72e3" + keyPassword "ed68424fb109e5aa8146e4b86caa72e3" } } @@ -67,12 +59,13 @@ android { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - if(isKeyAvailable) { signingConfig signingConfigs.debug } + signingConfig signingConfigs.debug } release { minifyEnabled true + shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - if(isKeyAvailable) { signingConfig signingConfigs.release } + signingConfig signingConfigs.release } } @@ -88,14 +81,7 @@ android { } } -if(rootProject.ext.stringfogEnabled) { - stringfog { - key 'WVV0aGMwaEFZVzVFVW05SlJFbGtaUT09' - enable true - implementation 'com.github.megatronking.stringfog.xor.StringFogImpl' - } -} - +// 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' diff --git a/app/dev.keystore b/app/dev.keystore new file mode 100644 index 000000000..ce5be0b63 Binary files /dev/null and b/app/dev.keystore differ diff --git a/app/src/main/assets/data/common/jls.jar b/app/src/main/assets/data/common/jls.jar index 11cd22134..b73734f1a 100644 Binary files a/app/src/main/assets/data/common/jls.jar and b/app/src/main/assets/data/common/jls.jar differ diff --git a/app/src/main/java/com/itsaky/androidide/AboutActivity.java b/app/src/main/java/com/itsaky/androidide/AboutActivity.java index ce457b491..5034dae46 100644 --- a/app/src/main/java/com/itsaky/androidide/AboutActivity.java +++ b/app/src/main/java/com/itsaky/androidide/AboutActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/DesignerActivity.java b/app/src/main/java/com/itsaky/androidide/DesignerActivity.java index 005e083f2..6e1d50568 100644 --- a/app/src/main/java/com/itsaky/androidide/DesignerActivity.java +++ b/app/src/main/java/com/itsaky/androidide/DesignerActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/DownloadActivity.java b/app/src/main/java/com/itsaky/androidide/DownloadActivity.java index fe8182820..baef766dc 100644 --- a/app/src/main/java/com/itsaky/androidide/DownloadActivity.java +++ b/app/src/main/java/com/itsaky/androidide/DownloadActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/EditorActivity.java b/app/src/main/java/com/itsaky/androidide/EditorActivity.java index 01bb80216..ed3214749 100644 --- a/app/src/main/java/com/itsaky/androidide/EditorActivity.java +++ b/app/src/main/java/com/itsaky/androidide/EditorActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ * **************************************************************************************/ - package com.itsaky.androidide; import android.annotation.SuppressLint; @@ -268,7 +267,7 @@ public class EditorActivity extends StudioActivity implements FileTreeFragment.F boolean saved = false; try { - saveAll(); + saveAll(false /* No notification */); saved = true; } catch (Throwable th) { LOG.error(":onPause(): Failed to save files", th); diff --git a/app/src/main/java/com/itsaky/androidide/MainActivity.java b/app/src/main/java/com/itsaky/androidide/MainActivity.java index 1cabff92d..f75657b2f 100644 --- a/app/src/main/java/com/itsaky/androidide/MainActivity.java +++ b/app/src/main/java/com/itsaky/androidide/MainActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,15 +18,16 @@ * **************************************************************************************/ - package com.itsaky.androidide; import abhishekti7.unicorn.filepicker.UnicornFilePicker; import android.content.Intent; import android.os.Bundle; +import android.os.Environment; import android.view.View; import androidx.transition.Transition; import androidx.transition.TransitionManager; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.transition.MaterialContainerTransform; import com.itsaky.androidide.app.StudioActivity; import com.itsaky.androidide.databinding.ActivityMainBinding; @@ -35,20 +36,18 @@ import com.itsaky.androidide.databinding.LayoutCreateProjectContentBinding; import com.itsaky.androidide.fragments.sheets.ProgressSheet; import com.itsaky.androidide.interfaces.ProjectWriterCallback; import com.itsaky.androidide.managers.PreferenceManager; -import com.itsaky.androidide.project.AndroidProject; +import com.itsaky.androidide.models.ConstantsBridge; import com.itsaky.androidide.models.NewProjectDetails; import com.itsaky.androidide.models.ProjectTemplate; -import com.itsaky.androidide.utils.ProjectFinder; +import com.itsaky.androidide.project.AndroidProject; import com.itsaky.androidide.tasks.TaskExecutor; import com.itsaky.androidide.tasks.callables.ProjectCreatorCallable; +import com.itsaky.androidide.utils.ProjectFinder; import com.itsaky.androidide.utils.TransformUtils; import com.itsaky.toaster.Toaster; import java.io.File; import java.util.ArrayList; import java.util.concurrent.Callable; -import com.itsaky.androidide.models.ConstantsBridge; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import android.os.Environment; public class MainActivity extends StudioActivity implements View.OnClickListener, ProjectWriterCallback { diff --git a/app/src/main/java/com/itsaky/androidide/PreferencesActivity.java b/app/src/main/java/com/itsaky/androidide/PreferencesActivity.java index 1d1b8ebcb..d17285570 100644 --- a/app/src/main/java/com/itsaky/androidide/PreferencesActivity.java +++ b/app/src/main/java/com/itsaky/androidide/PreferencesActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/SplashActivity.java b/app/src/main/java/com/itsaky/androidide/SplashActivity.java index 6254b73b9..ef989ea11 100644 --- a/app/src/main/java/com/itsaky/androidide/SplashActivity.java +++ b/app/src/main/java/com/itsaky/androidide/SplashActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/TerminalActivity.java b/app/src/main/java/com/itsaky/androidide/TerminalActivity.java index 3bf25c004..a8533a864 100644 --- a/app/src/main/java/com/itsaky/androidide/TerminalActivity.java +++ b/app/src/main/java/com/itsaky/androidide/TerminalActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.java index cf4c54305..ace8a95b2 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/CompletionListAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticItemAdpater.java b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticItemAdpater.java index 585e88243..8c2674566 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticItemAdpater.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticItemAdpater.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java index 993eabf24..ea9e61d29 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/DiagnosticsAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/EditorPagerAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/EditorPagerAdapter.java index 44b48e47d..74e35a593 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/EditorPagerAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/EditorPagerAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/MainPagerAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/MainPagerAdapter.java index 1bde50481..315abfe2e 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/MainPagerAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/MainPagerAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/ModuleInfoAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/ModuleInfoAdapter.java index da8a7cf0b..1e4767907 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/ModuleInfoAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/ModuleInfoAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/OptionsSheetAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/OptionsSheetAdapter.java index 98a45dea7..4afde6799 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/OptionsSheetAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/OptionsSheetAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/ProjectsListAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/ProjectsListAdapter.java index b7a8be428..62364810d 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/ProjectsListAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/ProjectsListAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/SearchListAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/SearchListAdapter.java index ab52a11ad..2e03588c8 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/SearchListAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/SearchListAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java index 22776716a..486ec343c 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/SymbolInputAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java b/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java index cbf91366e..904366d3d 100644 --- a/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java +++ b/app/src/main/java/com/itsaky/androidide/adapters/viewholders/FileTreeViewHolder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/app/StudioActivity.java b/app/src/main/java/com/itsaky/androidide/app/StudioActivity.java index c54436d99..26ccf6cb6 100644 --- a/app/src/main/java/com/itsaky/androidide/app/StudioActivity.java +++ b/app/src/main/java/com/itsaky/androidide/app/StudioActivity.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/app/StudioApp.java b/app/src/main/java/com/itsaky/androidide/app/StudioApp.java index 3239040ce..cd90a4c2a 100644 --- a/app/src/main/java/com/itsaky/androidide/app/StudioApp.java +++ b/app/src/main/java/com/itsaky/androidide/app/StudioApp.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.java index b77c195f0..f1019ff42 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/BaseFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/EditorFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/EditorFragment.java index 280e3ff20..97e3eea61 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/EditorFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/EditorFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/FileTreeFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/FileTreeFragment.java index b6b2dcc9b..a02151166 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/FileTreeFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/FileTreeFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/ProjectsFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/ProjectsFragment.java index c269a13d6..f46ad82a6 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/ProjectsFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/ProjectsFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/preferences/BasePreferenceFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/preferences/BasePreferenceFragment.java index 60500c976..348c05c80 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/preferences/BasePreferenceFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/preferences/BasePreferenceFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/preferences/BuildPreferences.java b/app/src/main/java/com/itsaky/androidide/fragments/preferences/BuildPreferences.java index 0e42315dd..c0bce810e 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/preferences/BuildPreferences.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/preferences/BuildPreferences.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/preferences/EditorPreferences.java b/app/src/main/java/com/itsaky/androidide/fragments/preferences/EditorPreferences.java index 6130cc84b..9b43fdb11 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/preferences/EditorPreferences.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/preferences/EditorPreferences.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/preferences/GeneralPreferences.java b/app/src/main/java/com/itsaky/androidide/fragments/preferences/GeneralPreferences.java index 06aec1271..1bf57122d 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/preferences/GeneralPreferences.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/preferences/GeneralPreferences.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/preferences/IDEPreferences.java b/app/src/main/java/com/itsaky/androidide/fragments/preferences/IDEPreferences.java index 26d60269b..f943575a6 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/preferences/IDEPreferences.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/preferences/IDEPreferences.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/BaseBottomSheetFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/BaseBottomSheetFragment.java index 95bf8a6f6..4161462fd 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/BaseBottomSheetFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/BaseBottomSheetFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/LogSheet.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/LogSheet.java index 17e87ba69..7f0199663 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/LogSheet.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/LogSheet.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/OptionsListFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/OptionsListFragment.java index 51dc456d4..2a42195db 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/OptionsListFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/OptionsListFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java index 8373d4a93..dba8cc2d4 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProgressSheet.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProjectInfoSheet.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProjectInfoSheet.java index 1d0a79c3d..b0477ffd9 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProjectInfoSheet.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/ProjectInfoSheet.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java b/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java index e2efc5e4b..25c4789aa 100644 --- a/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java +++ b/app/src/main/java/com/itsaky/androidide/fragments/sheets/TextSheetFragment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java b/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java index 80b1dec8a..a05429823 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java +++ b/app/src/main/java/com/itsaky/androidide/handlers/BuildServiceHandler.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/handlers/FileOptionsHandler.java b/app/src/main/java/com/itsaky/androidide/handlers/FileOptionsHandler.java index 025bf4344..570601434 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/FileOptionsHandler.java +++ b/app/src/main/java/com/itsaky/androidide/handlers/FileOptionsHandler.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/handlers/IDEHandler.java b/app/src/main/java/com/itsaky/androidide/handlers/IDEHandler.java index 1902de583..bf41b8b93 100644 --- a/app/src/main/java/com/itsaky/androidide/handlers/IDEHandler.java +++ b/app/src/main/java/com/itsaky/androidide/handlers/IDEHandler.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/interfaces/DexResultListener.java b/app/src/main/java/com/itsaky/androidide/interfaces/DexResultListener.java index 3860eb944..fd010fa4b 100644 --- a/app/src/main/java/com/itsaky/androidide/interfaces/DexResultListener.java +++ b/app/src/main/java/com/itsaky/androidide/interfaces/DexResultListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/interfaces/DiagnosticClickListener.java b/app/src/main/java/com/itsaky/androidide/interfaces/DiagnosticClickListener.java index 445a353bf..07c7fbb96 100644 --- a/app/src/main/java/com/itsaky/androidide/interfaces/DiagnosticClickListener.java +++ b/app/src/main/java/com/itsaky/androidide/interfaces/DiagnosticClickListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/interfaces/EditorActivityProvider.java b/app/src/main/java/com/itsaky/androidide/interfaces/EditorActivityProvider.java index 4526e7a18..9bba22286 100644 --- a/app/src/main/java/com/itsaky/androidide/interfaces/EditorActivityProvider.java +++ b/app/src/main/java/com/itsaky/androidide/interfaces/EditorActivityProvider.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/interfaces/Filter.java b/app/src/main/java/com/itsaky/androidide/interfaces/Filter.java index 536bdaca0..1df311cbc 100644 --- a/app/src/main/java/com/itsaky/androidide/interfaces/Filter.java +++ b/app/src/main/java/com/itsaky/androidide/interfaces/Filter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/interfaces/ProjectWriterCallback.java b/app/src/main/java/com/itsaky/androidide/interfaces/ProjectWriterCallback.java index 192a8e785..1c1255fd8 100644 --- a/app/src/main/java/com/itsaky/androidide/interfaces/ProjectWriterCallback.java +++ b/app/src/main/java/com/itsaky/androidide/interfaces/ProjectWriterCallback.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/BaseLanguage.java b/app/src/main/java/com/itsaky/androidide/language/BaseLanguage.java index db58458cf..db109e93f 100644 --- a/app/src/main/java/com/itsaky/androidide/language/BaseLanguage.java +++ b/app/src/main/java/com/itsaky/androidide/language/BaseLanguage.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by 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 7f57e4e25..a8e5eb245 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 @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ * **************************************************************************************/ - package com.itsaky.androidide.language.groovy; import com.itsaky.androidide.syntax.lexer.impls.groovy.GroovyLexerImpl; @@ -31,6 +30,7 @@ import io.github.rosemoe.editor.text.TextAnalyzer; import java.io.File; import java.util.Map; import org.eclipse.lsp4j.Diagnostic; +import java.io.IOException; public class GroovyAnalyzer extends io.github.rosemoe.editor.langs.AbstractCodeAnalyzer { @@ -41,25 +41,24 @@ 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) { - try { - GroovyLexerImpl lexer = new GroovyLexerImpl(this.language, (Content) content, colors); - lexer.init(); + public void analyze(IDELanguageServer server, File file, CharSequence content, TextAnalyzeResult colors, TextAnalyzer.AnalyzeThread.Delegate delegate) throws IOException { + GroovyLexerImpl lexer = new GroovyLexerImpl(this.language, (Content) content, colors); + lexer.init(); + + // Adding spans, hex colors, block lines and all is handled by GroovyLexerImpl + while (delegate.shouldAnalyze()) { + // null = EOF + if(lexer.nextToken() == null) { + break; + } + } + + if (lexer.stack.isEmpty() && lexer.currSwitch > lexer.maxSwitch) { + lexer.maxSwitch = lexer.currSwitch; + } - // Adding spans, hex colors, block lines and all is handled by GroovyLexerImpl - while (delegate.shouldAnalyze()) { - // null = EOF - if(lexer.nextToken() == null) - break; - } - if (lexer.stack.isEmpty() && lexer.currSwitch > lexer.maxSwitch) - lexer.maxSwitch = lexer.currSwitch; - - colors.determine(lexer.lastLine); - colors.setSuppressSwitch(lexer.maxSwitch + 10); - colors.setHexColors(lexer.lineColors); - } catch (Throwable e) { - } + colors.determine(lexer.lastLine); + colors.setSuppressSwitch(lexer.maxSwitch + 10); } @Override diff --git a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java index 441c9686b..a8e1ca2af 100644 --- a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java +++ b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyAutoComplete.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java index 26288a9a8..0d039ff27 100644 --- a/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java +++ b/app/src/main/java/com/itsaky/androidide/language/groovy/GroovyLanguage.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/java/JavaAutoComplete.java b/app/src/main/java/com/itsaky/androidide/language/java/JavaAutoComplete.java index 9fb262334..9015f2ef2 100644 --- a/app/src/main/java/com/itsaky/androidide/language/java/JavaAutoComplete.java +++ b/app/src/main/java/com/itsaky/androidide/language/java/JavaAutoComplete.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java b/app/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java index 48b375a8b..a600e7fa1 100644 --- a/app/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java +++ b/app/src/main/java/com/itsaky/androidide/language/java/JavaLanguage.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/logs/LogLanguageImpl.java b/app/src/main/java/com/itsaky/androidide/language/logs/LogLanguageImpl.java index 4b05a59d5..9f09f9e91 100644 --- a/app/src/main/java/com/itsaky/androidide/language/logs/LogLanguageImpl.java +++ b/app/src/main/java/com/itsaky/androidide/language/logs/LogLanguageImpl.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.java b/app/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.java index ea961ebf0..77a1962d8 100644 --- a/app/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.java +++ b/app/src/main/java/com/itsaky/androidide/language/xml/XMLAnalyzer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,21 +18,19 @@ * **************************************************************************************/ - package com.itsaky.androidide.language.xml; import android.graphics.Color; import com.itsaky.androidide.lexers.xml.XMLLexer; import com.itsaky.lsp.SemanticHighlight; import com.itsaky.lsp.services.IDELanguageServer; -import io.github.rosemoe.editor.struct.HexColor; -import io.github.rosemoe.editor.text.CharPosition; +import io.github.rosemoe.editor.struct.Span; import io.github.rosemoe.editor.text.TextAnalyzeResult; import io.github.rosemoe.editor.text.TextAnalyzer; import io.github.rosemoe.editor.widget.EditorColorScheme; import java.io.File; +import java.io.IOException; import java.io.StringReader; -import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -44,68 +42,70 @@ import org.eclipse.lsp4j.Diagnostic; public class XMLAnalyzer extends io.github.rosemoe.editor.langs.AbstractCodeAnalyzer { @Override - public void analyze(IDELanguageServer server, File file, CharSequence content, TextAnalyzeResult colors, TextAnalyzer.AnalyzeThread.Delegate delegate) { - try { - HashMap lineColors = new HashMap<>(); - CodePointCharStream stream = CharStreams.fromReader(new StringReader(content.toString())); - XMLLexer lexer = new XMLLexer(stream); - Token token = null, previous = null; - int line = 0, column = 0, lastLine = 1; - boolean first = true; - while (delegate.shouldAnalyze()) { - token = lexer.nextToken(); - if (token == null) - break; - if (token.getType() == XMLLexer.EOF) { - lastLine = token.getLine() - 1; - break; - } - line = token.getLine() - 1; - column = token.getCharPositionInLine(); - lastLine = line; - switch (token.getType()) { - case XMLLexer.S : - case XMLLexer.SEA_WS : - if (first) - colors.addNormalIfNull(); - break; - case XMLLexer.COMMENT : - colors.addIfNeeded(line, column, EditorColorScheme.COMMENT); - break; - case XMLLexer.OPEN : - case XMLLexer.OPEN_SLASH : - case XMLLexer.CLOSE : - case XMLLexer.SLASH : - case XMLLexer.SLASH_CLOSE : - case XMLLexer.SPECIAL_CLOSE : - case XMLLexer.EQUALS : - case XMLLexer.XMLDeclOpen : - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); - break; - case XMLLexer.STRING : - colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); - addHexColorIfPresent(token, lineColors, line, column); - break; - case XMLLexer.Name : - colors.addIfNeeded(line, column, previous.getType() == XMLLexer.OPEN || previous.getType() == XMLLexer.OPEN_SLASH ? EditorColorScheme.XML_TAG : EditorColorScheme.TEXT_NORMAL); - addHexColorIfPresent(token, lineColors, line, column); - break; - case XMLLexer.TEXT : - colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); - addHexColorIfPresent(token, lineColors, line, column); - break; - default : - colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); - break; - } - first = false; - if (token.getType() != XMLLexer.SEA_WS && token.getType() != XMLLexer.S) - previous = token; - } - colors.determine(lastLine); - colors.setHexColors(lineColors); - } catch (Throwable th) { - } + public void analyze(IDELanguageServer server, File file, CharSequence content, TextAnalyzeResult colors, TextAnalyzer.AnalyzeThread.Delegate delegate) throws IOException { + CodePointCharStream stream = CharStreams.fromReader(new StringReader(content.toString())); + XMLLexer lexer = new XMLLexer(stream); + Token token = null, previous = null; + int line = 0, column = 0, lastLine = 1; + boolean first = true; + + while (delegate.shouldAnalyze()) { + token = lexer.nextToken(); + if (token == null) { + break; + } + + if (token.getType() == XMLLexer.EOF) { + lastLine = token.getLine() - 1; + break; + } + + line = token.getLine() - 1; + column = token.getCharPositionInLine(); + lastLine = line; + + Span span = null; // The added span + switch (token.getType()) { + case XMLLexer.S : + case XMLLexer.SEA_WS : + if (first) { + colors.addNormalIfNull(); + } + break; + case XMLLexer.COMMENT : + span = colors.addIfNeeded(line, column, EditorColorScheme.COMMENT); + break; + case XMLLexer.OPEN : + case XMLLexer.OPEN_SLASH : + case XMLLexer.CLOSE : + case XMLLexer.SLASH : + case XMLLexer.SLASH_CLOSE : + case XMLLexer.SPECIAL_CLOSE : + case XMLLexer.EQUALS : + case XMLLexer.XMLDeclOpen : + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + break; + case XMLLexer.STRING : + span = colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); + addHexColorIfPresent(token, span); + break; + case XMLLexer.Name : + span = colors.addIfNeeded(line, column, previous.getType() == XMLLexer.OPEN || previous.getType() == XMLLexer.OPEN_SLASH ? EditorColorScheme.XML_TAG : EditorColorScheme.TEXT_NORMAL); + addHexColorIfPresent(token, span); + break; + case XMLLexer.TEXT : + span = colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); + addHexColorIfPresent(token, span); + break; + default : + span = colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); + break; + } + first = false; + if (token.getType() != XMLLexer.SEA_WS && token.getType() != XMLLexer.S) + previous = token; + } + colors.determine(lastLine); } @Override @@ -116,17 +116,16 @@ public class XMLAnalyzer extends io.github.rosemoe.editor.langs.AbstractCodeAnal public void updateDiagnostics(Map> diagnostics) { } - private void addHexColorIfPresent(Token token, HashMap lineColors, int line, int column) { + private void addHexColorIfPresent(Token token, final Span span) { Matcher m = HEX.matcher(token.getText()); if (m.find()) { try { - final CharPosition start = new CharPosition(line, column + m.start()); - final CharPosition end = new CharPosition(line, start.column + (m.end() - m.start())); - final HexColor key = new HexColor(start, end); - final Integer value = Color.parseColor(token.getText().substring(m.start(), m.end())); - - lineColors.put(key, value); - } catch (Throwable th) {} + span.underlineColor = Color.parseColor(token.getText().substring(m.start(), m.end())); + span.underlineHeight = Span.HEX_COLOR_UNDERLINE_HEIGHT; + } catch (Throwable th) { + // ignored + // The hex color may not be a valid color code + } } } diff --git a/app/src/main/java/com/itsaky/androidide/language/xml/XMLAutoComplete.java b/app/src/main/java/com/itsaky/androidide/language/xml/XMLAutoComplete.java index 06d0dd623..1d8814365 100644 --- a/app/src/main/java/com/itsaky/androidide/language/xml/XMLAutoComplete.java +++ b/app/src/main/java/com/itsaky/androidide/language/xml/XMLAutoComplete.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java b/app/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java index 55459c91a..8fb224f8a 100644 --- a/app/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java +++ b/app/src/main/java/com/itsaky/androidide/language/xml/XMLLanguage.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/language/xml/completion/XMLCompletionService.java b/app/src/main/java/com/itsaky/androidide/language/xml/completion/XMLCompletionService.java index ba2aa2d72..fed0ae1d6 100644 --- a/app/src/main/java/com/itsaky/androidide/language/xml/completion/XMLCompletionService.java +++ b/app/src/main/java/com/itsaky/androidide/language/xml/completion/XMLCompletionService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/AsynchronousSocketLauncher.java b/app/src/main/java/com/itsaky/androidide/lsp/AsynchronousSocketLauncher.java index 5f8bf7a0d..bf3a94915 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/AsynchronousSocketLauncher.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/AsynchronousSocketLauncher.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java index 6016bb9fc..827dbb508 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/IDELanguageClientImpl.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/LSP.java b/app/src/main/java/com/itsaky/androidide/lsp/LSP.java index b88eb8a7d..9dc2768e5 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/LSP.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/LSP.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/LSPClientLauncher.java b/app/src/main/java/com/itsaky/androidide/lsp/LSPClientLauncher.java index cba1858fc..d30d214f6 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/LSPClientLauncher.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/LSPClientLauncher.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/LSPProvider.java b/app/src/main/java/com/itsaky/androidide/lsp/LSPProvider.java index d0594ae17..604fae406 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/LSPProvider.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/LSPProvider.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/LanguageServerWrapper.java b/app/src/main/java/com/itsaky/androidide/lsp/LanguageServerWrapper.java index 5d3d78118..28f7861a3 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/LanguageServerWrapper.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/LanguageServerWrapper.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/StandardStreamsLauncher.java b/app/src/main/java/com/itsaky/androidide/lsp/StandardStreamsLauncher.java index 6ccf1953b..49ecaff8b 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/StandardStreamsLauncher.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/StandardStreamsLauncher.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/TokenModifiers.java b/app/src/main/java/com/itsaky/androidide/lsp/TokenModifiers.java index 0e1f03a0a..1e591946d 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/TokenModifiers.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/TokenModifiers.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/TokenType.java b/app/src/main/java/com/itsaky/androidide/lsp/TokenType.java index f91f7b452..bcfb69916 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/TokenType.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/TokenType.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/handlers/JLSHandler.java b/app/src/main/java/com/itsaky/androidide/lsp/handlers/JLSHandler.java index a63a41c16..d1773782c 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/handlers/JLSHandler.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/handlers/JLSHandler.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ * **************************************************************************************/ - package com.itsaky.androidide.lsp.handlers; import com.itsaky.androidide.app.StudioApp; @@ -68,7 +67,7 @@ public class JLSHandler implements LSPHandler { } }; - executor.execAsync(holder, listener, false, Environment.JAVA.getAbsolutePath(), "-agentlib:hook2", "-jar", Environment.JLS_JAR.getAbsolutePath(), QUIET ? "--quiet" : ""); + executor.execAsync(holder, listener, false, Environment.JAVA.getAbsolutePath(), "-jar", Environment.JLS_JAR.getAbsolutePath(), QUIET ? "--quiet" : ""); startReader (holder.err); // holder.in is used by LSP4J if (!IDELanguageClientImpl.isInitialized()) { diff --git a/app/src/main/java/com/itsaky/androidide/lsp/handlers/LSPHandler.java b/app/src/main/java/com/itsaky/androidide/lsp/handlers/LSPHandler.java index b7d9cd286..19081fd3e 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/handlers/LSPHandler.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/handlers/LSPHandler.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/lsp/providers/CodeActionProvider.java b/app/src/main/java/com/itsaky/androidide/lsp/providers/CodeActionProvider.java index bf1bcdb35..98c71c2c6 100644 --- a/app/src/main/java/com/itsaky/androidide/lsp/providers/CodeActionProvider.java +++ b/app/src/main/java/com/itsaky/androidide/lsp/providers/CodeActionProvider.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/managers/PreferenceManager.java b/app/src/main/java/com/itsaky/androidide/managers/PreferenceManager.java index 3fc541ab0..d631af99e 100644 --- a/app/src/main/java/com/itsaky/androidide/managers/PreferenceManager.java +++ b/app/src/main/java/com/itsaky/androidide/managers/PreferenceManager.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/managers/ToolsManager.java b/app/src/main/java/com/itsaky/androidide/managers/ToolsManager.java index 9a7da3f04..856534bd8 100644 --- a/app/src/main/java/com/itsaky/androidide/managers/ToolsManager.java +++ b/app/src/main/java/com/itsaky/androidide/managers/ToolsManager.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/managers/VersionedFileManager.java b/app/src/main/java/com/itsaky/androidide/managers/VersionedFileManager.java index 8dc76c697..074a19149 100644 --- a/app/src/main/java/com/itsaky/androidide/managers/VersionedFileManager.java +++ b/app/src/main/java/com/itsaky/androidide/managers/VersionedFileManager.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java b/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java index 516758a87..afdc23fc7 100644 --- a/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java +++ b/app/src/main/java/com/itsaky/androidide/models/ApkMetadata.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/ConstantsBridge.java b/app/src/main/java/com/itsaky/androidide/models/ConstantsBridge.java index 3dffc97ea..d5ab0c4ad 100644 --- a/app/src/main/java/com/itsaky/androidide/models/ConstantsBridge.java +++ b/app/src/main/java/com/itsaky/androidide/models/ConstantsBridge.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/DexPair.java b/app/src/main/java/com/itsaky/androidide/models/DexPair.java index 3c02e48e6..eb3a083a3 100644 --- a/app/src/main/java/com/itsaky/androidide/models/DexPair.java +++ b/app/src/main/java/com/itsaky/androidide/models/DexPair.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/DiagnosticGroup.java b/app/src/main/java/com/itsaky/androidide/models/DiagnosticGroup.java index 0cc421578..640b0c517 100644 --- a/app/src/main/java/com/itsaky/androidide/models/DiagnosticGroup.java +++ b/app/src/main/java/com/itsaky/androidide/models/DiagnosticGroup.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/License.java b/app/src/main/java/com/itsaky/androidide/models/License.java index ab1e2f310..95dcbde7f 100644 --- a/app/src/main/java/com/itsaky/androidide/models/License.java +++ b/app/src/main/java/com/itsaky/androidide/models/License.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/LogLine.java b/app/src/main/java/com/itsaky/androidide/models/LogLine.java index 2ee3e2f15..1f597a664 100644 --- a/app/src/main/java/com/itsaky/androidide/models/LogLine.java +++ b/app/src/main/java/com/itsaky/androidide/models/LogLine.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/NewProjectDetails.java b/app/src/main/java/com/itsaky/androidide/models/NewProjectDetails.java index 9a2aa767d..693fbc03f 100644 --- a/app/src/main/java/com/itsaky/androidide/models/NewProjectDetails.java +++ b/app/src/main/java/com/itsaky/androidide/models/NewProjectDetails.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/ProjectTemplate.java b/app/src/main/java/com/itsaky/androidide/models/ProjectTemplate.java index f41a3ea4c..6d3dcc5db 100644 --- a/app/src/main/java/com/itsaky/androidide/models/ProjectTemplate.java +++ b/app/src/main/java/com/itsaky/androidide/models/ProjectTemplate.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/SaveResult.java b/app/src/main/java/com/itsaky/androidide/models/SaveResult.java index 706c2555a..310b4360a 100644 --- a/app/src/main/java/com/itsaky/androidide/models/SaveResult.java +++ b/app/src/main/java/com/itsaky/androidide/models/SaveResult.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/SearchResult.java b/app/src/main/java/com/itsaky/androidide/models/SearchResult.java index 97f9f5350..74770fec6 100644 --- a/app/src/main/java/com/itsaky/androidide/models/SearchResult.java +++ b/app/src/main/java/com/itsaky/androidide/models/SearchResult.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/SheetOption.java b/app/src/main/java/com/itsaky/androidide/models/SheetOption.java index 6b25dcdfd..5cd99b339 100644 --- a/app/src/main/java/com/itsaky/androidide/models/SheetOption.java +++ b/app/src/main/java/com/itsaky/androidide/models/SheetOption.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/models/SuggestItem.java b/app/src/main/java/com/itsaky/androidide/models/SuggestItem.java index 06895a7c9..cc8f4a3d0 100644 --- a/app/src/main/java/com/itsaky/androidide/models/SuggestItem.java +++ b/app/src/main/java/com/itsaky/androidide/models/SuggestItem.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/project/AndroidProject.java b/app/src/main/java/com/itsaky/androidide/project/AndroidProject.java index 1c72e1e09..ad91af0a8 100644 --- a/app/src/main/java/com/itsaky/androidide/project/AndroidProject.java +++ b/app/src/main/java/com/itsaky/androidide/project/AndroidProject.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/project/IDEModule.java b/app/src/main/java/com/itsaky/androidide/project/IDEModule.java index cd889cc6f..72fc2a349 100644 --- a/app/src/main/java/com/itsaky/androidide/project/IDEModule.java +++ b/app/src/main/java/com/itsaky/androidide/project/IDEModule.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/project/IDEProject.java b/app/src/main/java/com/itsaky/androidide/project/IDEProject.java index 80e6a5d89..32959795e 100644 --- a/app/src/main/java/com/itsaky/androidide/project/IDEProject.java +++ b/app/src/main/java/com/itsaky/androidide/project/IDEProject.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/project/IDETask.java b/app/src/main/java/com/itsaky/androidide/project/IDETask.java index 833b3d470..a802529c6 100644 --- a/app/src/main/java/com/itsaky/androidide/project/IDETask.java +++ b/app/src/main/java/com/itsaky/androidide/project/IDETask.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/project/ProjectResourceFinder.java b/app/src/main/java/com/itsaky/androidide/project/ProjectResourceFinder.java index 61b486695..e763e9782 100644 --- a/app/src/main/java/com/itsaky/androidide/project/ProjectResourceFinder.java +++ b/app/src/main/java/com/itsaky/androidide/project/ProjectResourceFinder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/Jar2DexService.java b/app/src/main/java/com/itsaky/androidide/services/Jar2DexService.java index b68a4abe0..5b751a2b4 100644 --- a/app/src/main/java/com/itsaky/androidide/services/Jar2DexService.java +++ b/app/src/main/java/com/itsaky/androidide/services/Jar2DexService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/LogReceiver.java b/app/src/main/java/com/itsaky/androidide/services/LogReceiver.java index 2fa4cf64d..5a96b9d14 100644 --- a/app/src/main/java/com/itsaky/androidide/services/LogReceiver.java +++ b/app/src/main/java/com/itsaky/androidide/services/LogReceiver.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/MessagingService.java b/app/src/main/java/com/itsaky/androidide/services/MessagingService.java index 9d2f81375..2f1382df4 100644 --- a/app/src/main/java/com/itsaky/androidide/services/MessagingService.java +++ b/app/src/main/java/com/itsaky/androidide/services/MessagingService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/builder/BuildListener.java b/app/src/main/java/com/itsaky/androidide/services/builder/BuildListener.java index d0789c56f..fcb7a3523 100644 --- a/app/src/main/java/com/itsaky/androidide/services/builder/BuildListener.java +++ b/app/src/main/java/com/itsaky/androidide/services/builder/BuildListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/builder/IDEService.java b/app/src/main/java/com/itsaky/androidide/services/builder/IDEService.java index f9fc2f610..9ec512577 100644 --- a/app/src/main/java/com/itsaky/androidide/services/builder/IDEService.java +++ b/app/src/main/java/com/itsaky/androidide/services/builder/IDEService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/services/builder/MainThreadBuildListener.java b/app/src/main/java/com/itsaky/androidide/services/builder/MainThreadBuildListener.java index 70835ea19..275820faa 100644 --- a/app/src/main/java/com/itsaky/androidide/services/builder/MainThreadBuildListener.java +++ b/app/src/main/java/com/itsaky/androidide/services/builder/MainThreadBuildListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/sockets/SocketConnection.java b/app/src/main/java/com/itsaky/androidide/sockets/SocketConnection.java index 84414b7d0..272683cb5 100644 --- a/app/src/main/java/com/itsaky/androidide/sockets/SocketConnection.java +++ b/app/src/main/java/com/itsaky/androidide/sockets/SocketConnection.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java index a398b45a9..302550acf 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeAndroidIDE.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeWombat.java b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeWombat.java index a6c504248..a1dd1b7e4 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeWombat.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/colorschemes/SchemeWombat.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/DefaultLexer.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/DefaultLexer.java index 09f0d749f..746a4ae4c 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/DefaultLexer.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/DefaultLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/Lexer.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/Lexer.java index 33614c6a7..85f6472ee 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/Lexer.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/Lexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/Highlighter.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/Highlighter.java index 1138414f2..92e6b259a 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/Highlighter.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/Highlighter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/JavaHighlighter.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/JavaHighlighter.java index bb738065f..b6cbd0891 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/JavaHighlighter.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/highlighters/JavaHighlighter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/BaseJavaLexer.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/BaseJavaLexer.java index 14fabc06b..7fea584ce 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/BaseJavaLexer.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/BaseJavaLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,16 +24,15 @@ package com.itsaky.androidide.syntax.lexer.impls; import android.graphics.Color; import com.itsaky.androidide.syntax.lexer.DefaultLexer; import io.github.rosemoe.editor.struct.BlockLine; -import io.github.rosemoe.editor.struct.HexColor; -import io.github.rosemoe.editor.text.CharPosition; +import io.github.rosemoe.editor.struct.Span; import io.github.rosemoe.editor.text.Content; import io.github.rosemoe.editor.text.TextAnalyzeResult; import java.util.ArrayList; -import java.util.HashMap; import java.util.Stack; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.antlr.v4.runtime.Lexer; +import org.antlr.v4.runtime.Token; /** * Java and Groovy lexer is almost same @@ -54,31 +53,20 @@ public abstract class BaseJavaLexer extends DefaultLexer { protected org.antlr.v4.runtime.Token currentToken; protected TextAnalyzeResult colors; - public final HashMap lineColors = new HashMap<>(); public final Stack stack = new Stack(); protected ArrayList builtinTypes; - protected void addHexColorIfPresent() { - Matcher m = HEX.matcher(text()); - final int line= line(); - final int column = column(); - if (m.find()) { - try { - final CharPosition start = new CharPosition(line, column + m.start()); - final CharPosition end = new CharPosition(line, start.column + (m.end() - m.start())); - final HexColor key = new HexColor(start, end); - final Integer value = Color.parseColor(text().substring(m.start(), m.end())); - - // Null checks - start.getClass(); - end.getClass(); - key.getClass(); - - value.getClass(); - - lineColors.put(key, value); - } catch (Throwable th) {} - } + protected void addHexColorIfPresent(Token token, final Span span) { + Matcher m = HEX.matcher(token.getText()); + if (m.find()) { + try { + span.underlineColor = Color.parseColor(token.getText().substring(m.start(), m.end())); + span.underlineHeight = Span.HEX_COLOR_UNDERLINE_HEIGHT; + } catch (Throwable th) { + // ignored + // The hex color may not be a valid color code + } + } } protected final Pattern HEX = Pattern.compile("#[a-fA-F0-9]{3,8}"); diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/groovy/GroovyLexerImpl.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/groovy/GroovyLexerImpl.java index 62fd57048..f50b9d2c7 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/groovy/GroovyLexerImpl.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/groovy/GroovyLexerImpl.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ * **************************************************************************************/ - package com.itsaky.androidide.syntax.lexer.impls.groovy; import com.itsaky.androidide.lexers.groovy.GroovyLexer; @@ -30,18 +29,17 @@ import com.itsaky.androidide.utils.LSPUtils; import io.github.rosemoe.editor.interfaces.EditorLanguage; import io.github.rosemoe.editor.interfaces.NewlineHandler; import io.github.rosemoe.editor.struct.BlockLine; +import io.github.rosemoe.editor.struct.Span; import io.github.rosemoe.editor.text.CharPosition; import io.github.rosemoe.editor.text.Content; import io.github.rosemoe.editor.text.TextAnalyzeResult; import io.github.rosemoe.editor.text.TextUtils; import io.github.rosemoe.editor.widget.EditorColorScheme; import java.io.IOException; -import java.io.StringReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.antlr.v4.runtime.CharStreams; import org.eclipse.lsp4j.Range; public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { @@ -111,7 +109,10 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { final int line = line(); final int column = column(); final int tokenType = currentToken.getType(); + TokenType type = TokenType.TEXT; + + Span span; switch(tokenType) { case GroovyLexer.WS : type = TokenType.WS; @@ -160,7 +161,7 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { case GroovyLexer.VOLATILE: case GroovyLexer.WHILE: type = TokenType.KEYWORD; - colors.addIfNeeded(line, column, EditorColorScheme.KEYWORD); + span = colors.addIfNeeded(line, column, EditorColorScheme.KEYWORD); wasClassName = false; break; case GroovyLexer.DECIMAL_LITERAL: @@ -173,15 +174,15 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { case GroovyLexer.CHAR_LITERAL: case GroovyLexer.NULL_LITERAL: type = TokenType.NUMBER_LITERAL; - colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); + span = colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); wasClassName = false; break; case GroovyLexer.STRING_LITERAL : case GroovyLexer.SINGLE_QUOTE_STRING : type = TokenType.STRING_LITERAL; - colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); + span = colors.addIfNeeded(line, column, EditorColorScheme.LITERAL); wasClassName = false; - addHexColorIfPresent(); + addHexColorIfPresent(currentToken, span); break; case GroovyLexer.LPAREN : case GroovyLexer.RPAREN : @@ -228,7 +229,7 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { case GroovyLexer.ELLIPSIS : case GroovyLexer.DOT : type = TokenType.OPERATOR; - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); wasClassName = false; break; case GroovyLexer.BOOLEAN: @@ -241,41 +242,41 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { case GroovyLexer.LONG: case GroovyLexer.SHORT: type = TokenType.TYPE; - colors.addIfNeeded(line, column, EditorColorScheme.TYPE_NAME); + span = colors.addIfNeeded(line, column, EditorColorScheme.TYPE_NAME); wasClassName = true; break; case GroovyLexer.COMMENT : case GroovyLexer.LINE_COMMENT : type = TokenType.COMMENT; - colors.addIfNeeded(line, column, EditorColorScheme.COMMENT); + span = colors.addIfNeeded(line, column, EditorColorScheme.COMMENT); wasClassName = false; break; case GroovyLexer.AT : type = TokenType.ANNOTATION; - colors.addIfNeeded(line, column, EditorColorScheme.ANNOTATION); + span = colors.addIfNeeded(line, column, EditorColorScheme.ANNOTATION); wasClassName = false; break; case GroovyLexer.IDENTIFIER : type = TokenType.IDENTIFIER; if (previous == GroovyLexer.AT) { - colors.addIfNeeded(line, column, EditorColorScheme.ANNOTATION); + span = colors.addIfNeeded(line, column, EditorColorScheme.ANNOTATION); wasClassName = false; break; } if ((previous == GroovyLexer.IDENTIFIER || builtinTypes.contains(previous)) && wasClassName) { - colors.addIfNeeded(line, column, EditorColorScheme.LOCAL_VARIABLE); + span = colors.addIfNeeded(line, column, EditorColorScheme.LOCAL_VARIABLE); wasClassName = false; break; } - colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); + span = colors.addIfNeeded(line, column, EditorColorScheme.TEXT_NORMAL); break; case GroovyLexer.LBRACE : type = TokenType.OPERATOR; - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); wasClassName = false; if (stack.isEmpty()) { if (currSwitch > maxSwitch) @@ -290,7 +291,7 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { break; case GroovyLexer.RBRACE : type = TokenType.OPERATOR; - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); wasClassName = false; if (!stack.isEmpty()) { BlockLine block2 = stack.pop(); @@ -304,10 +305,10 @@ public class GroovyLexerImpl extends BaseJavaLexer implements Lexer { type = TokenType.TEXT; wasClassName = false; if (tokenType == GroovyLexer.LBRACK || (tokenType == GroovyLexer.RBRACK && previous == GroovyLexer.LBRACK)) { - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); break; } - colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); + span = colors.addIfNeeded(line, column, EditorColorScheme.OPERATOR); break; } diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/HighlightRangeHelper.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/HighlightRangeHelper.java index d7c918998..1306c00f5 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/HighlightRangeHelper.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/HighlightRangeHelper.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/JavaLexerImpl.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/JavaLexerImpl.java index db1c02f06..b287b319a 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/JavaLexerImpl.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/impls/java/JavaLexerImpl.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,7 +18,6 @@ * **************************************************************************************/ - package com.itsaky.androidide.syntax.lexer.impls.java; import androidx.core.util.Pair; @@ -98,8 +97,6 @@ public class JavaLexerImpl extends io.github.rosemoe.editor.langs.AbstractCodeAn colors.determine(lexer.lastLine); colors.setSuppressSwitch(lexer.maxSwitch + 10); - colors.setHexColors(lexer.lineColors); - } @Override @@ -331,7 +328,7 @@ public class JavaLexerImpl extends io.github.rosemoe.editor.langs.AbstractCodeAn stringMap.put(line, ranges); } - addHexColorIfPresent(); + addHexColorIfPresent(currentToken, span); break; case JavaLexer.LPAREN : case JavaLexer.RPAREN : diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/Token.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/Token.java index dbfc9f4b7..ffa14672e 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/Token.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/Token.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/TokenType.java b/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/TokenType.java index 293b685d8..c64ea92a8 100644 --- a/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/TokenType.java +++ b/app/src/main/java/com/itsaky/androidide/syntax/lexer/tokens/TokenType.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/BaseGradleTask.java b/app/src/main/java/com/itsaky/androidide/tasks/BaseGradleTask.java index 2bd249db3..e15dc440d 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/BaseGradleTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/BaseGradleTask.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java b/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java index 90f664149..f2866477a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/GradleTask.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.java b/app/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.java index fd3eefc03..8a53f0c2d 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/TaskExecutor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/FileTreeCallable.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/FileTreeCallable.java index 21445f9d1..c35439e88 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/FileTreeCallable.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/FileTreeCallable.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/LicenseReader.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/LicenseReader.java index f342ce234..acbaf227a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/LicenseReader.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/LicenseReader.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/ListDirectoryCallable.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/ListDirectoryCallable.java index 983de9a5a..86ba8bb55 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/ListDirectoryCallable.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/ListDirectoryCallable.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/ProjectCreatorCallable.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/ProjectCreatorCallable.java index 99c1a5cf1..2734aeb97 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/ProjectCreatorCallable.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/ProjectCreatorCallable.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/ReadFileTask.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/ReadFileTask.java index 7067cce4d..0a4c15e2b 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/ReadFileTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/ReadFileTask.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/callables/UnzipCallable.java b/app/src/main/java/com/itsaky/androidide/tasks/callables/UnzipCallable.java index 5d239d8ad..2db5c6959 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/callables/UnzipCallable.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/callables/UnzipCallable.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/BaseGradleTasks.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/BaseGradleTasks.java index 1a6abff8b..24aa78088 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/BaseGradleTasks.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/BaseGradleTasks.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java index 1e7ed208b..19e8191cd 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleDebug.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java index 8c92cc34b..ba5a4866a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/AssembleRelease.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java index dd7655fcc..c68bd663e 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Build.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java index 14f030a8b..68d4d72f4 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Bundle.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java index 8342fa9dc..9f8db7bdf 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/Clean.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java index 0ecedb93f..c994d79e5 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/build/CleanBuild.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java index 365d75b47..b8ee16077 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/Lint.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java index c85d7cf75..c85712dee 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintDebug.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java index 7e3333271..d2e66a51b 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/lint/LintRelease.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java index 4b2683615..89913b66b 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/plugin/InitializeIDEProject.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java index 0615b8ffe..854acace2 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/DatabindingGenBaseClassesDebug.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java index e38992b1f..427011b9a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/ProcessDebugResources.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java index 0752893b5..4ee58bb0a 100644 --- a/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java +++ b/app/src/main/java/com/itsaky/androidide/tasks/gradle/resources/UpdateResourceClassesTask.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/ClassBuilder.java b/app/src/main/java/com/itsaky/androidide/utils/ClassBuilder.java index 9e144215d..9fbb6635c 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/ClassBuilder.java +++ b/app/src/main/java/com/itsaky/androidide/utils/ClassBuilder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/Environment.java b/app/src/main/java/com/itsaky/androidide/utils/Environment.java index f4cfa2c17..f78ce607c 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/Environment.java +++ b/app/src/main/java/com/itsaky/androidide/utils/Environment.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/FileUtil.java b/app/src/main/java/com/itsaky/androidide/utils/FileUtil.java index 09e8c13b2..dc2f7ede0 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/FileUtil.java +++ b/app/src/main/java/com/itsaky/androidide/utils/FileUtil.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/InputStreamLineReader.java b/app/src/main/java/com/itsaky/androidide/utils/InputStreamLineReader.java index 4a3df3e8c..e40b4ef62 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/InputStreamLineReader.java +++ b/app/src/main/java/com/itsaky/androidide/utils/InputStreamLineReader.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/InputStreamWriter.java b/app/src/main/java/com/itsaky/androidide/utils/InputStreamWriter.java index 9b75f7ed4..7c95e881f 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/InputStreamWriter.java +++ b/app/src/main/java/com/itsaky/androidide/utils/InputStreamWriter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/IntProperty.java b/app/src/main/java/com/itsaky/androidide/utils/IntProperty.java index af29cafb9..5e3138fc0 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/IntProperty.java +++ b/app/src/main/java/com/itsaky/androidide/utils/IntProperty.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/JSONUtility.java b/app/src/main/java/com/itsaky/androidide/utils/JSONUtility.java index 83761e13c..6f8070fb5 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/JSONUtility.java +++ b/app/src/main/java/com/itsaky/androidide/utils/JSONUtility.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/JavaCharacter.java b/app/src/main/java/com/itsaky/androidide/utils/JavaCharacter.java index 7ff8ff788..1b0340753 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/JavaCharacter.java +++ b/app/src/main/java/com/itsaky/androidide/utils/JavaCharacter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java b/app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java index 8489fb394..9691a18fc 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java +++ b/app/src/main/java/com/itsaky/androidide/utils/LSPUtils.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/Logger.java b/app/src/main/java/com/itsaky/androidide/utils/Logger.java index 07ac13798..1ff5a1147 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/Logger.java +++ b/app/src/main/java/com/itsaky/androidide/utils/Logger.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/ProjectFinder.java b/app/src/main/java/com/itsaky/androidide/utils/ProjectFinder.java index a8b53be53..477d4e05b 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/ProjectFinder.java +++ b/app/src/main/java/com/itsaky/androidide/utils/ProjectFinder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/ProjectWriter.java b/app/src/main/java/com/itsaky/androidide/utils/ProjectWriter.java index e6a87a7c2..0040a8545 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/ProjectWriter.java +++ b/app/src/main/java/com/itsaky/androidide/utils/ProjectWriter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/RecursiveFileSearcher.java b/app/src/main/java/com/itsaky/androidide/utils/RecursiveFileSearcher.java index 5e237498c..d41369e0a 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/RecursiveFileSearcher.java +++ b/app/src/main/java/com/itsaky/androidide/utils/RecursiveFileSearcher.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/RuntimeTypeAdapterFactory.java b/app/src/main/java/com/itsaky/androidide/utils/RuntimeTypeAdapterFactory.java index 1c3da1208..f8f46b7f6 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/RuntimeTypeAdapterFactory.java +++ b/app/src/main/java/com/itsaky/androidide/utils/RuntimeTypeAdapterFactory.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/StudioUtils.java b/app/src/main/java/com/itsaky/androidide/utils/StudioUtils.java index 05d6e5741..98001ce1c 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/StudioUtils.java +++ b/app/src/main/java/com/itsaky/androidide/utils/StudioUtils.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/Symbols.java b/app/src/main/java/com/itsaky/androidide/utils/Symbols.java index 7573a8b47..494dd21fe 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/Symbols.java +++ b/app/src/main/java/com/itsaky/androidide/utils/Symbols.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java b/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java index 853f31599..e06a209f8 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java +++ b/app/src/main/java/com/itsaky/androidide/utils/TransformUtils.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/utils/TypefaceUtils.java b/app/src/main/java/com/itsaky/androidide/utils/TypefaceUtils.java index 5bd133271..4ad398c5c 100644 --- a/app/src/main/java/com/itsaky/androidide/utils/TypefaceUtils.java +++ b/app/src/main/java/com/itsaky/androidide/utils/TypefaceUtils.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/Editor.java b/app/src/main/java/com/itsaky/androidide/views/Editor.java index 920528382..525b0935c 100644 --- a/app/src/main/java/com/itsaky/androidide/views/Editor.java +++ b/app/src/main/java/com/itsaky/androidide/views/Editor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/EmptyView.java b/app/src/main/java/com/itsaky/androidide/views/EmptyView.java index b395cf3d7..2ecef0b9f 100644 --- a/app/src/main/java/com/itsaky/androidide/views/EmptyView.java +++ b/app/src/main/java/com/itsaky/androidide/views/EmptyView.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/MaterialBanner.java b/app/src/main/java/com/itsaky/androidide/views/MaterialBanner.java index 9d98131b9..ac470543c 100644 --- a/app/src/main/java/com/itsaky/androidide/views/MaterialBanner.java +++ b/app/src/main/java/com/itsaky/androidide/views/MaterialBanner.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/NonSwipableViewPager.java b/app/src/main/java/com/itsaky/androidide/views/NonSwipableViewPager.java index 41344728b..cb0360b5c 100644 --- a/app/src/main/java/com/itsaky/androidide/views/NonSwipableViewPager.java +++ b/app/src/main/java/com/itsaky/androidide/views/NonSwipableViewPager.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java b/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java index be33abdc8..132c06287 100644 --- a/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java +++ b/app/src/main/java/com/itsaky/androidide/views/SymbolInputView.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/TooltipLayout.java b/app/src/main/java/com/itsaky/androidide/views/TooltipLayout.java index aa1e47443..b59db41dd 100644 --- a/app/src/main/java/com/itsaky/androidide/views/TooltipLayout.java +++ b/app/src/main/java/com/itsaky/androidide/views/TooltipLayout.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/VerticalViewPager.java b/app/src/main/java/com/itsaky/androidide/views/VerticalViewPager.java index 108b8f343..1a1cb4595 100644 --- a/app/src/main/java/com/itsaky/androidide/views/VerticalViewPager.java +++ b/app/src/main/java/com/itsaky/androidide/views/VerticalViewPager.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/transition/ArcMotionPlus.java b/app/src/main/java/com/itsaky/androidide/views/transition/ArcMotionPlus.java index 00c595cd0..c59d45494 100644 --- a/app/src/main/java/com/itsaky/androidide/views/transition/ArcMotionPlus.java +++ b/app/src/main/java/com/itsaky/androidide/views/transition/ArcMotionPlus.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/transition/CubicBezierArc.java b/app/src/main/java/com/itsaky/androidide/views/transition/CubicBezierArc.java index 399e8c081..d138cba4f 100644 --- a/app/src/main/java/com/itsaky/androidide/views/transition/CubicBezierArc.java +++ b/app/src/main/java/com/itsaky/androidide/views/transition/CubicBezierArc.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/androidide/views/transition/ProgressTransition.java b/app/src/main/java/com/itsaky/androidide/views/transition/ProgressTransition.java index 034c70dc0..3a3012aba 100644 --- a/app/src/main/java/com/itsaky/androidide/views/transition/ProgressTransition.java +++ b/app/src/main/java/com/itsaky/androidide/views/transition/ProgressTransition.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/toaster/ToastWrapper.java b/app/src/main/java/com/itsaky/toaster/ToastWrapper.java index 72cfadade..3bb9c8c89 100644 --- a/app/src/main/java/com/itsaky/toaster/ToastWrapper.java +++ b/app/src/main/java/com/itsaky/toaster/ToastWrapper.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/com/itsaky/toaster/Toaster.java b/app/src/main/java/com/itsaky/toaster/Toaster.java index e9bc119ae..1a1737fd7 100644 --- a/app/src/main/java/com/itsaky/toaster/Toaster.java +++ b/app/src/main/java/com/itsaky/toaster/Toaster.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/app/src/main/java/io/github/rosemoe/editor/struct/HexColor.java b/app/src/main/java/io/github/rosemoe/editor/struct/HexColor.java deleted file mode 100644 index 59a502bc3..000000000 --- a/app/src/main/java/io/github/rosemoe/editor/struct/HexColor.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.rosemoe.editor.struct; - -import io.github.rosemoe.editor.text.CharPosition; - -public class HexColor { - public CharPosition start; - public CharPosition end; - - public HexColor(CharPosition start, CharPosition end) { - this.start = start; - this.end = end; - } - - public boolean isSameLine(int line) { - return start.line == line && end.line == line; - } - - public boolean isSameLine(HexColor color) { - return color != null && start.line == color.start.line && end.line == color.end.line; - } - - public boolean isSame(HexColor color) { - return color != null && color.start.equals(start) && color.end.equals(end); - } - - @Override - public boolean equals(Object obj) { - return obj != null && obj instanceof HexColor && isSame((HexColor) obj); - } -} diff --git a/app/src/main/java/io/github/rosemoe/editor/struct/Span.java b/app/src/main/java/io/github/rosemoe/editor/struct/Span.java index b0b3bd64f..43d254ae4 100644 --- a/app/src/main/java/io/github/rosemoe/editor/struct/Span.java +++ b/app/src/main/java/io/github/rosemoe/editor/struct/Span.java @@ -32,6 +32,10 @@ public class Span { public int column; public int colorId; public int underlineColor = 0; + public float underlineHeight; + + public static final float DEFAULT_UNDERLINE_HEIGHT = 0.1f; + public static final float HEX_COLOR_UNDERLINE_HEIGHT = 0.27f; /** * Create a new span @@ -45,6 +49,8 @@ public class Span { this.line = line; this.column = column; this.colorId = colorId; + this.underlineColor = 0; + this.underlineHeight = DEFAULT_UNDERLINE_HEIGHT; } public static Span obtain(int line, int column, int colorId) { @@ -79,6 +85,15 @@ public class Span { return this; } + /** + * Set the height of the underline of this span + * + * @param height The new height of the span's underline + */ + public void setUnderlineHeight (float height) { + this.underlineHeight = height; + } + /** * Get span start column * diff --git a/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzeResult.java b/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzeResult.java index bbc08e2c0..b90bac408 100644 --- a/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzeResult.java +++ b/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzeResult.java @@ -16,7 +16,6 @@ package io.github.rosemoe.editor.text; import io.github.rosemoe.editor.struct.BlockLine; -import io.github.rosemoe.editor.struct.HexColor; import io.github.rosemoe.editor.struct.NavigationItem; import io.github.rosemoe.editor.struct.Span; import io.github.rosemoe.editor.widget.EditorColorScheme; @@ -33,7 +32,7 @@ public class TextAnalyzeResult { protected final List mBlocks; protected final List> mSpanMap; - protected final HashMap mHexColor; + public Object mExtra; protected List mLabels; protected Span mLast; @@ -51,7 +50,6 @@ public class TextAnalyzeResult { mLast = null; mSpanMap = new ArrayList<>(2048); mBlocks = new ArrayList<>(1024); - mHexColor = new HashMap<>(); } public Map> getStringMap() { @@ -80,20 +78,6 @@ public class TextAnalyzeResult { commentMap.put(line, ranges); } - public void addHexColor(HexColor index, int color) { - mHexColor.put(index, color); - } - - public HashMap getHexColors() { - return mHexColor; - } - - public TextAnalyzeResult setHexColors(HashMap colors) { - this.mHexColor.clear(); - this.mHexColor.putAll(colors); - return this; - } - /** * Add a new span if required (colorId is different from last) * diff --git a/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzer.java b/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzer.java index 19c854d4c..631fc7f61 100644 --- a/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzer.java +++ b/app/src/main/java/io/github/rosemoe/editor/text/TextAnalyzer.java @@ -216,6 +216,7 @@ public class TextAnalyzer { } } while (true); } catch (Exception ex) { + // ignored } } diff --git a/app/src/main/java/io/github/rosemoe/editor/widget/CodeEditor.java b/app/src/main/java/io/github/rosemoe/editor/widget/CodeEditor.java index 91d354266..7418abf8f 100644 --- a/app/src/main/java/io/github/rosemoe/editor/widget/CodeEditor.java +++ b/app/src/main/java/io/github/rosemoe/editor/widget/CodeEditor.java @@ -23,7 +23,6 @@ import android.content.ClipboardManager; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; @@ -69,7 +68,7 @@ import com.itsaky.androidide.lsp.IDELanguageClientImpl; import com.itsaky.androidide.lsp.LSPProvider; import com.itsaky.androidide.lsp.providers.CodeActionProvider; import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE; -import com.itsaky.androidide.utils.JSONUtility; +import com.itsaky.androidide.utils.LSPUtils; import com.itsaky.androidide.utils.Logger; import com.itsaky.androidide.utils.Symbols; import com.itsaky.androidide.utils.TypefaceUtils; @@ -82,7 +81,6 @@ import io.github.rosemoe.editor.interfaces.NewlineHandler; import io.github.rosemoe.editor.langs.AbstractEditorLanguage; import io.github.rosemoe.editor.langs.EmptyLanguage; import io.github.rosemoe.editor.struct.BlockLine; -import io.github.rosemoe.editor.struct.HexColor; import io.github.rosemoe.editor.struct.Span; import io.github.rosemoe.editor.text.CharPosition; import io.github.rosemoe.editor.text.Content; @@ -99,7 +97,6 @@ import io.github.rosemoe.editor.util.IntPair; import io.github.rosemoe.editor.util.LongArrayList; import java.io.File; import java.util.ArrayList; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -135,8 +132,6 @@ import org.eclipse.lsp4j.TextDocumentIdentifier; import org.eclipse.lsp4j.TextDocumentItem; import org.eclipse.lsp4j.VersionedTextDocumentIdentifier; import org.eclipse.lsp4j.jsonrpc.messages.Either; -import android.os.Handler; -import com.itsaky.androidide.utils.LSPUtils; /** * CodeEditor is a editor that can highlight text regions by doing basic syntax analyzing @@ -225,8 +220,6 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca private int mInputType; private int mNonPrintableOptions; private int mCachedLineNumberWidth; - private int mErrorColor; - private int mWarningColor; private int mFileVersion = 0; private float mDpUnit; private float mDividerWidth; @@ -602,8 +595,6 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca setDefaultFocusHighlightEnabled(false); } - mErrorColor = Color.parseColor("#FF5252"); - mWarningColor = Color.parseColor("#FFD740"); mRect2.set(-1, -1, -1, -1); } @@ -1099,18 +1090,6 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca mFontCache.clearCache(); } - private long startClock; - - private void record() { - startClock = System.nanoTime(); - } - - private void print() { - double time = (System.nanoTime() - startClock) / 1e6; - if (time > 3.0) { - } - } - /** * Paint the view on given Canvas * @@ -1386,11 +1365,11 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca // Draw text drawRegionText(canvas, paintingOffset, getRowBaseline(row) - getOffsetY(), line, paintStart, paintEnd, columnCount, mColors.getColor(span.colorId)); - + // Draw underline if (span.underlineColor != 0) { - mRect.bottom = getRowBottom(line) - getOffsetY() - mDpUnit * 1; - mRect.top = mRect.bottom - getRowHeight() * 0.1f; + mRect.bottom = getRowBottom(line) - getOffsetY() - (mDpUnit * 0.5f); + mRect.top = mRect.bottom - getRowHeight() * span.underlineHeight; mRect.left = paintingOffset; mRect.right = paintingOffset + width; drawColor(canvas, span.underlineColor, mRect); @@ -1445,26 +1424,6 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca drawColor(canvas, mColors.getColor(EditorColorScheme.UNDERLINE), mRect); } } - - // Draw hex colors - final Map mLineColors = isLineColorsEnabled() && mSpanner != null ? mSpanner.getResult().getHexColors() : null; - if(mLineColors != null && mLineColors.size() > 0) { - for(HexColor c : mLineColors.keySet()) { - if(c != null && c.isSameLine(line) && mLineColors.get(c) != null) { - final int paintStart = Math.max(firstVisibleChar, c.start.column); - final int paintEnd = Math.min(lastVisibleChar, c.end.column); - final float width = measureText(mBuffer, paintStart, paintEnd - paintStart); - final Integer i = mLineColors.get(c); - if(i == null) continue; - final int col = i.intValue(); - mRect.bottom = getRowBottom(line) - getOffsetY() - mDpUnit * 1; - mRect.top = mRect.bottom - getRowHeight() * 0.2f; - mRect.left = paintingOffset + measureText(mBuffer, firstVisibleChar, paintStart - firstVisibleChar); - mRect.right = mRect.left + width; - drawColor(canvas, col, mRect); - } - } - } final Paint.Style style = mPaint.getStyle(); final float stroke = mPaint.getStrokeWidth(); diff --git a/build.gradle b/build.gradle index 0d896bf96..17fae2707 100644 --- a/build.gradle +++ b/build.gradle @@ -4,25 +4,19 @@ buildscript { buildTools = "31.0.0" minSdk = 24 targetSdk = 28 - versionCode = 2001211120 + versionCode = 200 versionName = "2.0-beta" packageName = "com.itsaky.androidide" javaSourceVersion = JavaVersion.VERSION_1_8 javaTargetVersion = JavaVersion.VERSION_1_8 - - stringfogEnabled = false } repositories { - maven { url 'https://maven.aliyun.com/repository/public/' } - maven { url 'https://maven.aliyun.com/repository/google/' } - maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' } - maven { url 'https://clojars.org/repo/'} - maven { url 'https://jitpack.io'} google() mavenLocal() mavenCentral() + maven { url 'https://jitpack.io'} } dependencies { @@ -34,15 +28,11 @@ buildscript { allprojects { repositories { - maven { url 'https://maven.aliyun.com/repository/public/' } - maven { url 'https://maven.aliyun.com/repository/google/' } - maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' } - maven { url 'https://clojars.org/repo/'} - maven { url 'https://jitpack.io'} - mavenLocal() - mavenCentral() google() - } + mavenLocal() + mavenCentral() + maven { url 'https://jitpack.io'} + } } task clean(type: Delete) { diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore deleted file mode 100644 index 796b96d1c..000000000 --- a/buildSrc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index 58b469362..000000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,36 +0,0 @@ -apply plugin: 'java' -apply plugin: 'groovy' - -repositories { - maven { url 'https://maven.aliyun.com/repository/public/' } - maven { url 'https://maven.aliyun.com/repository/google/' } - maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' } - maven { url 'https://clojars.org/repo/'} - maven { url 'https://jitpack.io'} - maven { url 'https://maven.google.com' } - google() - mavenLocal() - mavenCentral() -} - -dependencies { - implementation gradleApi() - implementation localGroovy() - implementation 'com.android.tools.build:gradle:7.0.2' - implementation 'com.google.guava:guava:31.0.1-jre' - implementation 'commons-io:commons-io:2.11.0' - implementation 'org.ow2.asm:asm:7.0' - implementation 'com.squareup:javapoet:1.9.0' -} - -sourceSets { - main { - groovy { - srcDir 'src/main/groovy' - } - - resources { - srcDir 'src/main/resources' - } - } -} diff --git a/buildSrc/gradle.properties b/buildSrc/gradle.properties deleted file mode 100644 index 1e46c0b08..000000000 --- a/buildSrc/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -GROUP=com.github.megatronking.stringfog -ARTIFACTID=gradle-plugin -VERSION=2.2.1 - diff --git a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogExtension.groovy b/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogExtension.groovy deleted file mode 100644 index 71037a029..000000000 --- a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogExtension.groovy +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin; - -/** - * StringFog extension. - *

- * - * stringfog { - * key 'Hello World' - * enable true - * } - * - * - * @author Megatron King - * @since 2017/3/7 17:44 - */ - -public class StringFogExtension { - - String key - boolean enable = true - boolean debug = false - String[] fogPackages = [] - String implementation - -} diff --git a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogPlugin.groovy b/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogPlugin.groovy deleted file mode 100644 index 83319487f..000000000 --- a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogPlugin.groovy +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin - -import com.android.build.gradle.AppExtension -import com.android.build.gradle.LibraryExtension -import com.github.megatronking.stringfog.plugin.utils.Log -import org.gradle.api.GradleException -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.UnknownTaskException -/** - * The plugin defines some tasks. - * - * @author Megatron King - * @since 2017/3/6 19:43 - */ - -class StringFogPlugin implements Plugin { - - private static final String PLUGIN_NAME = 'stringfog' - - @Override - void apply(Project project) { - project.extensions.create(PLUGIN_NAME, StringFogExtension) - - def android = project.extensions.android - if (android instanceof AppExtension) { - applyApplication(project, android) - } - if (android instanceof LibraryExtension) { - applyLibrary(project, android) - } - - project.afterEvaluate { - Log.setDebug(project.stringfog.debug) - } - } - - void applyApplication(Project project, def android) { - android.registerTransform(new StringFogTransformForApplication(project, android.applicationVariants)) - // throw an exception in instant run mode - android.applicationVariants.all { variant -> - def variantName = variant.name.capitalize() - try { - def instantRunTask = project.tasks.getByName("transformClassesWithInstantRunFor${variantName}") - if (instantRunTask) { - throw new GradleException( - "StringFog does not support instant run mode, please trigger build" - + " by assemble${variantName} or disable instant run" - + " in 'File->Settings...'." - ) - } - } catch (UnknownTaskException e) { - // Not in instant run mode, continue. - } - } - } - - void applyLibrary(Project project, def android) { - android.registerTransform(new StringFogTransformForLibrary(project, android.libraryVariants)) - } - -} diff --git a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransform.groovy b/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransform.groovy deleted file mode 100644 index 53a283495..000000000 --- a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransform.groovy +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin - -import com.android.build.api.transform.* -import com.android.build.gradle.api.BaseVariant -import com.github.megatronking.stringfog.plugin.utils.MD5 -import com.google.common.collect.ImmutableSet -import com.google.common.io.Files -import groovy.io.FileType -import org.gradle.api.DefaultTask -import org.gradle.api.DomainObjectSet -import org.gradle.api.Project -import org.gradle.api.Task - -abstract class StringFogTransform extends Transform { - - public static final String FOG_CLASS_NAME = 'StringFog' - private static final String TRANSFORM_NAME = 'stringFog' - - protected StringFogClassInjector mInjector - protected StringFogMappingPrinter mMappingPrinter - - protected String mKey - protected String mImplementation - - StringFogTransform(Project project, DomainObjectSet variants) { - project.afterEvaluate { - String key = project.stringfog.key - String[] fogPackages = project.stringfog.fogPackages - String implementation = project.stringfog.implementation - if (key == null || key.length() == 0) { - throw new IllegalArgumentException("Missing stringfog key config") - } - if (implementation == null || implementation.length() == 0) { - throw new IllegalArgumentException("Missing stringfog implementation config") - } - if (project.stringfog.enable) { - def applicationId = variants.first().applicationId - def manifestFile = project.file("src/main/AndroidManifest.xml") - if (manifestFile.exists()) { - def parsedManifest = new XmlParser().parse( - new InputStreamReader(new FileInputStream(manifestFile), "utf-8")) - if (parsedManifest != null) { - def packageName = parsedManifest.attribute("package") - if (packageName != null) { - applicationId = packageName - } - } - } - createFogClass(project, fogPackages, key, implementation, variants, applicationId) - } else { - mMappingPrinter = null - mInjector = null - } - mKey = key - mImplementation = implementation - } - } - - void createFogClass(def project, String[] fogPackages, String key, String implementation, - DomainObjectSet variants, def applicationId) { - variants.all { variant -> - def variantName = variant.name.toUpperCase()[0] + variant.name.substring(1, variant.name.length() - 1) - Task generateTask = project.tasks.findByName(variantName) - if (generateTask == null) { - generateTask = project.tasks.create("generate${variantName}StringFog", DefaultTask) - - def stringfogDir = new File(project.buildDir, "generated" + - File.separatorChar + "source" + File.separatorChar + "stringfog" + File.separatorChar + variant.name) - def stringfogFile = new File(stringfogDir, applicationId.replace((char)'.', File.separatorChar) + File.separator + "StringFog.java") - variant.registerJavaGeneratingTask(generateTask, stringfogDir) - - generateTask.doLast { - mMappingPrinter = new StringFogMappingPrinter( - new File(project.buildDir, "outputs/mapping/${variant.name.toLowerCase()}/stringfog.txt")) - // Create class injector - mInjector = new StringFogClassInjector(fogPackages, key, implementation, - applicationId + "." + FOG_CLASS_NAME, mMappingPrinter) - - // Generate StringFog.java - StringFogClassGenerator.generate(stringfogFile, applicationId, FOG_CLASS_NAME, - key, implementation) - } - } - } - } - - @Override - String getName() { - return TRANSFORM_NAME - } - - @Override - Set getInputTypes() { - return ImmutableSet.of(QualifiedContent.DefaultContentType.CLASSES) - } - - @Override - Set getScopes() { - return null - } - - @Override - boolean isIncremental() { - return true - } - - @Override - void transform(TransformInvocation transformInvocation) throws TransformException, InterruptedException, IOException { - def dirInputs = new HashSet<>() - def jarInputs = new HashSet<>() - - if (!transformInvocation.isIncremental()) { - transformInvocation.getOutputProvider().deleteAll() - } - - // Collecting inputs. - transformInvocation.inputs.each { input -> - input.directoryInputs.each { dirInput -> - dirInputs.add(dirInput) - } - input.jarInputs.each { jarInput -> - jarInputs.add(jarInput) - } - } - - if (mMappingPrinter != null) { - mMappingPrinter.startMappingOutput() - mMappingPrinter.ouputInfo(mKey, mImplementation) - } - - if (!dirInputs.isEmpty() || !jarInputs.isEmpty()) { - File dirOutput = transformInvocation.outputProvider.getContentLocation( - "classes", getOutputTypes(), getScopes(), Format.DIRECTORY) - dirOutput.mkdirs() - if (!dirInputs.isEmpty()) { - dirInputs.each { dirInput -> - if (transformInvocation.incremental) { - dirInput.changedFiles.each { entry -> - File fileInput = entry.getKey() - File fileOutput = new File(fileInput.getAbsolutePath().replace( - dirInput.file.getAbsolutePath(), dirOutput.getAbsolutePath())) - fileOutput.parentFile.mkdirs() - Status fileStatus = entry.getValue() - switch(fileStatus) { - case Status.ADDED: - case Status.CHANGED: - if (fileInput.isDirectory()) { - return // continue. - } - if (mInjector != null && fileInput.getName().endsWith('.class')) { - mInjector.doFog2Class(fileInput, fileOutput) - } else { - Files.copy(fileInput, fileOutput) - } - break - case Status.REMOVED: - if (fileOutput.exists()) { - if (fileOutput.isDirectory()) { - fileOutput.deleteDir() - } else { - fileOutput.delete() - } - } - break - } - } - } else { - dirInput.file.traverse(type: FileType.FILES) { fileInput -> - File fileOutput = new File(fileInput.getAbsolutePath().replace(dirInput.file.getAbsolutePath(), dirOutput.getAbsolutePath())) - fileOutput.parentFile.mkdirs() - if (mInjector != null && fileInput.getName().endsWith('.class')) { - mInjector.doFog2Class(fileInput, fileOutput) - } else { - Files.copy(fileInput, fileOutput) - } - } - } - } - } - - if (!jarInputs.isEmpty()) { - jarInputs.each { jarInput -> - File jarInputFile = jarInput.file - File jarOutputFile = transformInvocation.outputProvider.getContentLocation( - getUniqueHashName(jarInputFile), getOutputTypes(), getScopes(), Format.JAR - ) - - jarOutputFile.parentFile.mkdirs() - - switch (jarInput.status) { - case Status.NOTCHANGED: - if (transformInvocation.incremental) { - break - } - case Status.ADDED: - case Status.CHANGED: - if (mInjector != null) { - mInjector.doFog2Jar(jarInputFile, jarOutputFile) - } else { - Files.copy(jarInputFile, jarOutputFile) - } - break - case Status.REMOVED: - if (jarOutputFile.exists()) { - jarOutputFile.delete() - } - break - } - } - } - } - - if (mMappingPrinter != null) { - mMappingPrinter.endMappingOutput() - } - } - - String getUniqueHashName(File fileInput) { - final String fileInputName = fileInput.getName() - if (fileInput.isDirectory()) { - return fileInputName - } - final String parentDirPath = fileInput.getParentFile().getAbsolutePath() - final String pathMD5 = MD5.getMessageDigest(parentDirPath.getBytes()) - final int extSepPos = fileInputName.lastIndexOf('.') - final String fileInputNamePrefix = - (extSepPos >= 0 ? fileInputName.substring(0, extSepPos) : fileInputName) - return fileInputNamePrefix + '_' + pathMD5 - } - -} diff --git a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForApplication.groovy b/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForApplication.groovy deleted file mode 100644 index 4706291f7..000000000 --- a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForApplication.groovy +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.megatronking.stringfog.plugin - -import com.android.build.api.transform.QualifiedContent -import com.android.build.gradle.api.BaseVariant -import com.google.common.collect.ImmutableSet -import org.gradle.api.DomainObjectSet -import org.gradle.api.Project - -/** - * StringFog transform used in application. - * - * @author Megatron King - * @since 17/7/28 12:28 - */ - -class StringFogTransformForApplication extends StringFogTransform { - - StringFogTransformForApplication(Project project, DomainObjectSet variants) { - super(project, variants); - } - - @Override - Set getScopes() { - def name = QualifiedContent.Scope.PROJECT_LOCAL_DEPS.name() - def deprecated = QualifiedContent.Scope.PROJECT_LOCAL_DEPS.getClass() - .getField(name).getAnnotation(Deprecated.class) - - if (deprecated == null) { - return ImmutableSet. of(QualifiedContent.Scope.PROJECT - , QualifiedContent.Scope.PROJECT_LOCAL_DEPS - , QualifiedContent.Scope.EXTERNAL_LIBRARIES - , QualifiedContent.Scope.SUB_PROJECTS - , QualifiedContent.Scope.SUB_PROJECTS_LOCAL_DEPS) - } else { - return ImmutableSet. of(QualifiedContent.Scope.PROJECT - , QualifiedContent.Scope.EXTERNAL_LIBRARIES - , QualifiedContent.Scope.SUB_PROJECTS) - } - } - -} diff --git a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForLibrary.groovy b/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForLibrary.groovy deleted file mode 100644 index 12b588b2c..000000000 --- a/buildSrc/src/main/groovy/com/github/megatronking/stringfog/plugin/StringFogTransformForLibrary.groovy +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.megatronking.stringfog.plugin - -import com.android.build.api.transform.QualifiedContent -import com.android.build.gradle.api.BaseVariant -import com.google.common.collect.ImmutableSet -import org.gradle.api.DomainObjectSet -import org.gradle.api.Project -/** - * StringFog transform used in library. - * - * @author Megatron King - * @since 17/7/28 12:28 - */ - -class StringFogTransformForLibrary extends StringFogTransform { - - StringFogTransformForLibrary(Project project, DomainObjectSet variants) { - super(project, variants) - } - - @Override - Set getScopes() { - return ImmutableSet.of( - QualifiedContent.Scope.PROJECT - ) - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/Base64.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/Base64.java deleted file mode 100644 index 8dd26a626..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/Base64.java +++ /dev/null @@ -1,698 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.github.megatronking.stringfog; - -/** - * Utilities for encoding and decoding the Base64 representation of - * binary data. See RFCs 2045 and 3548. - */ -public final class Base64 { - - /** - * Default values for encoder/decoder flags. - */ - public static final int DEFAULT = 0; - - /** - * Encoder flag bit to omit the padding '=' characters at the end - * of the output (if any). - */ - public static final int NO_PADDING = 1; - - /** - * Encoder flag bit to omit all line terminators (i.e., the output - * will be on one long line). - */ - public static final int NO_WRAP = 2; - - /** - * Encoder flag bit to indicate lines should be terminated with a - * CRLF pair instead of just an LF. Has no effect if {@code - * NO_WRAP} is specified as well. - */ - private static final int CRLF = 4; - - /** - * Encoder/decoder flag bit to indicate using the "URL and - * filename safe" variant of Base64 (see RFC 3548 section 4) where - * {@code -} and {@code _} are used in place of {@code +} and - * {@code /}. - */ - private static final int URL_SAFE = 8; - - // -------------------------------------------------------- - // shared code - // -------------------------------------------------------- - - /* package */ static abstract class Coder { - byte[] output; - int op; - - /** - * Encode/decode another block of input data. this.output is - * provided by the caller, and must be big enough to hold all - * the coded data. On exit, this.opwill be set to the length - * of the coded data. - * - * @param finish true if this is the final call to process for - * this object. Will finalize the coder state and - * include any final bytes in the output. - * - * @return true if the input so far is good; false if some - * error has been detected in the input stream.. - */ - protected abstract boolean process(byte[] input, int offset, int len, boolean finish); - - /** - * @return the maximum number of bytes a call to process() - * could produce for the given number of input bytes. This may - * be an overestimate. - */ - protected abstract int maxOutputSize(int len); - } - - // -------------------------------------------------------- - // decoding - // -------------------------------------------------------- - - /** - * Decode the Base64-encoded data in input and return the data in - * a new byte array. - * - *

The padding '=' characters at the end are considered optional, but - * if any are present, there must be the correct number of them. - * - * @param str the input String to decode, which is converted to - * bytes using the default charset - * @param flags controls certain features of the decoded output. - * Pass {@code DEFAULT} to decode standard Base64. - * - * @throws IllegalArgumentException if the input contains - * incorrect padding - */ - public static byte[] decode(String str, int flags) { - return decode(str.getBytes(), flags); - } - - /** - * Decode the Base64-encoded data in input and return the data in - * a new byte array. - * - *

The padding '=' characters at the end are considered optional, but - * if any are present, there must be the correct number of them. - * - * @param input the input array to decode - * @param flags controls certain features of the decoded output. - * Pass {@code DEFAULT} to decode standard Base64. - * - * @throws IllegalArgumentException if the input contains - * incorrect padding - */ - public static byte[] decode(byte[] input, int flags) { - return decode(input, 0, input.length, flags); - } - - /** - * Decode the Base64-encoded data in input and return the data in - * a new byte array. - * - *

The padding '=' characters at the end are considered optional, but - * if any are present, there must be the correct number of them. - * - * @param input the data to decode - * @param offset the position within the input array at which to start - * @param len the number of bytes of input to decode - * @param flags controls certain features of the decoded output. - * Pass {@code DEFAULT} to decode standard Base64. - * - * @throws IllegalArgumentException if the input contains - * incorrect padding - */ - private static byte[] decode(byte[] input, int offset, int len, int flags) { - // Allocate space for the most data the input could represent. - // (It could contain less if it contains whitespace, etc.) - Decoder decoder = new Decoder(flags, new byte[len*3/4]); - - if (!decoder.process(input, offset, len, true)) { - throw new IllegalArgumentException("bad base-64"); - } - - // Maybe we got lucky and allocated exactly enough output space. - if (decoder.op == decoder.output.length) { - return decoder.output; - } - - // Need to shorten the array, so allocate a new one of the - // right size and copy. - byte[] temp = new byte[decoder.op]; - System.arraycopy(decoder.output, 0, temp, 0, decoder.op); - return temp; - } - - private static class Decoder extends Coder { - /** - * Lookup table for turning bytes into their position in the - * Base64 alphabet. - */ - private static final int DECODE[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - }; - - /** - * Decode lookup table for the "web safe" variant (RFC 3548 - * sec. 4) where - and _ replace + and /. - */ - private static final int DECODE_WEBSAFE[] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -2, -1, -1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, 63, - -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - }; - - /** Non-data values in the DECODE arrays. */ - private static final int SKIP = -1; - private static final int EQUALS = -2; - - /** - * States 0-3 are reading through the next input tuple. - * State 4 is having read one '=' and expecting exactly - * one more. - * State 5 is expecting no more data or padding characters - * in the input. - * State 6 is the error state; an error has been detected - * in the input and no future input can "fix" it. - */ - private int state; // state number (0 to 6) - private int value; - - final private int[] alphabet; - - private Decoder(int flags, byte[] output) { - this.output = output; - - alphabet = ((flags & URL_SAFE) == 0) ? DECODE : DECODE_WEBSAFE; - state = 0; - value = 0; - } - - /** - * @return an overestimate for the number of bytes {@code - * len} bytes could decode to. - */ - public int maxOutputSize(int len) { - return len * 3/4 + 10; - } - - /** - * Decode another block of input data. - * - * @return true if the state machine is still healthy. false if - * bad base-64 data has been detected in the input stream. - */ - public boolean process(byte[] input, int offset, int len, boolean finish) { - if (this.state == 6) return false; - - int p = offset; - len += offset; - - // Using local variables makes the decoder about 12% - // faster than if we manipulate the member variables in - // the loop. (Even alphabet makes a measurable - // difference, which is somewhat surprising to me since - // the member variable is final.) - int state = this.state; - int value = this.value; - int op = 0; - final byte[] output = this.output; - final int[] alphabet = this.alphabet; - - while (p < len) { - // Try the fast path: we're starting a new tuple and the - // next four bytes of the input stream are all data - // bytes. This corresponds to going through states - // 0-1-2-3-0. We expect to use this method for most of - // the data. - // - // If any of the next four bytes of input are non-data - // (whitespace, etc.), value will end up negative. (All - // the non-data values in decode are small negative - // numbers, so shifting any of them up and or'ing them - // together will result in a value with its top bit set.) - // - // You can remove this whole block and the output should - // be the same, just slower. - if (state == 0) { - while (p+4 <= len && - (value = ((alphabet[input[p] & 0xff] << 18) | - (alphabet[input[p+1] & 0xff] << 12) | - (alphabet[input[p+2] & 0xff] << 6) | - (alphabet[input[p+3] & 0xff]))) >= 0) { - output[op+2] = (byte) value; - output[op+1] = (byte) (value >> 8); - output[op] = (byte) (value >> 16); - op += 3; - p += 4; - } - if (p >= len) break; - } - - // The fast path isn't available -- either we've read a - // partial tuple, or the next four input bytes aren't all - // data, or whatever. Fall back to the slower state - // machine implementation. - - int d = alphabet[input[p++] & 0xff]; - - switch (state) { - case 0: - if (d >= 0) { - value = d; - ++state; - } else if (d != SKIP) { - this.state = 6; - return false; - } - break; - - case 1: - if (d >= 0) { - value = (value << 6) | d; - ++state; - } else if (d != SKIP) { - this.state = 6; - return false; - } - break; - - case 2: - if (d >= 0) { - value = (value << 6) | d; - ++state; - } else if (d == EQUALS) { - // Emit the last (partial) output tuple; - // expect exactly one more padding character. - output[op++] = (byte) (value >> 4); - state = 4; - } else if (d != SKIP) { - this.state = 6; - return false; - } - break; - - case 3: - if (d >= 0) { - // Emit the output triple and return to state 0. - value = (value << 6) | d; - output[op+2] = (byte) value; - output[op+1] = (byte) (value >> 8); - output[op] = (byte) (value >> 16); - op += 3; - state = 0; - } else if (d == EQUALS) { - // Emit the last (partial) output tuple; - // expect no further data or padding characters. - output[op+1] = (byte) (value >> 2); - output[op] = (byte) (value >> 10); - op += 2; - state = 5; - } else if (d != SKIP) { - this.state = 6; - return false; - } - break; - - case 4: - if (d == EQUALS) { - ++state; - } else if (d != SKIP) { - this.state = 6; - return false; - } - break; - - case 5: - if (d != SKIP) { - this.state = 6; - return false; - } - break; - } - } - - if (!finish) { - // We're out of input, but a future call could provide - // more. - this.state = state; - this.value = value; - this.op = op; - return true; - } - - // Done reading input. Now figure out where we are left in - // the state machine and finish up. - - switch (state) { - case 0: - // Output length is a multiple of three. Fine. - break; - case 1: - // Read one extra input byte, which isn't enough to - // make another output byte. Illegal. - this.state = 6; - return false; - case 2: - // Read two extra input bytes, enough to emit 1 more - // output byte. Fine. - output[op++] = (byte) (value >> 4); - break; - case 3: - // Read three extra input bytes, enough to emit 2 more - // output bytes. Fine. - output[op++] = (byte) (value >> 10); - output[op++] = (byte) (value >> 2); - break; - case 4: - // Read one padding '=' when we expected 2. Illegal. - this.state = 6; - return false; - case 5: - // Read all the padding '='s we expected and no more. - // Fine. - break; - } - - this.state = state; - this.op = op; - return true; - } - } - - /** - * Base64-encode the given data and return a newly allocated - * byte[] with the result. - * - * @param str the string to encode - * @param flags controls certain features of the encoded output. - * Passing {@code DEFAULT} results in output that - * adheres to RFC 2045. - */ - public static byte[] encode(String str, int flags) { - return encode(str.getBytes(), flags); - } - - /** - * Base64-encode the given data and return a newly allocated - * byte[] with the result. - * - * @param input the data to encode - * @param flags controls certain features of the encoded output. - * Passing {@code DEFAULT} results in output that - * adheres to RFC 2045. - */ - public static byte[] encode(byte[] input, int flags) { - return encode(input, 0, input.length, flags); - } - - /** - * Base64-encode the given data and return a newly allocated - * byte[] with the result. - * - * @param input the data to encode - * @param offset the position within the input array at which to - * start - * @param len the number of bytes of input to encode - * @param flags controls certain features of the encoded output. - * Passing {@code DEFAULT} results in output that - * adheres to RFC 2045. - */ - private static byte[] encode(byte[] input, int offset, int len, int flags) { - Encoder encoder = new Encoder(flags, null); - - // Compute the exact length of the array we will produce. - int output_len = len / 3 * 4; - - // Account for the tail of the data and the padding bytes, if any. - if (encoder.do_padding) { - if (len % 3 > 0) { - output_len += 4; - } - } else { - switch (len % 3) { - case 0: break; - case 1: output_len += 2; break; - case 2: output_len += 3; break; - } - } - - // Account for the newlines, if any. - if (encoder.do_newline && len > 0) { - output_len += (((len-1) / (3 * Encoder.LINE_GROUPS)) + 1) * - (encoder.do_cr ? 2 : 1); - } - - encoder.output = new byte[output_len]; - encoder.process(input, offset, len, true); - - return encoder.output; - } - - private static class Encoder extends Coder { - /** - * Emit a new line every this many output tuples. Corresponds to - * a 76-character line length (the maximum allowable according to - * RFC 2045). - */ - static final int LINE_GROUPS = 19; - - /** - * Lookup table for turning Base64 alphabet positions (6 bits) - * into output bytes. - */ - private static final byte ENCODE[] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', - }; - - /** - * Lookup table for turning Base64 alphabet positions (6 bits) - * into output bytes. - */ - private static final byte ENCODE_WEBSAFE[] = { - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', - 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', - 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', - 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', - }; - - final private byte[] tail; - /* package */ int tailLen; - private int count; - - final boolean do_padding; - final boolean do_newline; - final boolean do_cr; - final private byte[] alphabet; - - private Encoder(int flags, byte[] output) { - this.output = output; - - do_padding = (flags & NO_PADDING) == 0; - do_newline = (flags & NO_WRAP) == 0; - do_cr = (flags & CRLF) != 0; - alphabet = ((flags & URL_SAFE) == 0) ? ENCODE : ENCODE_WEBSAFE; - - tail = new byte[2]; - tailLen = 0; - - count = do_newline ? LINE_GROUPS : -1; - } - - /** - * @return an overestimate for the number of bytes {@code - * len} bytes could encode to. - */ - public int maxOutputSize(int len) { - return len * 8/5 + 10; - } - - public boolean process(byte[] input, int offset, int len, boolean finish) { - // Using local variables makes the encoder about 9% faster. - final byte[] alphabet = this.alphabet; - final byte[] output = this.output; - int op = 0; - int count = this.count; - - int p = offset; - len += offset; - int v = -1; - - // First we need to concatenate the tail of the previous call - // with any input bytes available now and see if we can empty - // the tail. - - switch (tailLen) { - case 0: - // There was no tail. - break; - - case 1: - if (p+2 <= len) { - // A 1-byte tail with at least 2 bytes of - // input available now. - v = ((tail[0] & 0xff) << 16) | - ((input[p++] & 0xff) << 8) | - (input[p++] & 0xff); - tailLen = 0; - } - break; - - case 2: - if (p+1 <= len) { - // A 2-byte tail with at least 1 byte of input. - v = ((tail[0] & 0xff) << 16) | - ((tail[1] & 0xff) << 8) | - (input[p++] & 0xff); - tailLen = 0; - } - break; - } - - if (v != -1) { - output[op++] = alphabet[(v >> 18) & 0x3f]; - output[op++] = alphabet[(v >> 12) & 0x3f]; - output[op++] = alphabet[(v >> 6) & 0x3f]; - output[op++] = alphabet[v & 0x3f]; - if (--count == 0) { - if (do_cr) output[op++] = '\r'; - output[op++] = '\n'; - count = LINE_GROUPS; - } - } - - // At this point either there is no tail, or there are fewer - // than 3 bytes of input available. - - // The main loop, turning 3 input bytes into 4 output bytes on - // each iteration. - while (p+3 <= len) { - v = ((input[p] & 0xff) << 16) | - ((input[p+1] & 0xff) << 8) | - (input[p+2] & 0xff); - output[op] = alphabet[(v >> 18) & 0x3f]; - output[op+1] = alphabet[(v >> 12) & 0x3f]; - output[op+2] = alphabet[(v >> 6) & 0x3f]; - output[op+3] = alphabet[v & 0x3f]; - p += 3; - op += 4; - if (--count == 0) { - if (do_cr) output[op++] = '\r'; - output[op++] = '\n'; - count = LINE_GROUPS; - } - } - - if (finish) { - // Finish up the tail of the input. Note that we need to - // consume any bytes in tail before any bytes - // remaining in input; there should be at most two bytes - // total. - - if (p-tailLen == len-1) { - int t = 0; - v = ((tailLen > 0 ? tail[t++] : input[p++]) & 0xff) << 4; - tailLen -= t; - output[op++] = alphabet[(v >> 6) & 0x3f]; - output[op++] = alphabet[v & 0x3f]; - if (do_padding) { - output[op++] = '='; - output[op++] = '='; - } - if (do_newline) { - if (do_cr) output[op++] = '\r'; - output[op++] = '\n'; - } - } else if (p-tailLen == len-2) { - int t = 0; - v = (((tailLen > 1 ? tail[t++] : input[p++]) & 0xff) << 10) | - (((tailLen > 0 ? tail[t++] : input[p++]) & 0xff) << 2); - tailLen -= t; - output[op++] = alphabet[(v >> 12) & 0x3f]; - output[op++] = alphabet[(v >> 6) & 0x3f]; - output[op++] = alphabet[v & 0x3f]; - if (do_padding) { - output[op++] = '='; - } - if (do_newline) { - if (do_cr) output[op++] = '\r'; - output[op++] = '\n'; - } - } else if (do_newline && op > 0 && count != LINE_GROUPS) { - if (do_cr) output[op++] = '\r'; - output[op++] = '\n'; - } - } else { - // Save the leftovers in tail to be consumed on the next - // call to encodeInternal. - - if (p == len-1) { - tail[tailLen++] = input[p]; - } else if (p == len-2) { - tail[tailLen++] = input[p]; - tail[tailLen++] = input[p+1]; - } - } - - this.op = op; - this.count = count; - - return true; - } - } - - private Base64() { } // don't instantiate -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/IStringFog.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/IStringFog.java deleted file mode 100644 index cf59b22c1..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/IStringFog.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog; - -/** - * Interface of how to encrypt and decrypt a string. - * - * @author Megatron King - * @since 2018/9/20 16:15 - */ -public interface IStringFog { - - /** - * Encrypt the data by the special key. - * - * @param data The original data. - * @param key Encrypt key. - * @return The encrypted data. - */ - String encrypt(String data, String key); - - /** - * Decrypt the data to origin by the special key. - * - * @param data The encrypted data. - * @param key Encrypt key. - * @return The original data. - */ - String decrypt(String data, String key); - - /** - * Whether the encrypted string length is over 65535. - * - * @param data The original data. - * @param key Encrypt key. - * @return Ignore this value if the encrypted string is overflow 65535. - */ - boolean overflow(String data, String key); - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/StringFogWrapper.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/StringFogWrapper.java deleted file mode 100644 index 9cb3e537d..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/StringFogWrapper.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog; - -/** - * A wrapper for the real implementation of fogs. - * - * @author Megatron King - * @since 2018/9/20 16:14 - */ -public final class StringFogWrapper implements IStringFog { - - private IStringFog mStringFogImpl; - - public StringFogWrapper(String impl) { - try { - mStringFogImpl = (IStringFog) Class.forName(impl).newInstance(); - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("Stringfog implementation class not found: " + impl); - } catch (InstantiationException e) { - throw new IllegalArgumentException("Stringfog implementation class new instance failed: " - + e.getMessage()); - } catch (IllegalAccessException e) { - throw new IllegalArgumentException("Stringfog implementation class access failed: " - + e.getMessage()); - } - } - - @Override - public String encrypt(String data, String key) { - return mStringFogImpl == null ? data : mStringFogImpl.encrypt(data, key); - } - - @Override - public String decrypt(String data, String key) { - return mStringFogImpl == null ? data : mStringFogImpl.decrypt(data, key); - } - - @Override - public boolean overflow(String data, String key) { - return mStringFogImpl != null && mStringFogImpl.overflow(data, key); - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/annotation/StringFogIgnore.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/annotation/StringFogIgnore.java deleted file mode 100644 index 46ea6c1ea..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/annotation/StringFogIgnore.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.annotation; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.TYPE; - -/** - * This annotation could keep no fog for string. - * - * @author Megatron King - * @since 2017/3/8 8:41 - */ -@Retention(RetentionPolicy.CLASS) -@Target(value={TYPE}) -public @interface StringFogIgnore { - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassStringField.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassStringField.java deleted file mode 100644 index 1d751a848..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassStringField.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.github.megatronking.stringfog.plugin; - -/** - * The String fields in class. - * - * @author Megatron King - * @since 2017/3/7 10:54 - */ - -/* package */ class ClassStringField { - - public static final String STRING_DESC = "Ljava/lang/String;"; - - /* package */ ClassStringField(String name, String value) { - this.name = name; - this.value = value; - } - - public String name; - public String value; - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassVisitorFactory.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassVisitorFactory.java deleted file mode 100644 index 3d8b2581e..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/ClassVisitorFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.github.megatronking.stringfog.plugin; - - -import com.github.megatronking.stringfog.IStringFog; -import com.github.megatronking.stringfog.plugin.utils.Log; -import com.github.megatronking.stringfog.plugin.utils.TextUtils; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Opcodes; - -/** - * A factory creates {@link ClassVisitor}. - * - * @author Megatron King - * @since 2017/3/7 19:56 - */ - -public final class ClassVisitorFactory { - - private ClassVisitorFactory() { - } - - public static ClassVisitor create(IStringFog stringFogImpl, StringFogMappingPrinter mappingPrinter, - String[] fogPackages, String key, String fogClassName, - String className, ClassWriter cw) { - if (WhiteLists.inWhiteList(className) || !isInFogPackages(fogPackages, className)) { - Log.v("StringFog ignore: " + className); - return createEmpty(cw); - } - Log.v("StringFog execute: " + className); - return new StringFogClassVisitor(stringFogImpl, mappingPrinter, fogClassName, key, cw); - } - - private static ClassVisitor createEmpty(ClassWriter cw) { - return new ClassVisitor(Opcodes.ASM5, cw) { - }; - } - - private static boolean isInFogPackages(String[] fogPackages, String className) { - if (TextUtils.isEmpty(className)) { - return false; - } - if (fogPackages == null || fogPackages.length == 0) { - // default we fog all packages. - return true; - } - for (String fogPackage : fogPackages) { - if (className.replace('/', '.').startsWith(fogPackage + ".")) { - return true; - } - } - return false; - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassGenerator.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassGenerator.java deleted file mode 100644 index 6889f3a5a..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassGenerator.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin; - -import com.google.common.collect.ImmutableSet; -import com.squareup.javawriter.JavaWriter; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import javax.lang.model.element.Modifier; - -/** - * Generate the StringFog class. - * - * @author Megatron King - * @since 2018/9/20 17:41 - */ -public final class StringFogClassGenerator { - - public static void generate(File outputFile, String packageName, String className, String key, - String implementation) throws IOException { - File outputDir = outputFile.getParentFile(); - if (!outputDir.exists() && !outputDir.mkdirs()) { - throw new IOException("Can not mkdirs the dir: " + outputDir); - } - - int lastIndexOfDot = implementation.lastIndexOf("."); - String implementationSimpleClassName = lastIndexOfDot == -1 ? implementation : - implementation.substring(implementation.lastIndexOf(".") + 1); - - JavaWriter javaWriter = new JavaWriter(new FileWriter(outputFile)); - javaWriter.emitPackage(packageName); - javaWriter.emitEmptyLine(); - javaWriter.emitImports(implementation); - javaWriter.emitEmptyLine(); - - javaWriter.emitJavadoc("Generated code from StringFog gradle plugin. Do not modify!"); - javaWriter.beginType(className, "class", ImmutableSet.of(Modifier.PUBLIC, - Modifier.FINAL)); - - javaWriter.emitField(implementationSimpleClassName, "IMPL", - ImmutableSet.of(Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL), - "new " + implementationSimpleClassName + "()"); - - javaWriter.emitEmptyLine(); - javaWriter.beginMethod(String.class.getSimpleName(), "encrypt", - ImmutableSet.of(Modifier.PUBLIC, Modifier.STATIC), - String.class.getSimpleName(), "value"); - javaWriter.emitStatement("return " + "IMPL.encrypt(value, \"" + key + "\")"); - javaWriter.endMethod(); - - javaWriter.emitEmptyLine(); - javaWriter.beginMethod(String.class.getSimpleName(), "decrypt", - ImmutableSet.of(Modifier.PUBLIC, Modifier.STATIC), - String.class.getSimpleName(), "value"); - javaWriter.emitStatement("return " + "IMPL.decrypt(value, \"" + key + "\")"); - javaWriter.endMethod(); - - javaWriter.emitEmptyLine(); - javaWriter.beginMethod(boolean.class.getSimpleName(), "overflow", - ImmutableSet.of(Modifier.PUBLIC, Modifier.STATIC), - String.class.getSimpleName(), "value"); - javaWriter.emitStatement("return " + "IMPL.overflow(value, \"" + key + "\")"); - javaWriter.endMethod(); - - javaWriter.emitEmptyLine(); - javaWriter.endType(); - - javaWriter.close(); - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassInjector.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassInjector.java deleted file mode 100644 index 08925c829..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassInjector.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.github.megatronking.stringfog.plugin; - -import com.github.megatronking.stringfog.IStringFog; -import com.github.megatronking.stringfog.StringFogWrapper; - -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.Closeable; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; -import java.util.zip.ZipOutputStream; - -public final class StringFogClassInjector { - - private String[] mFogPackages; - private String mFogClassName; - private String mKey; - private IStringFog mStringFogImpl; - private StringFogMappingPrinter mMappingPrinter; - - public StringFogClassInjector(String[] fogPackages, String key, String implementation, - String fogClassName, StringFogMappingPrinter mappingPrinter) { - this.mFogPackages = fogPackages; - this.mKey = key; - this.mStringFogImpl = new StringFogWrapper(implementation); - this.mFogClassName = fogClassName; - this.mMappingPrinter = mappingPrinter; - } - - public void doFog2Class(File fileIn, File fileOut) throws IOException { - InputStream is = null; - OutputStream os = null; - try { - is = new BufferedInputStream(new FileInputStream(fileIn)); - os = new BufferedOutputStream(new FileOutputStream(fileOut)); - processClass(is, os); - } finally { - closeQuietly(os); - closeQuietly(is); - } - } - - public void doFog2Jar(File jarIn, File jarOut) throws IOException { - try { - processJar(jarIn, jarOut, Charset.forName("UTF-8"), Charset.forName("UTF-8")); - } catch (IllegalArgumentException e) { - if ("MALFORMED".equals(e.getMessage())) { - processJar(jarIn, jarOut, Charset.forName("GBK"), Charset.forName("UTF-8")); - } else { - throw e; - } - } - } - - @SuppressWarnings("NewApi") - private void processJar(File jarIn, File jarOut, Charset charsetIn, Charset charsetOut) throws IOException { - boolean shouldExclude = shouldExcludeJar(jarIn, charsetIn); - ZipInputStream zis = null; - ZipOutputStream zos = null; - try { - zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(jarIn)), charsetIn); - zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(jarOut)), charsetOut); - ZipEntry entryIn; - Map processedEntryNamesMap = new HashMap<>(); - while ((entryIn = zis.getNextEntry()) != null) { - final String entryName = entryIn.getName(); - if (!processedEntryNamesMap.containsKey(entryName)) { - ZipEntry entryOut = new ZipEntry(entryIn); - // Set compress method to default, fixed #12 - if (entryOut.getMethod() != ZipEntry.DEFLATED) { - entryOut.setMethod(ZipEntry.DEFLATED); - } - entryOut.setCompressedSize(-1); - zos.putNextEntry(entryOut); - if (!entryIn.isDirectory()) { - if (entryName.endsWith(".class") && !shouldExclude) { - processClass(zis, zos); - } else { - copy(zis, zos); - } - } - zos.closeEntry(); - processedEntryNamesMap.put(entryName, 1); - } - } - } finally { - closeQuietly(zos); - closeQuietly(zis); - } - } - - private void processClass(InputStream classIn, OutputStream classOut) throws IOException { - ClassReader cr = new ClassReader(classIn); - // skip module-info class, fixed #38 - if ("module-info".equals(cr.getClassName())) { - byte[] buffer = new byte[1024]; - int read; - while ((read = classIn.read(buffer)) >= 0) { - classOut.write(buffer, 0, read); - } - } else { - ClassWriter cw = new ClassWriter(0); - ClassVisitor cv = ClassVisitorFactory.create(mStringFogImpl, mMappingPrinter, mFogPackages, - mKey, mFogClassName, cr.getClassName() , cw); - cr.accept(cv, 0); - classOut.write(cw.toByteArray()); - classOut.flush(); - } - } - - private boolean shouldExcludeJar(File jarIn, Charset charsetIn) throws IOException { - ZipInputStream zis = null; - try { - zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(jarIn)), charsetIn); - ZipEntry entryIn; - while ((entryIn = zis.getNextEntry()) != null) { - final String entryName = entryIn.getName(); - if (entryName != null && entryName.contains("StringFog")) { - return true; - } - } - } finally { - closeQuietly(zis); - } - return false; - } - - private void closeQuietly(Closeable target) { - if (target != null) { - try { - target.close(); - } catch (Exception e) { - // Ignored. - } - } - } - - private void copy(InputStream in, OutputStream out) throws IOException { - byte[] buffer = new byte[8192]; - int c; - while ((c = in.read(buffer)) != -1) { - out.write(buffer, 0, c); - } - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassVisitor.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassVisitor.java deleted file mode 100644 index 17ecfe3ee..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogClassVisitor.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin; - -import com.github.megatronking.stringfog.IStringFog; -import com.github.megatronking.stringfog.plugin.utils.TextUtils; - -import org.objectweb.asm.AnnotationVisitor; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.FieldVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import java.util.ArrayList; -import java.util.List; - -/** - * Visit the class to execute string fog. - * - * @author Megatron King - * @since 2017/3/6 20:37 - */ - -/* package */ class StringFogClassVisitor extends ClassVisitor { - - private static final String IGNORE_ANNOTATION = "Lcom/github/megatronking/stringfog" + - "/annotation/StringFogIgnore;"; - private String mFogClassName; - - private boolean isClInitExists; - - private List mStaticFinalFields = new ArrayList<>(); - private List mStaticFields = new ArrayList<>(); - private List mFinalFields = new ArrayList<>(); - private List mFields = new ArrayList<>(); - - private IStringFog mStringFogImpl; - private StringFogMappingPrinter mMappingPrinter; - private String mClassName; - private final String mKey; - - private boolean mIgnoreClass; - - /* package */ StringFogClassVisitor(IStringFog stringFogImpl, StringFogMappingPrinter mappingPrinter, - String fogClassName, String key, ClassWriter cw) { - super(Opcodes.ASM5, cw); - this.mStringFogImpl = stringFogImpl; - this.mMappingPrinter = mappingPrinter; - this.mKey = key; - this.mFogClassName = fogClassName.replace('.', '/'); - } - - @Override - public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { - this.mClassName = name; - super.visit(version, access, name, signature, superName, interfaces); - } - - @Override - public AnnotationVisitor visitAnnotation(String desc, boolean visible) { - mIgnoreClass = IGNORE_ANNOTATION.equals(desc); - return super.visitAnnotation(desc, visible); - } - - @Override - public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { - if (ClassStringField.STRING_DESC.equals(desc) && name != null && !mIgnoreClass) { - // static final, in this condition, the value is null or not null. - if ((access & Opcodes.ACC_STATIC) != 0 && (access & Opcodes.ACC_FINAL) != 0) { - mStaticFinalFields.add(new ClassStringField(name, (String) value)); - value = null; - } - // static, in this condition, the value is null. - if ((access & Opcodes.ACC_STATIC) != 0 && (access & Opcodes.ACC_FINAL) == 0) { - mStaticFields.add(new ClassStringField(name, (String) value)); - value = null; - } - - // final, in this condition, the value is null or not null. - if ((access & Opcodes.ACC_STATIC) == 0 && (access & Opcodes.ACC_FINAL) != 0) { - mFinalFields.add(new ClassStringField(name, (String) value)); - value = null; - } - - // normal, in this condition, the value is null. - if ((access & Opcodes.ACC_STATIC) != 0 && (access & Opcodes.ACC_FINAL) != 0) { - mFields.add(new ClassStringField(name, (String) value)); - value = null; - } - } - return super.visitField(access, name, desc, signature, value); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions); - if (mv != null && !mIgnoreClass) { - if ("".equals(name)) { - isClInitExists = true; - // If clinit exists meaning the static fields (not final) would have be inited here. - mv = new MethodVisitor(Opcodes.ASM5, mv) { - - private String lastStashCst; - - @Override - public void visitCode() { - super.visitCode(); - // Here init static final fields. - for (ClassStringField field : mStaticFinalFields) { - if (!canEncrypted(field.value)) { - continue; - } - String originValue = field.value; - String encryptValue = mStringFogImpl.encrypt(originValue, mKey); - mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); - super.visitLdcInsn(encryptValue); - super.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); - super.visitFieldInsn(Opcodes.PUTSTATIC, mClassName, field.name, ClassStringField.STRING_DESC); - } - } - - @Override - public void visitLdcInsn(Object cst) { - // Here init static or static final fields, but we must check field name int 'visitFieldInsn' - if (cst != null && cst instanceof String && canEncrypted((String) cst)) { - lastStashCst = (String) cst; - String originValue = lastStashCst; - String encryptValue = mStringFogImpl.encrypt(originValue, mKey); - mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); - super.visitLdcInsn(encryptValue); - super.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); - } else { - lastStashCst = null; - super.visitLdcInsn(cst); - } - } - - @Override - public void visitFieldInsn(int opcode, String owner, String name, String desc) { - if (mClassName.equals(owner) && lastStashCst != null) { - boolean isContain = false; - for (ClassStringField field : mStaticFields) { - if (field.name.equals(name)) { - isContain = true; - break; - } - } - if (!isContain) { - for (ClassStringField field : mStaticFinalFields) { - if (field.name.equals(name) && field.value == null) { - field.value = lastStashCst; - break; - } - } - } - } - lastStashCst = null; - super.visitFieldInsn(opcode, owner, name, desc); - } - }; - - } else if ("".equals(name)) { - // Here init final(not static) and normal fields - mv = new MethodVisitor(Opcodes.ASM5, mv) { - @Override - public void visitLdcInsn(Object cst) { - // We don't care about whether the field is final or normal - if (cst != null && cst instanceof String && canEncrypted((String) cst)) { - String originValue = (String) cst; - String encryptValue = mStringFogImpl.encrypt(originValue, mKey); - mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); - super.visitLdcInsn(encryptValue); - super.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); - } else { - super.visitLdcInsn(cst); - } - } - }; - } else { - mv = new MethodVisitor(Opcodes.ASM5, mv) { - - @Override - public void visitLdcInsn(Object cst) { - if (cst != null && cst instanceof String && canEncrypted((String) cst)) { - // If the value is a static final field - for (ClassStringField field : mStaticFinalFields) { - if (cst.equals(field.value)) { - super.visitFieldInsn(Opcodes.GETSTATIC, mClassName, field.name, ClassStringField.STRING_DESC); - return; - } - } - // If the value is a final field (not static) - for (ClassStringField field : mFinalFields) { - // if the value of a final field is null, we ignore it - if (cst.equals(field.value)) { - super.visitVarInsn(Opcodes.ALOAD, 0); - super.visitFieldInsn(Opcodes.GETFIELD, mClassName, field.name, "Ljava/lang/String;"); - return; - } - } - // local variables - String originValue = (String) cst; - String encryptValue = mStringFogImpl.encrypt(originValue, mKey); - mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); - super.visitLdcInsn(encryptValue); - super.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); - return; - } - super.visitLdcInsn(cst); - } - - }; - } - } - return mv; - } - - @Override - public void visitEnd() { - if (!mIgnoreClass && !isClInitExists && !mStaticFinalFields.isEmpty()) { - MethodVisitor mv = super.visitMethod(Opcodes.ACC_STATIC, "", "()V", null, null); - mv.visitCode(); - // Here init static final fields. - for (ClassStringField field : mStaticFinalFields) { - if (!canEncrypted(field.value)) { - continue; - } - String originValue = field.value; - String encryptValue = mStringFogImpl.encrypt(originValue, mKey); - mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); - mv.visitLdcInsn(encryptValue); - mv.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); - mv.visitFieldInsn(Opcodes.PUTSTATIC, mClassName, field.name, ClassStringField.STRING_DESC); - } - mv.visitInsn(Opcodes.RETURN); - mv.visitMaxs(1, 0); - mv.visitEnd(); - } - super.visitEnd(); - } - - private boolean canEncrypted(String value) { - // Max string length is 65535, should check the encrypted length. - return !TextUtils.isEmptyAfterTrim(value) && !mStringFogImpl.overflow(value, mKey); - } - - private String getJavaClassName() { - return mClassName != null ? mClassName.replace('/', '.') : null; - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogMappingPrinter.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogMappingPrinter.java deleted file mode 100644 index e4a4a65d0..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/StringFogMappingPrinter.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin; - -import com.github.megatronking.stringfog.plugin.utils.Log; -import com.github.megatronking.stringfog.plugin.utils.TextUtils; - -import org.apache.commons.io.IOUtils; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -/** - * Output StringFog mapping to file. - * - * @author Megatron King - * @since 2018/9/21 11:07 - */ -/* package */ final class StringFogMappingPrinter { - - private File mMappingFile; - private BufferedWriter mWriter; - - private String mCurrentClassName; - - /* package */ StringFogMappingPrinter(File mappingFile) { - this.mMappingFile = mappingFile; - } - - /* package */ void startMappingOutput() { - try { - if (mMappingFile.exists() && !mMappingFile.delete()) { - throw new IOException(); - } - File dir = mMappingFile.getParentFile(); - if (dir.exists() || dir.mkdirs()) { - mWriter = new BufferedWriter(new FileWriter(mMappingFile)); - } else { - throw new IOException(); - } - } catch (IOException e) { - Log.e("Create stringfog mapping file failed."); - } - } - - /* package */ void ouputInfo(String key, String implementation) { - try { - mWriter.write("stringfog key : " + key); - mWriter.newLine(); - mWriter.write("stringfog impl: " + implementation); - mWriter.newLine(); - } catch (IOException e) { - // Ignore - } - } - - /* package */ void output(String className, String originValue, String encryptValue) { - if (TextUtils.isEmpty(className)) { - return; - } - try { - if (!className.equals(mCurrentClassName)) { - mWriter.newLine(); - mWriter.write("[" + className + "]"); - mWriter.newLine(); - mCurrentClassName = className; - } - mWriter.write(originValue + " -> " + encryptValue); - mWriter.newLine(); - } catch (IOException e) { - // Ignore - } - } - - /* package */ void endMappingOutput() { - if (mWriter != null) { - IOUtils.closeQuietly(mWriter); - } - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/WhiteLists.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/WhiteLists.java deleted file mode 100644 index 4b72d6fc5..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/WhiteLists.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.plugin; - -import com.github.megatronking.stringfog.plugin.utils.TextUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * The white list contains some ignored levels. We defined some popular - * library domains and classes which must be ignored when executing string fog. - * - * @author Megatron King - * @since 2017/3/7 19:34 - */ - -final class WhiteLists { - - private static final List CLASS_WHITE_LIST = new ArrayList<>(); - - static { - // default classes short name in white list. - addWhiteList("BuildConfig"); - addWhiteList("R"); - addWhiteList("R2"); - addWhiteList("StringFog"); - } - - static boolean inWhiteList(String name) { - return !TextUtils.isEmpty(name) && checkClass(shortClassName(name)); - } - - private WhiteLists() { - } - - private static void addWhiteList(String name) { - CLASS_WHITE_LIST.add(name); - } - - private static boolean checkClass(String name) { - for (String className : CLASS_WHITE_LIST) { - if (name.equals(className)) { - return true; - } - } - return false; - } - - private static String trueClassName(String className) { - return className.replace('/', '.'); - } - - private static String shortClassName(String className) { - String[] spiltArrays = trueClassName(className).split("[.]"); - return spiltArrays[spiltArrays.length - 1]; - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/Log.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/Log.java deleted file mode 100644 index 2a1eaac08..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/Log.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.github.megatronking.stringfog.plugin.utils; - -public class Log { - - private static boolean isDebug; - - public static void setDebug(boolean debug) { - isDebug = debug; - } - - public static void v(String msg) { - if (isDebug) { - System.out.println(msg); - } - } - - public static void e(String msg) { - if (isDebug) { - System.err.println(msg); - } - } - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/MD5.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/MD5.java deleted file mode 100644 index 79c2bae4e..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/MD5.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.github.megatronking.stringfog.plugin.utils; - -import java.security.MessageDigest; - -public class MD5 { - - private MD5() { - } - - /** - * get md5 string for input buffer - * - * @param buffer data to be calculated - * @return md5 result in string format - */ - public static String getMessageDigest(byte[] buffer) { - char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; - try { - MessageDigest mdTemp = MessageDigest.getInstance("MD5"); - mdTemp.update(buffer); - byte[] md = mdTemp.digest(); - int j = md.length; - char[] str = new char[j * 2]; - int k = 0; - for (byte byte0: md) { - str[k++] = hexDigits[byte0 >>> 4 & 0xf]; - str[k++] = hexDigits[byte0 & 0xf]; - } - return new String(str); - } catch (Exception e) { - return null; - } - } - - -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/TextUtils.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/TextUtils.java deleted file mode 100644 index 6c0672c3b..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/plugin/utils/TextUtils.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.github.megatronking.stringfog.plugin.utils; - -public final class TextUtils { - - private TextUtils() { - } - - /** - * Returns true if the string is null or 0-length. - * @param str the string to be examined - * @return true if str is null or zero length - */ - public static boolean isEmpty(CharSequence str) { - return str == null || str.length() == 0; - } - - /** - * Returns true if the string is null or 0-length after trims. - * @param str the string to be examined - * @return true if str is null or zero length - */ - public static boolean isEmptyAfterTrim(String str) { - return str == null || str.length() == 0 || str.trim().length() == 0; - } -} diff --git a/buildSrc/src/main/java/com/github/megatronking/stringfog/xor/StringFogImpl.java b/buildSrc/src/main/java/com/github/megatronking/stringfog/xor/StringFogImpl.java deleted file mode 100644 index 89310eeed..000000000 --- a/buildSrc/src/main/java/com/github/megatronking/stringfog/xor/StringFogImpl.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 2017, Megatron King - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ - -package com.github.megatronking.stringfog.xor; - -import com.github.megatronking.stringfog.Base64; -import com.github.megatronking.stringfog.IStringFog; - -import java.io.UnsupportedEncodingException; - -/** - * StringFog base64+xor encrypt and decrypt implementation. - * - * @author Megatron King - * @since 2018/9/2 14:34 - */ -public final class StringFogImpl implements IStringFog { - - private static final String CHARSET_NAME_UTF_8 = "UTF-8"; - - @Override - public String encrypt(String data, String key) { - String newData; - try { - newData = new String(Base64.encode(xor(data.getBytes(CHARSET_NAME_UTF_8), key), Base64.NO_WRAP)); - } catch (UnsupportedEncodingException e) { - newData = new String(Base64.encode(xor(data.getBytes(), key), Base64.NO_WRAP)); - } - return newData; - } - - @Override - public String decrypt(String data, String key) { - String newData; - try { - newData = new String(xor(Base64.decode(data, Base64.NO_WRAP), key), CHARSET_NAME_UTF_8); - } catch (UnsupportedEncodingException e) { - newData = new String(xor(Base64.decode(data, Base64.NO_WRAP), key)); - } - return newData; - } - - @Override - public boolean overflow(String data, String key) { - return data != null && data.length() * 4 / 3 >= 65535; - } - - private static byte[] xor(byte[] data, String key) { - int len = data.length; - int lenKey = key.length(); - int i = 0; - int j = 0; - while (i < len) { - if (j >= lenKey) { - j = 0; - } - data[i] = (byte) (data[i] ^ key.charAt(j)); - i++; - j++; - } - return data; - } - -} diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/BaseLayoutInflater.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/BaseLayoutInflater.java index e324b1b44..ea980b34c 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/BaseLayoutInflater.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/BaseLayoutInflater.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IInflateListener.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IInflateListener.java index d67346148..b63c760e5 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IInflateListener.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IInflateListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/ILayoutInflater.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/ILayoutInflater.java index 7290ae4d7..da416f90e 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/ILayoutInflater.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/ILayoutInflater.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IResourceFinder.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IResourceFinder.java index 9b82845f4..3a0d097b4 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IResourceFinder.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/IResourceFinder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/InflateException.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/InflateException.java index 783fe70b2..29a4cdf94 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/InflateException.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/InflateException.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/LayoutInflaterConfiguration.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/LayoutInflaterConfiguration.java index 143a3eca0..9263fd2e3 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/LayoutInflaterConfiguration.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/LayoutInflaterConfiguration.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/XMLLayoutInflater.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/XMLLayoutInflater.java index e13acaf32..d833a402f 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/XMLLayoutInflater.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/inflater/XMLLayoutInflater.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/AttributeResource.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/AttributeResource.java index e8a2ce678..12c1e5536 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/AttributeResource.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/AttributeResource.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResName.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResName.java index 79f08ff01..d349235ac 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResName.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResName.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIdGenerator.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIdGenerator.java index 4f5c712f2..29c4c834f 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIdGenerator.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIdGenerator.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIds.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIds.java index 3cf9d8642..6d72960a7 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIds.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceIds.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTable.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTable.java index 334c9145d..eda013f08 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTable.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTable.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTableFactory.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTableFactory.java index a0ee6241d..6a58413c1 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTableFactory.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/resources/ResourceTableFactory.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/util/Preconditions.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/util/Preconditions.java index 33561eecf..256e1f95b 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/util/Preconditions.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/util/Preconditions.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/AttrType.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/AttrType.java index c1abb3a31..dc2c42759 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/AttrType.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/AttrType.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttribute.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttribute.java index 2e7260410..764cf71bc 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttribute.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttribute.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttributeAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttributeAdapter.java index 2d368da66..2055dd3da 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttributeAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IAttributeAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IFixedValue.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IFixedValue.java index b0404d403..2d072354f 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IFixedValue.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IFixedValue.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IView.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IView.java index 8ef29702a..cc8c61f59 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IView.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IView.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IViewGroup.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IViewGroup.java index 06d100b20..50164ece4 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IViewGroup.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/IViewGroup.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewAttrAdapter.java index ad994b5bc..dfd5131be 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewAttrAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewAttrAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewGroupAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewGroupAttrAdapter.java index 1857d463e..67c305069 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewGroupAttrAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/BaseViewGroupAttrAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/ButtonAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/ButtonAttrAdapter.java index bc576e707..ec02311fe 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/ButtonAttrAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/ButtonAttrAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/LinearLayoutAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/LinearLayoutAttrAdapter.java index 529b41a5a..17f709291 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/LinearLayoutAttrAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/LinearLayoutAttrAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/TextViewAttrAdapter.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/TextViewAttrAdapter.java index 26866635b..7b582e5a2 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/TextViewAttrAdapter.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/adapters/TextViewAttrAdapter.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseView.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseView.java index f23cce1cf..17fd1aae2 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseView.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseView.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseViewGroup.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseViewGroup.java index 1d5feb04f..2c4e056d8 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseViewGroup.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/BaseViewGroup.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiAttribute.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiAttribute.java index 4b64b8e6f..3b9c8c9fd 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiAttribute.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiAttribute.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiView.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiView.java index 58717eaf4..d7d7bc560 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiView.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiView.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiViewGroup.java b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiViewGroup.java index 1ade56e9a..86b6b2fb7 100644 --- a/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiViewGroup.java +++ b/layout-inflater/src/main/java/com/itsaky/androidide/ui/view/impl/UiViewGroup.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/groovy/GroovyLexer.java b/lexers/src/main/java/com/itsaky/androidide/lexers/groovy/GroovyLexer.java index 8c7c380db..28207150e 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/groovy/GroovyLexer.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/groovy/GroovyLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaLexer.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaLexer.java index 5a9531f28..772301a13 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaLexer.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParser.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParser.java index 0fddc05fe..2232c80f7 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParser.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParser.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseListener.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseListener.java index 90e9c0b07..4429dbb74 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseListener.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseVisitor.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseVisitor.java index e5f8608f1..1e785dbac 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseVisitor.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserBaseVisitor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserListener.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserListener.java index a315b4965..d34709458 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserListener.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserVisitor.java b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserVisitor.java index 09611c880..877002548 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserVisitor.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/java/JavaParserVisitor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocLexer.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocLexer.java index ddf3c3a23..b3bb4ce5a 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocLexer.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParser.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParser.java index 24866a5c7..465681a2f 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParser.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParser.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseListener.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseListener.java index 517193c65..de1e62954 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseListener.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseVisitor.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseVisitor.java index 941eb3d80..57d979268 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseVisitor.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserBaseVisitor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserListener.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserListener.java index 36a36f5e8..1de27500b 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserListener.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserVisitor.java b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserVisitor.java index 157da7d6a..babc8534d 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserVisitor.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/javadoc/JavadocParserVisitor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lexers/src/main/java/com/itsaky/androidide/lexers/xml/XMLLexer.java b/lexers/src/main/java/com/itsaky/androidide/lexers/xml/XMLLexer.java index 40776aa49..46f2efcd3 100644 --- a/lexers/src/main/java/com/itsaky/androidide/lexers/xml/XMLLexer.java +++ b/lexers/src/main/java/com/itsaky/androidide/lexers/xml/XMLLexer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/JavadocHighlights.java b/lsp/src/main/java/com/itsaky/lsp/JavadocHighlights.java index 693e27d93..143862d2c 100644 --- a/lsp/src/main/java/com/itsaky/lsp/JavadocHighlights.java +++ b/lsp/src/main/java/com/itsaky/lsp/JavadocHighlights.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/SemanticHighlight.java b/lsp/src/main/java/com/itsaky/lsp/SemanticHighlight.java index 0436f29e1..1bcc57e3a 100644 --- a/lsp/src/main/java/com/itsaky/lsp/SemanticHighlight.java +++ b/lsp/src/main/java/com/itsaky/lsp/SemanticHighlight.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/SemanticHighlightsParams.java b/lsp/src/main/java/com/itsaky/lsp/SemanticHighlightsParams.java index fe67bf973..952cb0861 100644 --- a/lsp/src/main/java/com/itsaky/lsp/SemanticHighlightsParams.java +++ b/lsp/src/main/java/com/itsaky/lsp/SemanticHighlightsParams.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClient.java b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClient.java index da310f4b8..94bf206ba 100644 --- a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClient.java +++ b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClient.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClientAware.java b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClientAware.java index 09970e0d4..813f73b6b 100644 --- a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClientAware.java +++ b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageClientAware.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageServer.java b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageServer.java index c58637148..01c13be69 100644 --- a/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageServer.java +++ b/lsp/src/main/java/com/itsaky/lsp/services/IDELanguageServer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/services/IDETextDocumentService.java b/lsp/src/main/java/com/itsaky/lsp/services/IDETextDocumentService.java index b9775512f..e4c061a22 100644 --- a/lsp/src/main/java/com/itsaky/lsp/services/IDETextDocumentService.java +++ b/lsp/src/main/java/com/itsaky/lsp/services/IDETextDocumentService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/lsp/src/main/java/com/itsaky/lsp/services/IDEWorkspaceService.java b/lsp/src/main/java/com/itsaky/lsp/services/IDEWorkspaceService.java index c8f4f927e..7adb7a596 100644 --- a/lsp/src/main/java/com/itsaky/lsp/services/IDEWorkspaceService.java +++ b/lsp/src/main/java/com/itsaky/lsp/services/IDEWorkspaceService.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/apiinfo/ApiInfo.java b/sdk-info/src/main/java/com/itsaky/apiinfo/ApiInfo.java index 5fc6e2fa1..5ed94494c 100644 --- a/sdk-info/src/main/java/com/itsaky/apiinfo/ApiInfo.java +++ b/sdk-info/src/main/java/com/itsaky/apiinfo/ApiInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/apiinfo/models/ClassInfo.java b/sdk-info/src/main/java/com/itsaky/apiinfo/models/ClassInfo.java index 15aae1e27..ba1a6da0d 100644 --- a/sdk-info/src/main/java/com/itsaky/apiinfo/models/ClassInfo.java +++ b/sdk-info/src/main/java/com/itsaky/apiinfo/models/ClassInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/apiinfo/models/FieldInfo.java b/sdk-info/src/main/java/com/itsaky/apiinfo/models/FieldInfo.java index 481821fd2..5a7b8aaee 100644 --- a/sdk-info/src/main/java/com/itsaky/apiinfo/models/FieldInfo.java +++ b/sdk-info/src/main/java/com/itsaky/apiinfo/models/FieldInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/apiinfo/models/Info.java b/sdk-info/src/main/java/com/itsaky/apiinfo/models/Info.java index 6e9a19889..5a4eaca56 100644 --- a/sdk-info/src/main/java/com/itsaky/apiinfo/models/Info.java +++ b/sdk-info/src/main/java/com/itsaky/apiinfo/models/Info.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/apiinfo/models/MethodInfo.java b/sdk-info/src/main/java/com/itsaky/apiinfo/models/MethodInfo.java index f5c1133a4..ede407f02 100644 --- a/sdk-info/src/main/java/com/itsaky/apiinfo/models/MethodInfo.java +++ b/sdk-info/src/main/java/com/itsaky/apiinfo/models/MethodInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/attrinfo/AttrInfo.java b/sdk-info/src/main/java/com/itsaky/attrinfo/AttrInfo.java index da449621a..8d184acd4 100644 --- a/sdk-info/src/main/java/com/itsaky/attrinfo/AttrInfo.java +++ b/sdk-info/src/main/java/com/itsaky/attrinfo/AttrInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/attrinfo/models/Attr.java b/sdk-info/src/main/java/com/itsaky/attrinfo/models/Attr.java index 672c9ef63..39958539e 100644 --- a/sdk-info/src/main/java/com/itsaky/attrinfo/models/Attr.java +++ b/sdk-info/src/main/java/com/itsaky/attrinfo/models/Attr.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/widgets/WidgetInfo.java b/sdk-info/src/main/java/com/itsaky/widgets/WidgetInfo.java index 77e4c8664..04ba40102 100644 --- a/sdk-info/src/main/java/com/itsaky/widgets/WidgetInfo.java +++ b/sdk-info/src/main/java/com/itsaky/widgets/WidgetInfo.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/com/itsaky/widgets/models/Widget.java b/sdk-info/src/main/java/com/itsaky/widgets/models/Widget.java index 843906c5d..35dd33e94 100644 --- a/sdk-info/src/main/java/com/itsaky/widgets/models/Widget.java +++ b/sdk-info/src/main/java/com/itsaky/widgets/models/Widget.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/core/Signature.java b/sdk-info/src/main/java/org/eclipse/jdt/core/Signature.java index 693e630a6..b83958c61 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/core/Signature.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/core/Signature.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/core/compiler/CharOperation.java b/sdk-info/src/main/java/org/eclipse/jdt/core/compiler/CharOperation.java index 46a1f0877..e870ab5f0 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/core/compiler/CharOperation.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/core/compiler/CharOperation.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/ast/ASTNode.java index 98696bc0c..6af7e0f5c 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/ast/ASTNode.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/ast/ASTNode.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java index 7502ffe42..f2dfe729a 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/classfmt/ClassFileConstants.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java index 6afba33dc..8992af83e 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/parser/ScannerHelper.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/util/Util.java b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/util/Util.java index 8e8cecf44..d675864b9 100644 --- a/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/util/Util.java +++ b/sdk-info/src/main/java/org/eclipse/jdt/internal/compiler/util/Util.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/CommonProcessExecutor.java b/shell/src/main/java/com/itsaky/androidide/shell/CommonProcessExecutor.java index d9284a989..298052e07 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/CommonProcessExecutor.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/CommonProcessExecutor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/IProcessExecutor.java b/shell/src/main/java/com/itsaky/androidide/shell/IProcessExecutor.java index a7a4de0a6..17b11cfb1 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/IProcessExecutor.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/IProcessExecutor.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/IProcessExitListener.java b/shell/src/main/java/com/itsaky/androidide/shell/IProcessExitListener.java index 19a6b78a5..5d6073524 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/IProcessExitListener.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/IProcessExitListener.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/ProcessExecutorFactory.java b/shell/src/main/java/com/itsaky/androidide/shell/ProcessExecutorFactory.java index 63dffaa97..1ebb70a2d 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/ProcessExecutorFactory.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/ProcessExecutorFactory.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/ProcessStreamsHolder.java b/shell/src/main/java/com/itsaky/androidide/shell/ProcessStreamsHolder.java index 52b792b4f..6ba55a597 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/ProcessStreamsHolder.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/ProcessStreamsHolder.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/shell/src/main/java/com/itsaky/androidide/shell/ShellServer.java b/shell/src/main/java/com/itsaky/androidide/shell/ShellServer.java index d21d51d2d..bcb74f902 100644 --- a/shell/src/main/java/com/itsaky/androidide/shell/ShellServer.java +++ b/shell/src/main/java/com/itsaky/androidide/shell/ShellServer.java @@ -1,7 +1,7 @@ /************************************************************************************ * This file is part of AndroidIDE. * - * Copyright (C) 2021 Akash Yadav + * * * AndroidIDE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by