├── .gitignore ├── LICENSE ├── README.md ├── analytics ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ └── java │ └── com │ └── apkide │ └── analytics │ ├── Analytics.java │ └── AnalyticsOptionsCallback.java ├── apktool ├── core │ ├── .gitignore │ ├── LICENSE.md │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── android-framework.jar │ │ │ ├── arm-pie │ │ │ │ └── aapt2 │ │ │ ├── arm64 │ │ │ │ └── aapt2 │ │ │ ├── x86-pie │ │ │ │ └── aapt2 │ │ │ └── x86 │ │ │ │ └── aapt2 │ │ ├── java │ │ │ ├── com │ │ │ │ └── apkide │ │ │ │ │ └── apktool │ │ │ │ │ ├── androlib │ │ │ │ │ ├── AaptInvoker.java │ │ │ │ │ ├── ApkBuilder.java │ │ │ │ │ ├── ApkDecoder.java │ │ │ │ │ ├── ApktoolProperties.java │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── apk │ │ │ │ │ │ ├── ApkInfo.java │ │ │ │ │ │ ├── ClassSafeConstructor.java │ │ │ │ │ │ ├── EscapedStringRepresenter.java │ │ │ │ │ │ ├── PackageInfo.java │ │ │ │ │ │ ├── UsesFramework.java │ │ │ │ │ │ ├── VersionInfo.java │ │ │ │ │ │ └── YamlStringEscapeUtils.java │ │ │ │ │ ├── exceptions │ │ │ │ │ │ ├── AXmlDecodingException.java │ │ │ │ │ │ ├── AndrolibException.java │ │ │ │ │ │ ├── CantFind9PatchChunkException.java │ │ │ │ │ │ ├── CantFindFrameworkResException.java │ │ │ │ │ │ ├── InFileNotFoundException.java │ │ │ │ │ │ ├── OutDirExistsException.java │ │ │ │ │ │ ├── RawXmlEncounteredException.java │ │ │ │ │ │ └── UndefinedResObjectException.java │ │ │ │ │ ├── mod │ │ │ │ │ │ └── SmaliMod.java │ │ │ │ │ ├── res │ │ │ │ │ │ ├── Framework.java │ │ │ │ │ │ ├── ResourcesDecoder.java │ │ │ │ │ │ ├── data │ │ │ │ │ │ │ ├── ResConfigFlags.java │ │ │ │ │ │ │ ├── ResID.java │ │ │ │ │ │ │ ├── ResPackage.java │ │ │ │ │ │ │ ├── ResResSpec.java │ │ │ │ │ │ │ ├── ResResource.java │ │ │ │ │ │ │ ├── ResTable.java │ │ │ │ │ │ │ ├── ResType.java │ │ │ │ │ │ │ ├── ResTypeSpec.java │ │ │ │ │ │ │ ├── ResUnknownFiles.java │ │ │ │ │ │ │ ├── ResValuesFile.java │ │ │ │ │ │ │ ├── arsc │ │ │ │ │ │ │ │ ├── ARSCData.java │ │ │ │ │ │ │ │ ├── ARSCHeader.java │ │ │ │ │ │ │ │ ├── EntryData.java │ │ │ │ │ │ │ │ └── FlagsOffset.java │ │ │ │ │ │ │ ├── axml │ │ │ │ │ │ │ │ └── NamespaceStack.java │ │ │ │ │ │ │ ├── ninepatch │ │ │ │ │ │ │ │ ├── NinePatchData.java │ │ │ │ │ │ │ │ └── OpticalInset.java │ │ │ │ │ │ │ └── value │ │ │ │ │ │ │ │ ├── ResArrayValue.java │ │ │ │ │ │ │ │ ├── ResAttr.java │ │ │ │ │ │ │ │ ├── ResBagValue.java │ │ │ │ │ │ │ │ ├── ResBoolValue.java │ │ │ │ │ │ │ │ ├── ResColorValue.java │ │ │ │ │ │ │ │ ├── ResDimenValue.java │ │ │ │ │ │ │ │ ├── ResEmptyValue.java │ │ │ │ │ │ │ │ ├── ResEnumAttr.java │ │ │ │ │ │ │ │ ├── ResFileValue.java │ │ │ │ │ │ │ │ ├── ResFlagsAttr.java │ │ │ │ │ │ │ │ ├── ResFloatValue.java │ │ │ │ │ │ │ │ ├── ResFractionValue.java │ │ │ │ │ │ │ │ ├── ResIdValue.java │ │ │ │ │ │ │ │ ├── ResIntBasedValue.java │ │ │ │ │ │ │ │ ├── ResIntValue.java │ │ │ │ │ │ │ │ ├── ResPluralsValue.java │ │ │ │ │ │ │ │ ├── ResReferenceValue.java │ │ │ │ │ │ │ │ ├── ResScalarValue.java │ │ │ │ │ │ │ │ ├── ResStringValue.java │ │ │ │ │ │ │ │ ├── ResStyleValue.java │ │ │ │ │ │ │ │ ├── ResValue.java │ │ │ │ │ │ │ │ └── ResValueFactory.java │ │ │ │ │ │ ├── decoder │ │ │ │ │ │ │ ├── ARSCDecoder.java │ │ │ │ │ │ │ ├── AXmlResourceParser.java │ │ │ │ │ │ │ ├── AndroidManifestResourceParser.java │ │ │ │ │ │ │ ├── Res9patchStreamDecoder.java │ │ │ │ │ │ │ ├── ResAttrDecoder.java │ │ │ │ │ │ │ ├── ResFileDecoder.java │ │ │ │ │ │ │ ├── ResRawStreamDecoder.java │ │ │ │ │ │ │ ├── ResStreamDecoder.java │ │ │ │ │ │ │ ├── ResStreamDecoderContainer.java │ │ │ │ │ │ │ ├── StringBlock.java │ │ │ │ │ │ │ ├── StyledString.java │ │ │ │ │ │ │ └── XmlPullStreamDecoder.java │ │ │ │ │ │ ├── util │ │ │ │ │ │ │ ├── ExtMXSerializer.java │ │ │ │ │ │ │ └── ExtXmlSerializer.java │ │ │ │ │ │ └── xml │ │ │ │ │ │ │ ├── ResValuesXmlSerializable.java │ │ │ │ │ │ │ ├── ResXmlEncodable.java │ │ │ │ │ │ │ ├── ResXmlEncoders.java │ │ │ │ │ │ │ └── ResXmlPatcher.java │ │ │ │ │ └── src │ │ │ │ │ │ ├── SmaliBuilder.java │ │ │ │ │ │ └── SmaliDecoder.java │ │ │ │ │ ├── common │ │ │ │ │ ├── BrutException.java │ │ │ │ │ ├── InvalidUnknownFileException.java │ │ │ │ │ ├── RootUnknownFileException.java │ │ │ │ │ └── TraversalUnknownFileException.java │ │ │ │ │ ├── directory │ │ │ │ │ ├── AbstractDirectory.java │ │ │ │ │ ├── DirUtil.java │ │ │ │ │ ├── Directory.java │ │ │ │ │ ├── DirectoryException.java │ │ │ │ │ ├── ExtFile.java │ │ │ │ │ ├── FileDirectory.java │ │ │ │ │ ├── PathAlreadyExists.java │ │ │ │ │ ├── PathNotExist.java │ │ │ │ │ ├── ZipRODirectory.java │ │ │ │ │ └── ZipUtils.java │ │ │ │ │ ├── ext │ │ │ │ │ └── android │ │ │ │ │ │ ├── content │ │ │ │ │ │ └── res │ │ │ │ │ │ │ └── XmlResourceParser.java │ │ │ │ │ │ └── util │ │ │ │ │ │ ├── AttributeSet.java │ │ │ │ │ │ └── TypedValue.java │ │ │ │ │ └── util │ │ │ │ │ ├── AaptManager.java │ │ │ │ │ ├── BrutIO.java │ │ │ │ │ ├── DataInputDelegate.java │ │ │ │ │ ├── Duo.java │ │ │ │ │ ├── ExtDataInput.java │ │ │ │ │ ├── Jar.java │ │ │ │ │ └── OS.java │ │ │ └── org │ │ │ │ └── xmlpull │ │ │ │ ├── mxp1 │ │ │ │ ├── MXParser.java │ │ │ │ ├── MXParserCachingStrings.java │ │ │ │ ├── MXParserFactory.java │ │ │ │ ├── MXParserNonValidating.java │ │ │ │ └── package.html │ │ │ │ ├── mxp1_serializer │ │ │ │ └── MXSerializer.java │ │ │ │ ├── renamed │ │ │ │ └── MXSerializer.java │ │ │ │ └── v1 │ │ │ │ ├── builder │ │ │ │ ├── Iterable.java │ │ │ │ ├── XmlAttribute.java │ │ │ │ ├── XmlBuilderException.java │ │ │ │ ├── XmlCharacters.java │ │ │ │ ├── XmlComment.java │ │ │ │ ├── XmlContained.java │ │ │ │ ├── XmlContainer.java │ │ │ │ ├── XmlDoctype.java │ │ │ │ ├── XmlDocument.java │ │ │ │ ├── XmlElement.java │ │ │ │ ├── XmlInfosetBuilder.java │ │ │ │ ├── XmlNamespace.java │ │ │ │ ├── XmlNotation.java │ │ │ │ ├── XmlProcessingInstruction.java │ │ │ │ ├── XmlSerializable.java │ │ │ │ ├── XmlUnexpandedEntityReference.java │ │ │ │ ├── XmlUnparsedEntity.java │ │ │ │ ├── adapter │ │ │ │ │ ├── XmlAttributeAdapter.java │ │ │ │ │ ├── XmlDocumentAdapter.java │ │ │ │ │ └── XmlElementAdapter.java │ │ │ │ ├── impl │ │ │ │ │ ├── XmlAttributeImpl.java │ │ │ │ │ ├── XmlCommentImpl.java │ │ │ │ │ ├── XmlDocumentImpl.java │ │ │ │ │ ├── XmlElementImpl.java │ │ │ │ │ ├── XmlInfosetBuilderImpl.java │ │ │ │ │ └── XmlNamespaceImpl.java │ │ │ │ └── package.html │ │ │ │ ├── dom2_builder │ │ │ │ └── DOM2XmlPullBuilder.java │ │ │ │ ├── parser_pool │ │ │ │ └── XmlPullParserPool.java │ │ │ │ ├── util │ │ │ │ └── XmlPullUtil.java │ │ │ │ └── wrapper │ │ │ │ ├── XmlPullParserWrapper.java │ │ │ │ ├── XmlPullWrapperFactory.java │ │ │ │ ├── XmlSerializerWrapper.java │ │ │ │ └── classic │ │ │ │ ├── StaticXmlPullParserWrapper.java │ │ │ │ ├── StaticXmlSerializerWrapper.java │ │ │ │ ├── XmlPullParserDelegate.java │ │ │ │ └── XmlSerializerDelegate.java │ │ ├── jniLibs │ │ │ ├── arm64-v8a │ │ │ │ └── libaapt2.so │ │ │ ├── armeabi-v7a │ │ │ │ └── libaapt2.so │ │ │ ├── x86 │ │ │ │ └── libaapt2.so │ │ │ └── x86_64 │ │ │ │ └── libaapt2.so │ │ ├── res │ │ │ ├── values-zh-rCN │ │ │ │ └── strings.xml │ │ │ └── values │ │ │ │ └── strings.xml │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── org.xmlpull.v1.XmlPullParserFactory │ │ └── test │ │ └── java │ │ └── com │ │ └── apkide │ │ └── apktool │ │ └── ExampleUnitTest.java └── service │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── apkide │ └── apktool │ └── engine │ ├── ApkToolConfig.java │ ├── ApkToolEngine.java │ ├── ProcessingCallback.java │ └── service │ ├── ApkToolService.java │ ├── IApkToolService.java │ └── IProcessingCallback.java ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── java_compiler.jar │ └── jdk_compiler.jar ├── proguard-rules.pro ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── license.html │ │ ├── ic_launcher-playstore.png │ │ ├── java │ │ └── com │ │ │ └── apkide │ │ │ └── ui │ │ │ ├── App.java │ │ │ ├── AppCommands.java │ │ │ ├── AppPreferences.java │ │ │ ├── IDEApplication.java │ │ │ ├── MainUI.java │ │ │ ├── MainUIViewModel.java │ │ │ ├── StyledUI.java │ │ │ ├── about │ │ │ └── AboutUI.java │ │ │ ├── browsers │ │ │ ├── Browser.java │ │ │ ├── BrowserLayout.java │ │ │ ├── BrowserMenuCommand.java │ │ │ ├── BrowserPager.java │ │ │ ├── HeaderBrowserLayout.java │ │ │ ├── build │ │ │ │ ├── BuildBrowser.java │ │ │ │ ├── BuildOutputModel.java │ │ │ │ └── BuildOutputView.java │ │ │ ├── error │ │ │ │ ├── ErrorBrowser.java │ │ │ │ ├── ErrorEntry.java │ │ │ │ └── ErrorEntryListAdapter.java │ │ │ ├── file │ │ │ │ ├── FileBrowser.java │ │ │ │ ├── FileBrowserService.java │ │ │ │ ├── FileEntry.java │ │ │ │ ├── FileEntryListAdapter.java │ │ │ │ ├── FileEntryViewHolder.java │ │ │ │ └── FileIcons.java │ │ │ ├── project │ │ │ │ ├── ProjectBrowser.java │ │ │ │ ├── ProjectBrowserService.java │ │ │ │ ├── ProjectEntry.java │ │ │ │ ├── ProjectEntryListAdapter.java │ │ │ │ ├── ProjectEntryViewHolder.java │ │ │ │ └── ProjectFileIcons.java │ │ │ └── search │ │ │ │ ├── SearchBrowser.java │ │ │ │ ├── SearchEntry.java │ │ │ │ └── SearchEntryListAdapter.java │ │ │ ├── commands │ │ │ ├── CloseFileCommand.java │ │ │ ├── ExitCommand.java │ │ │ ├── GotoSettingsCommand.java │ │ │ ├── SaveCommand.java │ │ │ ├── actionbar │ │ │ │ ├── CopyCommand.java │ │ │ │ ├── CutCommand.java │ │ │ │ ├── EditModeCommand.java │ │ │ │ ├── NavigateModeCommand.java │ │ │ │ ├── PasteCommand.java │ │ │ │ ├── PickColorCommand.java │ │ │ │ ├── RedoCommand.java │ │ │ │ ├── RunCommand.java │ │ │ │ ├── SelectAllCommand.java │ │ │ │ └── UndoCommand.java │ │ │ ├── code │ │ │ │ ├── IndentLinesCommand.java │ │ │ │ ├── OptimizeImportsCommand.java │ │ │ │ ├── OutCommentCommand.java │ │ │ │ ├── ReformatCodeCommand.java │ │ │ │ ├── SurroundWithCommand.java │ │ │ │ └── UnOutCommentCommand.java │ │ │ ├── edit │ │ │ │ ├── FindCommand.java │ │ │ │ ├── FindInFileCommand.java │ │ │ │ ├── FindReplaceCommand.java │ │ │ │ └── FindReplaceInFileCommand.java │ │ │ ├── navigate │ │ │ │ ├── BackwardCommand.java │ │ │ │ ├── FindUsagesCommand.java │ │ │ │ ├── ForwardCommand.java │ │ │ │ └── GotoCommand.java │ │ │ ├── project │ │ │ │ ├── CleanProjectCommand.java │ │ │ │ ├── CloseProjectCommand.java │ │ │ │ ├── MakeProjectCommand.java │ │ │ │ └── RebuildProjectCommand.java │ │ │ ├── refactor │ │ │ │ ├── InlineCommand.java │ │ │ │ ├── RenameCommand.java │ │ │ │ └── SafeDeleteCommand.java │ │ │ └── view │ │ │ │ ├── ViewBuildCommand.java │ │ │ │ ├── ViewErrorCommand.java │ │ │ │ ├── ViewFileCommand.java │ │ │ │ ├── ViewProjectCommand.java │ │ │ │ └── ViewSearchCommand.java │ │ │ ├── dialogs │ │ │ ├── ColorPickerDialog.java │ │ │ ├── DeleteFileDialog.java │ │ │ ├── NewFileDialog.java │ │ │ ├── OpenProjectDialog.java │ │ │ ├── ProgressDialog.java │ │ │ └── RenameFileDialog.java │ │ │ ├── editors │ │ │ ├── EditorPager.java │ │ │ ├── IDEEditor.java │ │ │ └── IDEEditorModel.java │ │ │ ├── preferences │ │ │ ├── AppearancePreferencesFragment.java │ │ │ ├── CompilerPreferencesFragment.java │ │ │ ├── EditorPreferencesFragment.java │ │ │ ├── HeadersPreferencesFragment.java │ │ │ ├── PreferencesUI.java │ │ │ └── SourceControlPreferencesFragment.java │ │ │ ├── services │ │ │ ├── ApkService.java │ │ │ ├── AppService.java │ │ │ ├── CodeService.java │ │ │ ├── build │ │ │ │ ├── BuildListener.java │ │ │ │ └── BuildService.java │ │ │ ├── decode │ │ │ │ ├── DecodeListener.java │ │ │ │ └── DecodeService.java │ │ │ ├── error │ │ │ │ └── ErrorService.java │ │ │ ├── file │ │ │ │ ├── FileModel.java │ │ │ │ ├── FileModelFactory.java │ │ │ │ ├── FileService.java │ │ │ │ └── FileServiceListener.java │ │ │ ├── navigate │ │ │ │ └── NavigateService.java │ │ │ └── project │ │ │ │ ├── ConfigureFile.java │ │ │ │ ├── ConfigureFileImpl.java │ │ │ │ ├── ProjectManager.java │ │ │ │ ├── ProjectManagerImpl.java │ │ │ │ ├── ProjectService.java │ │ │ │ └── ProjectServiceListener.java │ │ │ ├── util │ │ │ ├── Entry.java │ │ │ ├── FileSpan.java │ │ │ ├── JarFileArchiveReader.java │ │ │ ├── JavaBinaryReader.java │ │ │ ├── ListAdapter.java │ │ │ ├── MenuCommand.java │ │ │ └── MessageBox.java │ │ │ └── views │ │ │ ├── CodeEditText.java │ │ │ ├── CodeEditTextModel.java │ │ │ ├── ColorPickerView.java │ │ │ ├── SplitLayout.java │ │ │ └── editor │ │ │ ├── Buffers.java │ │ │ ├── Caret.java │ │ │ ├── CaretListener.java │ │ │ ├── Console.java │ │ │ ├── Editor.java │ │ │ ├── EditorModel.java │ │ │ ├── EditorView.java │ │ │ ├── Hyperlink.java │ │ │ ├── Model.java │ │ │ ├── SelectionListener.java │ │ │ ├── StyleSpan.java │ │ │ ├── Theme.java │ │ │ └── Typing.java │ │ └── res │ │ ├── drawable-hdpi │ │ ├── box_blue.png │ │ ├── box_pink.png │ │ ├── box_red.png │ │ ├── browser_git.png │ │ ├── errors.png │ │ ├── errors_no.png │ │ ├── file_new.png │ │ ├── file_type_c.png │ │ ├── file_type_cpp.png │ │ ├── file_type_css.png │ │ ├── file_type_h.png │ │ ├── file_type_html.png │ │ ├── file_type_java.png │ │ ├── file_type_js.png │ │ ├── file_type_txt.png │ │ ├── file_type_unknown.png │ │ ├── file_type_xml.png │ │ ├── folder.png │ │ ├── folder_hidden.png │ │ ├── folder_open.png │ │ ├── ic_copy.png │ │ ├── ic_cut.png │ │ ├── ic_delete.png │ │ ├── ic_design.png │ │ ├── ic_edit.png │ │ ├── ic_expand.png │ │ ├── ic_fix.png │ │ ├── ic_goto.png │ │ ├── ic_help.png │ │ ├── ic_manage.png │ │ ├── ic_more.png │ │ ├── ic_paste.png │ │ ├── ic_redo.png │ │ ├── ic_run.png │ │ ├── ic_undo.png │ │ ├── ic_view.png │ │ ├── info.png │ │ ├── master_button_normal.png │ │ ├── master_button_pressed.png │ │ ├── objects.png │ │ ├── pakage.png │ │ ├── project_new.png │ │ ├── project_open.png │ │ ├── project_properties.png │ │ ├── search.png │ │ ├── text_select_handle_left.png │ │ ├── text_select_handle_middle.png │ │ └── text_select_handle_right.png │ │ ├── drawable-mdpi │ │ ├── text_select_handle_left.png │ │ ├── text_select_handle_middle.png │ │ └── text_select_handle_right.png │ │ ├── drawable-night-hdpi │ │ ├── ic_copy.png │ │ ├── ic_cut.png │ │ ├── ic_delete.png │ │ ├── ic_design.png │ │ ├── ic_edit.png │ │ ├── ic_expand.png │ │ ├── ic_fix.png │ │ ├── ic_goto.png │ │ ├── ic_help.png │ │ ├── ic_manage.png │ │ ├── ic_more.png │ │ ├── ic_paste.png │ │ ├── ic_redo.png │ │ ├── ic_run.png │ │ ├── ic_undo.png │ │ └── ic_view.png │ │ ├── drawable-xhdpi │ │ ├── text_select_handle_left.png │ │ ├── text_select_handle_middle.png │ │ └── text_select_handle_right.png │ │ ├── drawable-xxhdpi │ │ ├── text_select_handle_left.png │ │ ├── text_select_handle_middle.png │ │ └── text_select_handle_right.png │ │ ├── drawable-xxxhdpi │ │ ├── text_select_handle_left.png │ │ └── text_select_handle_right.png │ │ ├── drawable │ │ ├── ic_banner_foreground.xml │ │ ├── ic_launcher_foreground.xml │ │ └── master_button.xml │ │ ├── layout │ │ ├── browser_build.xml │ │ ├── browser_error.xml │ │ ├── browser_error_entry.xml │ │ ├── browser_file.xml │ │ ├── browser_file_entry.xml │ │ ├── browser_header.xml │ │ ├── browser_project.xml │ │ ├── browser_project_entry.xml │ │ ├── browser_search.xml │ │ ├── browser_search_entry.xml │ │ ├── component_editor.xml │ │ ├── ui_about.xml │ │ ├── ui_main.xml │ │ └── ui_preferences.xml │ │ ├── menu │ │ ├── browser_build_options.xml │ │ ├── browser_error_entry_options.xml │ │ ├── browser_error_options.xml │ │ ├── browser_file_entry_options.xml │ │ ├── browser_file_options.xml │ │ ├── browser_project_entry_options.xml │ │ ├── browser_project_options.xml │ │ ├── browser_search_entry_options.xml │ │ ├── browser_search_options.xml │ │ ├── component_editor_options.xml │ │ └── ui_main_options.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_banner.xml │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ └── ic_launcher_round.webp │ │ ├── values-night │ │ ├── colors.xml │ │ └── themes.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── ic_banner_background.xml │ │ ├── ic_launcher_background.xml │ │ ├── strings.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ ├── data_extraction_rules.xml │ │ ├── preferences_appearance.xml │ │ ├── preferences_compiler.xml │ │ ├── preferences_editor.xml │ │ ├── preferences_headers.xml │ │ └── preferences_sourcecontrol.xml └── testkey.jks ├── build.gradle ├── common ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── apkide │ │ └── common │ │ ├── AppLog.java │ │ ├── Application.java │ │ ├── FilePatternMatcher.java │ │ ├── FileSystem.java │ │ ├── NormalizedReadWriter.java │ │ ├── SafeRunner.java │ │ ├── SyncRunner.java │ │ ├── collection │ │ ├── EventListenerList.java │ │ ├── IntArrayList.java │ │ ├── IntPair.java │ │ ├── IntStack.java │ │ ├── LongArrayList.java │ │ ├── LongHashMap.java │ │ └── LongHashSet.java │ │ ├── color │ │ └── Color.java │ │ ├── command │ │ └── Command.java │ │ ├── io │ │ ├── FileUtils.java │ │ ├── IoUtils.java │ │ ├── iterator │ │ │ └── LineIterator.java │ │ └── unicode │ │ │ ├── UnicodeReader.java │ │ │ └── UnicodeWriter.java │ │ ├── keymap │ │ └── KeyStroke.java │ │ ├── logger │ │ ├── Level.java │ │ ├── Logger.java │ │ ├── LoggerFactory.java │ │ └── LoggerListener.java │ │ ├── runnable │ │ ├── ActionRunnable.java │ │ ├── ResultRunnable.java │ │ └── ValueRunnable.java │ │ ├── text │ │ ├── TextGraphics.java │ │ ├── TextModel.java │ │ ├── TextModelImpl.java │ │ ├── TextSource.java │ │ ├── TextSourceBuffer.java │ │ ├── TextSourceImpl.java │ │ └── TextStyle.java │ │ └── util │ │ ├── Pools.java │ │ ├── SerializeUtils.java │ │ └── TimeUtils.java │ └── test │ └── java │ └── com │ └── apkide │ └── common │ └── ExampleUnitTest.java ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images ├── 1.png ├── 2.png ├── 3.png └── 4.png ├── java-decompiler ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ └── java │ └── com │ └── apkide │ └── java │ └── decompiler │ ├── ClassNameConstants.java │ ├── code │ ├── CodeConstants.java │ ├── ExceptionHandler.java │ ├── ExceptionTable.java │ ├── FullInstructionSequence.java │ ├── Instruction.java │ ├── InstructionSequence.java │ ├── JumpInstruction.java │ ├── SimpleInstructionSequence.java │ ├── SwitchInstruction.java │ ├── cfg │ │ ├── BasicBlock.java │ │ ├── ControlFlowGraph.java │ │ └── ExceptionRangeCFG.java │ └── interpreter │ │ └── InstructionImpact.java │ ├── main │ ├── AssertProcessor.java │ ├── ClassReference14Processor.java │ ├── ClassWriter.java │ ├── ClassesProcessor.java │ ├── DecompilerContext.java │ ├── EnumProcessor.java │ ├── Fernflower.java │ ├── InitializerProcessor.java │ ├── collectors │ │ ├── BytecodeMappingTracer.java │ │ ├── BytecodeSourceMapper.java │ │ ├── CounterContainer.java │ │ ├── ImportCollector.java │ │ └── VarNamesCollector.java │ ├── decompiler │ │ ├── BaseDecompiler.java │ │ ├── ConsoleDecompiler.java │ │ └── PrintStreamLogger.java │ ├── extern │ │ ├── ClassFormatException.java │ │ ├── IBytecodeProvider.java │ │ ├── IFernflowerLogger.java │ │ ├── IFernflowerPreferences.java │ │ ├── IIdentifierRenamer.java │ │ └── IResultSaver.java │ └── rels │ │ ├── ClassWrapper.java │ │ ├── LambdaProcessor.java │ │ ├── MethodProcessorRunnable.java │ │ ├── MethodWrapper.java │ │ ├── NestedClassProcessor.java │ │ └── NestedMemberAccess.java │ ├── modules │ ├── code │ │ └── DeadCodeHelper.java │ ├── decompiler │ │ ├── ClasspathHelper.java │ │ ├── ClearStructHelper.java │ │ ├── ConcatenationHelper.java │ │ ├── DecHelper.java │ │ ├── DomHelper.java │ │ ├── ExitHelper.java │ │ ├── ExprProcessor.java │ │ ├── ExpressionStack.java │ │ ├── FinallyProcessor.java │ │ ├── IdeaNotNullHelper.java │ │ ├── IfHelper.java │ │ ├── InlineSingleBlockHelper.java │ │ ├── LabelHelper.java │ │ ├── LoopExtractHelper.java │ │ ├── MergeHelper.java │ │ ├── PPandMMHelper.java │ │ ├── PatternHelper.java │ │ ├── PrimitiveExpressionList.java │ │ ├── SecondaryFunctionsHelper.java │ │ ├── SequenceHelper.java │ │ ├── SimplifyExprentsHelper.java │ │ ├── StackVarsProcessor.java │ │ ├── StatEdge.java │ │ ├── StrongConnectivityHelper.java │ │ ├── SwitchHelper.java │ │ ├── decompose │ │ │ ├── DominatorEngine.java │ │ │ ├── DominatorTreeExceptionFilter.java │ │ │ ├── FastExtendedPostdominanceHelper.java │ │ │ ├── GenericDominatorEngine.java │ │ │ ├── IGraph.java │ │ │ └── IGraphNode.java │ │ ├── deobfuscator │ │ │ ├── ExceptionDeobfuscator.java │ │ │ └── IrreducibleCFGDeobfuscator.java │ │ ├── exps │ │ │ ├── AnnotationExprent.java │ │ │ ├── ArrayExprent.java │ │ │ ├── AssertExprent.java │ │ │ ├── AssignmentExprent.java │ │ │ ├── ConstExprent.java │ │ │ ├── ExitExprent.java │ │ │ ├── ExprUtil.java │ │ │ ├── Exprent.java │ │ │ ├── FieldExprent.java │ │ │ ├── FunctionExprent.java │ │ │ ├── IfExprent.java │ │ │ ├── InvocationExprent.java │ │ │ ├── MonitorExprent.java │ │ │ ├── NewExprent.java │ │ │ ├── SwitchExprent.java │ │ │ └── VarExprent.java │ │ ├── sforms │ │ │ ├── DirectGraph.java │ │ │ ├── DirectNode.java │ │ │ ├── FlattenStatementsHelper.java │ │ │ ├── SSAConstructorSparseEx.java │ │ │ └── SSAUConstructorSparseEx.java │ │ ├── stats │ │ │ ├── BasicBlockStatement.java │ │ │ ├── CatchAllStatement.java │ │ │ ├── CatchStatement.java │ │ │ ├── DoStatement.java │ │ │ ├── DummyExitStatement.java │ │ │ ├── GeneralStatement.java │ │ │ ├── IfStatement.java │ │ │ ├── RootStatement.java │ │ │ ├── SequenceStatement.java │ │ │ ├── Statement.java │ │ │ ├── Statements.java │ │ │ ├── SwitchStatement.java │ │ │ └── SynchronizedStatement.java │ │ ├── typeann │ │ │ ├── TargetInfo.java │ │ │ ├── TypeAnnotation.java │ │ │ └── TypeAnnotationWriteHelper.java │ │ └── vars │ │ │ ├── CheckTypesResult.java │ │ │ ├── VarDefinitionHelper.java │ │ │ ├── VarProcessor.java │ │ │ ├── VarTypeProcessor.java │ │ │ ├── VarVersionEdge.java │ │ │ ├── VarVersionNode.java │ │ │ ├── VarVersionPair.java │ │ │ ├── VarVersionsGraph.java │ │ │ └── VarVersionsProcessor.java │ └── renamer │ │ ├── ClassWrapperNode.java │ │ ├── ConverterHelper.java │ │ ├── IdentifierConverter.java │ │ └── PoolInterceptor.java │ ├── struct │ ├── ContextUnit.java │ ├── IDecompiledData.java │ ├── StructClass.java │ ├── StructContext.java │ ├── StructField.java │ ├── StructMember.java │ ├── StructMethod.java │ ├── StructRecordComponent.java │ ├── StructTypePathEntry.java │ ├── attr │ │ ├── StructAnnDefaultAttribute.java │ │ ├── StructAnnotationAttribute.java │ │ ├── StructAnnotationParameterAttribute.java │ │ ├── StructBootstrapMethodsAttribute.java │ │ ├── StructCodeAttribute.java │ │ ├── StructConstantValueAttribute.java │ │ ├── StructEnclosingMethodAttribute.java │ │ ├── StructExceptionsAttribute.java │ │ ├── StructGeneralAttribute.java │ │ ├── StructGenericSignatureAttribute.java │ │ ├── StructInnerClassesAttribute.java │ │ ├── StructLineNumberTableAttribute.java │ │ ├── StructLocalVariableTableAttribute.java │ │ ├── StructLocalVariableTypeTableAttribute.java │ │ ├── StructMethodParametersAttribute.java │ │ ├── StructModuleAttribute.java │ │ ├── StructPermittedSubclassesAttribute.java │ │ ├── StructRecordAttribute.java │ │ └── StructTypeAnnotationAttribute.java │ ├── consts │ │ ├── ConstantPool.java │ │ ├── LinkConstant.java │ │ ├── PooledConstant.java │ │ └── PrimitiveConstant.java │ ├── gen │ │ ├── DataPoint.java │ │ ├── FieldDescriptor.java │ │ ├── MethodDescriptor.java │ │ ├── NewClassNameBuilder.java │ │ ├── Type.java │ │ ├── VarType.java │ │ └── generics │ │ │ ├── GenericClassDescriptor.java │ │ │ ├── GenericFieldDescriptor.java │ │ │ ├── GenericMain.java │ │ │ ├── GenericMethodDescriptor.java │ │ │ └── GenericType.java │ ├── lazy │ │ └── LazyLoader.java │ └── match │ │ ├── IMatchable.java │ │ ├── MatchEngine.java │ │ └── MatchNode.java │ └── util │ ├── DataInputFullStream.java │ ├── FastFixedSetFactory.java │ ├── FastSparseSetFactory.java │ ├── InterpreterUtil.java │ ├── ListStack.java │ ├── SFormsFastMapDirect.java │ ├── TextBuffer.java │ ├── TextUtil.java │ └── VBStyleCollection.java ├── language ├── api │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── apkide │ │ │ └── language │ │ │ └── api │ │ │ ├── Assembly.java │ │ │ ├── CodeAnalyzer.java │ │ │ ├── CodeAnalyzerCallback.java │ │ │ ├── CodeCompiler.java │ │ │ ├── CodeCompilerCallback.java │ │ │ ├── CodeCompleter.java │ │ │ ├── CodeCompleterCallback.java │ │ │ ├── CodeFormatter.java │ │ │ ├── CodeFormatterCallback.java │ │ │ ├── CodeHighlighter.java │ │ │ ├── CodeHighlighterCallback.java │ │ │ ├── CodeNavigation.java │ │ │ ├── CodeNavigationCallback.java │ │ │ ├── CodeRefactor.java │ │ │ ├── CodeRefactorCallback.java │ │ │ ├── FileStoreCallback.java │ │ │ ├── Language.java │ │ │ ├── StyleKind.java │ │ │ └── SymbolKind.java │ │ └── test │ │ └── java │ │ └── com │ │ └── apkide │ │ └── language │ │ └── api │ │ └── ExampleUnitTest.java ├── language-java │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── apkide │ │ └── language │ │ └── java │ │ ├── JavaCodeAnalyzer.java │ │ ├── JavaCodeCompleter.java │ │ ├── JavaCodeFormatter.java │ │ ├── JavaCodeHighlighter.java │ │ ├── JavaCodeNavigation.java │ │ ├── JavaCodeRefactor.java │ │ ├── JavaLanguage.java │ │ └── JavaLexer.java ├── language-smali │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── apkide │ │ └── language │ │ └── smali │ │ ├── SmaliCodeAnalyzer.java │ │ ├── SmaliCodeCompleter.java │ │ ├── SmaliCodeFormatter.java │ │ ├── SmaliCodeHighlighter.java │ │ ├── SmaliCodeNavigation.java │ │ ├── SmaliCodeRefactor.java │ │ └── SmaliLanguage.java ├── language-xml │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── apkide │ │ └── language │ │ └── xml │ │ ├── XmlCodeAnalyzer.java │ │ ├── XmlCodeCompleter.java │ │ ├── XmlCodeFormatter.java │ │ ├── XmlCodeHighlighter.java │ │ ├── XmlCodeNavigation.java │ │ ├── XmlCodeRefactor.java │ │ ├── XmlLanguage.java │ │ └── XmlLexer.java ├── language-yaml │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── apkide │ │ └── language │ │ └── yaml │ │ ├── YamlCodeAnalyzer.java │ │ ├── YamlCodeCompleter.java │ │ ├── YamlCodeFormatter.java │ │ ├── YamlCodeHighlighter.java │ │ ├── YamlCodeNavigation.java │ │ ├── YamlCodeRefactor.java │ │ ├── YamlLanguage.java │ │ └── YamlLexer.java └── service │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── apkide │ └── language │ ├── Assembly.aidl │ ├── Assembly.java │ ├── CodeEngine.java │ ├── Completion.aidl │ ├── Completion.java │ ├── FileHighlighting.aidl │ ├── FileHighlighting.java │ ├── FileSpan.aidl │ ├── FileSpan.java │ ├── FileStore.java │ ├── Highlights.java │ ├── IEngine.java │ ├── LanguageProvider.java │ ├── Modification.aidl │ ├── Modification.java │ ├── Problem.aidl │ ├── Problem.java │ ├── StyleKind.java │ ├── Symbol.aidl │ ├── Symbol.java │ ├── SymbolKind.java │ └── service │ ├── CodeEngineService.java │ ├── ICodeAnayzingListener.aidl │ ├── ICodeCompletionListener.aidl │ ├── ICodeEngineService.aidl │ ├── ICodeHighlightingListener.aidl │ ├── ICodeNavigationListener.aidl │ ├── ICodeRefactoringListener.aidl │ └── IFileEditor.aidl ├── settings.gradle ├── smali ├── .gitignore ├── NOTICE ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── antlr │ │ ├── smaliParser.g │ │ └── smaliTreeWalker.g │ ├── java │ │ └── com │ │ │ └── apkide │ │ │ └── smali │ │ │ ├── baksmali │ │ │ ├── Adaptors │ │ │ │ ├── AnnotationFormatter.java │ │ │ │ ├── BlankMethodItem.java │ │ │ │ ├── CatchMethodItem.java │ │ │ │ ├── ClassDefinition.java │ │ │ │ ├── CommentMethodItem.java │ │ │ │ ├── CommentedOutMethodItem.java │ │ │ │ ├── CommentingIndentingWriter.java │ │ │ │ ├── Debug │ │ │ │ │ ├── BeginEpilogueMethodItem.java │ │ │ │ │ ├── DebugMethodItem.java │ │ │ │ │ ├── EndLocalMethodItem.java │ │ │ │ │ ├── EndPrologueMethodItem.java │ │ │ │ │ ├── LineNumberMethodItem.java │ │ │ │ │ ├── LocalFormatter.java │ │ │ │ │ ├── RestartLocalMethodItem.java │ │ │ │ │ ├── SetSourceFileMethodItem.java │ │ │ │ │ └── StartLocalMethodItem.java │ │ │ │ ├── EndTryLabelMethodItem.java │ │ │ │ ├── FieldDefinition.java │ │ │ │ ├── Format │ │ │ │ │ ├── ArrayDataMethodItem.java │ │ │ │ │ ├── InstructionMethodItem.java │ │ │ │ │ ├── InstructionMethodItemFactory.java │ │ │ │ │ ├── OffsetInstructionFormatMethodItem.java │ │ │ │ │ ├── PackedSwitchMethodItem.java │ │ │ │ │ ├── SparseSwitchMethodItem.java │ │ │ │ │ └── UnresolvedOdexInstructionMethodItem.java │ │ │ │ ├── LabelMethodItem.java │ │ │ │ ├── MethodDefinition.java │ │ │ │ ├── MethodItem.java │ │ │ │ ├── PostInstructionRegisterInfoMethodItem.java │ │ │ │ ├── PreInstructionRegisterInfoMethodItem.java │ │ │ │ ├── RegisterFormatter.java │ │ │ │ └── SyntheticAccessCommentMethodItem.java │ │ │ ├── AnalysisArguments.java │ │ │ ├── Baksmali.java │ │ │ ├── BaksmaliOptions.java │ │ │ ├── DeodexCommand.java │ │ │ ├── DexInputCommand.java │ │ │ ├── DisassembleCommand.java │ │ │ ├── DumpCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── ListClassesCommand.java │ │ │ ├── ListCommand.java │ │ │ ├── ListDependenciesCommand.java │ │ │ ├── ListDexCommand.java │ │ │ ├── ListFieldOffsetsCommand.java │ │ │ ├── ListFieldsCommand.java │ │ │ ├── ListHelpCommand.java │ │ │ ├── ListMethodsCommand.java │ │ │ ├── ListReferencesCommand.java │ │ │ ├── ListStringsCommand.java │ │ │ ├── ListTypesCommand.java │ │ │ ├── ListVtablesCommand.java │ │ │ ├── Main.java │ │ │ └── formatter │ │ │ │ ├── BaksmaliFormatter.java │ │ │ │ └── BaksmaliWriter.java │ │ │ ├── dexlib2 │ │ │ ├── AccessFlags.java │ │ │ ├── AnnotationVisibility.java │ │ │ ├── DebugItemType.java │ │ │ ├── DexFileFactory.java │ │ │ ├── Format.java │ │ │ ├── HiddenApiRestriction.java │ │ │ ├── MethodHandleType.java │ │ │ ├── Opcode.java │ │ │ ├── Opcodes.java │ │ │ ├── ReferenceType.java │ │ │ ├── ValueType.java │ │ │ ├── VerificationError.java │ │ │ ├── VersionMap.java │ │ │ ├── analysis │ │ │ │ ├── AnalysisException.java │ │ │ │ ├── AnalyzedInstruction.java │ │ │ │ ├── AnalyzedMethodUtil.java │ │ │ │ ├── ArrayProto.java │ │ │ │ ├── ClassPath.java │ │ │ │ ├── ClassPathResolver.java │ │ │ │ ├── ClassProto.java │ │ │ │ ├── ClassProvider.java │ │ │ │ ├── CustomInlineMethodResolver.java │ │ │ │ ├── DexClassProvider.java │ │ │ │ ├── InlineMethodResolver.java │ │ │ │ ├── MethodAnalyzer.java │ │ │ │ ├── OdexedFieldInstructionMapper.java │ │ │ │ ├── PathEntryLoader.java │ │ │ │ ├── PrimitiveProto.java │ │ │ │ ├── RegisterType.java │ │ │ │ ├── TypeProto.java │ │ │ │ ├── UnknownClassProto.java │ │ │ │ ├── UnresolvedClassException.java │ │ │ │ ├── UnresolvedOdexInstruction.java │ │ │ │ ├── reflection │ │ │ │ │ ├── ReflectionClassDef.java │ │ │ │ │ ├── ReflectionConstructor.java │ │ │ │ │ ├── ReflectionField.java │ │ │ │ │ ├── ReflectionMethod.java │ │ │ │ │ └── util │ │ │ │ │ │ └── ReflectionUtils.java │ │ │ │ └── util │ │ │ │ │ └── TypeProtoUtils.java │ │ │ ├── base │ │ │ │ ├── BaseAnnotation.java │ │ │ │ ├── BaseAnnotationElement.java │ │ │ │ ├── BaseExceptionHandler.java │ │ │ │ ├── BaseMethodParameter.java │ │ │ │ ├── BaseTryBlock.java │ │ │ │ ├── reference │ │ │ │ │ ├── BaseCallSiteReference.java │ │ │ │ │ ├── BaseFieldReference.java │ │ │ │ │ ├── BaseMethodHandleReference.java │ │ │ │ │ ├── BaseMethodProtoReference.java │ │ │ │ │ ├── BaseMethodReference.java │ │ │ │ │ ├── BaseReference.java │ │ │ │ │ ├── BaseStringReference.java │ │ │ │ │ └── BaseTypeReference.java │ │ │ │ └── value │ │ │ │ │ ├── BaseAnnotationEncodedValue.java │ │ │ │ │ ├── BaseArrayEncodedValue.java │ │ │ │ │ ├── BaseBooleanEncodedValue.java │ │ │ │ │ ├── BaseByteEncodedValue.java │ │ │ │ │ ├── BaseCharEncodedValue.java │ │ │ │ │ ├── BaseDoubleEncodedValue.java │ │ │ │ │ ├── BaseEnumEncodedValue.java │ │ │ │ │ ├── BaseFieldEncodedValue.java │ │ │ │ │ ├── BaseFloatEncodedValue.java │ │ │ │ │ ├── BaseIntEncodedValue.java │ │ │ │ │ ├── BaseLongEncodedValue.java │ │ │ │ │ ├── BaseMethodEncodedValue.java │ │ │ │ │ ├── BaseMethodHandleEncodedValue.java │ │ │ │ │ ├── BaseMethodTypeEncodedValue.java │ │ │ │ │ ├── BaseNullEncodedValue.java │ │ │ │ │ ├── BaseShortEncodedValue.java │ │ │ │ │ ├── BaseStringEncodedValue.java │ │ │ │ │ └── BaseTypeEncodedValue.java │ │ │ ├── builder │ │ │ │ ├── BuilderDebugItem.java │ │ │ │ ├── BuilderExceptionHandler.java │ │ │ │ ├── BuilderInstruction.java │ │ │ │ ├── BuilderOffsetInstruction.java │ │ │ │ ├── BuilderSwitchPayload.java │ │ │ │ ├── BuilderTryBlock.java │ │ │ │ ├── ItemWithLocation.java │ │ │ │ ├── Label.java │ │ │ │ ├── LocatedDebugItems.java │ │ │ │ ├── LocatedItems.java │ │ │ │ ├── LocatedLabels.java │ │ │ │ ├── MethodImplementationBuilder.java │ │ │ │ ├── MethodLocation.java │ │ │ │ ├── MutableMethodImplementation.java │ │ │ │ ├── SwitchLabelElement.java │ │ │ │ ├── debug │ │ │ │ │ ├── BuilderEndLocal.java │ │ │ │ │ ├── BuilderEpilogueBegin.java │ │ │ │ │ ├── BuilderLineNumber.java │ │ │ │ │ ├── BuilderPrologueEnd.java │ │ │ │ │ ├── BuilderRestartLocal.java │ │ │ │ │ ├── BuilderSetSourceFile.java │ │ │ │ │ └── BuilderStartLocal.java │ │ │ │ └── instruction │ │ │ │ │ ├── BuilderArrayPayload.java │ │ │ │ │ ├── BuilderInstruction10t.java │ │ │ │ │ ├── BuilderInstruction10x.java │ │ │ │ │ ├── BuilderInstruction11n.java │ │ │ │ │ ├── BuilderInstruction11x.java │ │ │ │ │ ├── BuilderInstruction12x.java │ │ │ │ │ ├── BuilderInstruction20bc.java │ │ │ │ │ ├── BuilderInstruction20t.java │ │ │ │ │ ├── BuilderInstruction21c.java │ │ │ │ │ ├── BuilderInstruction21ih.java │ │ │ │ │ ├── BuilderInstruction21lh.java │ │ │ │ │ ├── BuilderInstruction21s.java │ │ │ │ │ ├── BuilderInstruction21t.java │ │ │ │ │ ├── BuilderInstruction22b.java │ │ │ │ │ ├── BuilderInstruction22c.java │ │ │ │ │ ├── BuilderInstruction22cs.java │ │ │ │ │ ├── BuilderInstruction22s.java │ │ │ │ │ ├── BuilderInstruction22t.java │ │ │ │ │ ├── BuilderInstruction22x.java │ │ │ │ │ ├── BuilderInstruction23x.java │ │ │ │ │ ├── BuilderInstruction30t.java │ │ │ │ │ ├── BuilderInstruction31c.java │ │ │ │ │ ├── BuilderInstruction31i.java │ │ │ │ │ ├── BuilderInstruction31t.java │ │ │ │ │ ├── BuilderInstruction32x.java │ │ │ │ │ ├── BuilderInstruction35c.java │ │ │ │ │ ├── BuilderInstruction35mi.java │ │ │ │ │ ├── BuilderInstruction35ms.java │ │ │ │ │ ├── BuilderInstruction3rc.java │ │ │ │ │ ├── BuilderInstruction3rmi.java │ │ │ │ │ ├── BuilderInstruction3rms.java │ │ │ │ │ ├── BuilderInstruction45cc.java │ │ │ │ │ ├── BuilderInstruction4rcc.java │ │ │ │ │ ├── BuilderInstruction51l.java │ │ │ │ │ ├── BuilderPackedSwitchPayload.java │ │ │ │ │ ├── BuilderSparseSwitchPayload.java │ │ │ │ │ └── BuilderSwitchElement.java │ │ │ ├── dexbacked │ │ │ │ ├── CDexBackedDexFile.java │ │ │ │ ├── CDexBackedMethodImplementation.java │ │ │ │ ├── DexBackedAnnotation.java │ │ │ │ ├── DexBackedAnnotationElement.java │ │ │ │ ├── DexBackedCatchAllExceptionHandler.java │ │ │ │ ├── DexBackedClassDef.java │ │ │ │ ├── DexBackedDexFile.java │ │ │ │ ├── DexBackedExceptionHandler.java │ │ │ │ ├── DexBackedField.java │ │ │ │ ├── DexBackedMethod.java │ │ │ │ ├── DexBackedMethodImplementation.java │ │ │ │ ├── DexBackedOdexFile.java │ │ │ │ ├── DexBackedTryBlock.java │ │ │ │ ├── DexBackedTypedExceptionHandler.java │ │ │ │ ├── DexBuffer.java │ │ │ │ ├── DexReader.java │ │ │ │ ├── OatFile.java │ │ │ │ ├── ZipDexContainer.java │ │ │ │ ├── instruction │ │ │ │ │ ├── DexBackedArrayPayload.java │ │ │ │ │ ├── DexBackedInstruction.java │ │ │ │ │ ├── DexBackedInstruction10t.java │ │ │ │ │ ├── DexBackedInstruction10x.java │ │ │ │ │ ├── DexBackedInstruction11n.java │ │ │ │ │ ├── DexBackedInstruction11x.java │ │ │ │ │ ├── DexBackedInstruction12x.java │ │ │ │ │ ├── DexBackedInstruction20bc.java │ │ │ │ │ ├── DexBackedInstruction20t.java │ │ │ │ │ ├── DexBackedInstruction21c.java │ │ │ │ │ ├── DexBackedInstruction21ih.java │ │ │ │ │ ├── DexBackedInstruction21lh.java │ │ │ │ │ ├── DexBackedInstruction21s.java │ │ │ │ │ ├── DexBackedInstruction21t.java │ │ │ │ │ ├── DexBackedInstruction22b.java │ │ │ │ │ ├── DexBackedInstruction22c.java │ │ │ │ │ ├── DexBackedInstruction22cs.java │ │ │ │ │ ├── DexBackedInstruction22s.java │ │ │ │ │ ├── DexBackedInstruction22t.java │ │ │ │ │ ├── DexBackedInstruction22x.java │ │ │ │ │ ├── DexBackedInstruction23x.java │ │ │ │ │ ├── DexBackedInstruction30t.java │ │ │ │ │ ├── DexBackedInstruction31c.java │ │ │ │ │ ├── DexBackedInstruction31i.java │ │ │ │ │ ├── DexBackedInstruction31t.java │ │ │ │ │ ├── DexBackedInstruction32x.java │ │ │ │ │ ├── DexBackedInstruction35c.java │ │ │ │ │ ├── DexBackedInstruction35mi.java │ │ │ │ │ ├── DexBackedInstruction35ms.java │ │ │ │ │ ├── DexBackedInstruction3rc.java │ │ │ │ │ ├── DexBackedInstruction3rmi.java │ │ │ │ │ ├── DexBackedInstruction3rms.java │ │ │ │ │ ├── DexBackedInstruction45cc.java │ │ │ │ │ ├── DexBackedInstruction4rcc.java │ │ │ │ │ ├── DexBackedInstruction51l.java │ │ │ │ │ ├── DexBackedPackedSwitchPayload.java │ │ │ │ │ ├── DexBackedSparseSwitchPayload.java │ │ │ │ │ └── DexBackedUnknownInstruction.java │ │ │ │ ├── raw │ │ │ │ │ ├── AnnotationDirectoryItem.java │ │ │ │ │ ├── AnnotationItem.java │ │ │ │ │ ├── AnnotationSetItem.java │ │ │ │ │ ├── AnnotationSetRefList.java │ │ │ │ │ ├── CallSiteIdItem.java │ │ │ │ │ ├── CdexDebugOffsetTable.java │ │ │ │ │ ├── CdexHeaderItem.java │ │ │ │ │ ├── ClassDataItem.java │ │ │ │ │ ├── ClassDefItem.java │ │ │ │ │ ├── CodeItem.java │ │ │ │ │ ├── DebugInfoItem.java │ │ │ │ │ ├── EncodedArrayItem.java │ │ │ │ │ ├── EncodedValue.java │ │ │ │ │ ├── FieldIdItem.java │ │ │ │ │ ├── HeaderItem.java │ │ │ │ │ ├── HiddenApiClassDataItem.java │ │ │ │ │ ├── ItemType.java │ │ │ │ │ ├── MapItem.java │ │ │ │ │ ├── MethodHandleItem.java │ │ │ │ │ ├── MethodIdItem.java │ │ │ │ │ ├── OdexHeaderItem.java │ │ │ │ │ ├── ProtoIdItem.java │ │ │ │ │ ├── SectionAnnotator.java │ │ │ │ │ ├── StringDataItem.java │ │ │ │ │ ├── StringIdItem.java │ │ │ │ │ ├── TypeIdItem.java │ │ │ │ │ ├── TypeListItem.java │ │ │ │ │ └── util │ │ │ │ │ │ └── DexAnnotator.java │ │ │ │ ├── reference │ │ │ │ │ ├── DexBackedCallSiteReference.java │ │ │ │ │ ├── DexBackedFieldReference.java │ │ │ │ │ ├── DexBackedMethodHandleReference.java │ │ │ │ │ ├── DexBackedMethodProtoReference.java │ │ │ │ │ ├── DexBackedMethodReference.java │ │ │ │ │ ├── DexBackedReference.java │ │ │ │ │ ├── DexBackedStringReference.java │ │ │ │ │ └── DexBackedTypeReference.java │ │ │ │ ├── util │ │ │ │ │ ├── AnnotationsDirectory.java │ │ │ │ │ ├── DebugInfo.java │ │ │ │ │ ├── EncodedArrayItemIterator.java │ │ │ │ │ ├── FixedSizeList.java │ │ │ │ │ ├── FixedSizeSet.java │ │ │ │ │ ├── ParameterIterator.java │ │ │ │ │ ├── VariableSizeCollection.java │ │ │ │ │ ├── VariableSizeIterator.java │ │ │ │ │ ├── VariableSizeList.java │ │ │ │ │ ├── VariableSizeListIterator.java │ │ │ │ │ ├── VariableSizeLookaheadIterator.java │ │ │ │ │ └── VariableSizeSet.java │ │ │ │ └── value │ │ │ │ │ ├── DexBackedAnnotationEncodedValue.java │ │ │ │ │ ├── DexBackedArrayEncodedValue.java │ │ │ │ │ ├── DexBackedEncodedValue.java │ │ │ │ │ ├── DexBackedEnumEncodedValue.java │ │ │ │ │ ├── DexBackedFieldEncodedValue.java │ │ │ │ │ ├── DexBackedMethodEncodedValue.java │ │ │ │ │ ├── DexBackedMethodHandleEncodedValue.java │ │ │ │ │ ├── DexBackedMethodTypeEncodedValue.java │ │ │ │ │ ├── DexBackedStringEncodedValue.java │ │ │ │ │ └── DexBackedTypeEncodedValue.java │ │ │ ├── formatter │ │ │ │ ├── DexFormattedWriter.java │ │ │ │ └── DexFormatter.java │ │ │ ├── iface │ │ │ │ ├── Annotatable.java │ │ │ │ ├── Annotation.java │ │ │ │ ├── AnnotationElement.java │ │ │ │ ├── BasicAnnotation.java │ │ │ │ ├── ClassDef.java │ │ │ │ ├── DexFile.java │ │ │ │ ├── ExceptionHandler.java │ │ │ │ ├── Field.java │ │ │ │ ├── Member.java │ │ │ │ ├── Method.java │ │ │ │ ├── MethodImplementation.java │ │ │ │ ├── MethodParameter.java │ │ │ │ ├── MultiDexContainer.java │ │ │ │ ├── TryBlock.java │ │ │ │ ├── debug │ │ │ │ │ ├── DebugItem.java │ │ │ │ │ ├── EndLocal.java │ │ │ │ │ ├── EpilogueBegin.java │ │ │ │ │ ├── LineNumber.java │ │ │ │ │ ├── LocalInfo.java │ │ │ │ │ ├── PrologueEnd.java │ │ │ │ │ ├── RestartLocal.java │ │ │ │ │ ├── SetSourceFile.java │ │ │ │ │ └── StartLocal.java │ │ │ │ ├── instruction │ │ │ │ │ ├── DualReferenceInstruction.java │ │ │ │ │ ├── FieldOffsetInstruction.java │ │ │ │ │ ├── FiveRegisterInstruction.java │ │ │ │ │ ├── HatLiteralInstruction.java │ │ │ │ │ ├── InlineIndexInstruction.java │ │ │ │ │ ├── Instruction.java │ │ │ │ │ ├── LongHatLiteralInstruction.java │ │ │ │ │ ├── NarrowHatLiteralInstruction.java │ │ │ │ │ ├── NarrowLiteralInstruction.java │ │ │ │ │ ├── OffsetInstruction.java │ │ │ │ │ ├── OneRegisterInstruction.java │ │ │ │ │ ├── PayloadInstruction.java │ │ │ │ │ ├── ReferenceInstruction.java │ │ │ │ │ ├── RegisterRangeInstruction.java │ │ │ │ │ ├── SwitchElement.java │ │ │ │ │ ├── SwitchPayload.java │ │ │ │ │ ├── ThreeRegisterInstruction.java │ │ │ │ │ ├── TwoRegisterInstruction.java │ │ │ │ │ ├── VariableRegisterInstruction.java │ │ │ │ │ ├── VerificationErrorInstruction.java │ │ │ │ │ ├── VtableIndexInstruction.java │ │ │ │ │ ├── WideLiteralInstruction.java │ │ │ │ │ └── formats │ │ │ │ │ │ ├── ArrayPayload.java │ │ │ │ │ │ ├── Instruction10t.java │ │ │ │ │ │ ├── Instruction10x.java │ │ │ │ │ │ ├── Instruction11n.java │ │ │ │ │ │ ├── Instruction11x.java │ │ │ │ │ │ ├── Instruction12x.java │ │ │ │ │ │ ├── Instruction20bc.java │ │ │ │ │ │ ├── Instruction20t.java │ │ │ │ │ │ ├── Instruction21c.java │ │ │ │ │ │ ├── Instruction21ih.java │ │ │ │ │ │ ├── Instruction21lh.java │ │ │ │ │ │ ├── Instruction21s.java │ │ │ │ │ │ ├── Instruction21t.java │ │ │ │ │ │ ├── Instruction22b.java │ │ │ │ │ │ ├── Instruction22c.java │ │ │ │ │ │ ├── Instruction22cs.java │ │ │ │ │ │ ├── Instruction22s.java │ │ │ │ │ │ ├── Instruction22t.java │ │ │ │ │ │ ├── Instruction22x.java │ │ │ │ │ │ ├── Instruction23x.java │ │ │ │ │ │ ├── Instruction30t.java │ │ │ │ │ │ ├── Instruction31c.java │ │ │ │ │ │ ├── Instruction31i.java │ │ │ │ │ │ ├── Instruction31t.java │ │ │ │ │ │ ├── Instruction32x.java │ │ │ │ │ │ ├── Instruction35c.java │ │ │ │ │ │ ├── Instruction35mi.java │ │ │ │ │ │ ├── Instruction35ms.java │ │ │ │ │ │ ├── Instruction3rc.java │ │ │ │ │ │ ├── Instruction3rmi.java │ │ │ │ │ │ ├── Instruction3rms.java │ │ │ │ │ │ ├── Instruction45cc.java │ │ │ │ │ │ ├── Instruction4rcc.java │ │ │ │ │ │ ├── Instruction51l.java │ │ │ │ │ │ ├── PackedSwitchPayload.java │ │ │ │ │ │ ├── SparseSwitchPayload.java │ │ │ │ │ │ └── UnknownInstruction.java │ │ │ │ ├── reference │ │ │ │ │ ├── CallSiteReference.java │ │ │ │ │ ├── FieldReference.java │ │ │ │ │ ├── MethodHandleReference.java │ │ │ │ │ ├── MethodProtoReference.java │ │ │ │ │ ├── MethodReference.java │ │ │ │ │ ├── Reference.java │ │ │ │ │ ├── StringReference.java │ │ │ │ │ └── TypeReference.java │ │ │ │ └── value │ │ │ │ │ ├── AnnotationEncodedValue.java │ │ │ │ │ ├── ArrayEncodedValue.java │ │ │ │ │ ├── BooleanEncodedValue.java │ │ │ │ │ ├── ByteEncodedValue.java │ │ │ │ │ ├── CharEncodedValue.java │ │ │ │ │ ├── DoubleEncodedValue.java │ │ │ │ │ ├── EncodedValue.java │ │ │ │ │ ├── EnumEncodedValue.java │ │ │ │ │ ├── FieldEncodedValue.java │ │ │ │ │ ├── FloatEncodedValue.java │ │ │ │ │ ├── IntEncodedValue.java │ │ │ │ │ ├── LongEncodedValue.java │ │ │ │ │ ├── MethodEncodedValue.java │ │ │ │ │ ├── MethodHandleEncodedValue.java │ │ │ │ │ ├── MethodTypeEncodedValue.java │ │ │ │ │ ├── NullEncodedValue.java │ │ │ │ │ ├── ShortEncodedValue.java │ │ │ │ │ ├── StringEncodedValue.java │ │ │ │ │ └── TypeEncodedValue.java │ │ │ ├── immutable │ │ │ │ ├── ImmutableAnnotation.java │ │ │ │ ├── ImmutableAnnotationElement.java │ │ │ │ ├── ImmutableClassDef.java │ │ │ │ ├── ImmutableDexFile.java │ │ │ │ ├── ImmutableExceptionHandler.java │ │ │ │ ├── ImmutableField.java │ │ │ │ ├── ImmutableMethod.java │ │ │ │ ├── ImmutableMethodImplementation.java │ │ │ │ ├── ImmutableMethodParameter.java │ │ │ │ ├── ImmutableMultiDexContainer.java │ │ │ │ ├── ImmutableTryBlock.java │ │ │ │ ├── debug │ │ │ │ │ ├── ImmutableDebugItem.java │ │ │ │ │ ├── ImmutableEndLocal.java │ │ │ │ │ ├── ImmutableEpilogueBegin.java │ │ │ │ │ ├── ImmutableLineNumber.java │ │ │ │ │ ├── ImmutablePrologueEnd.java │ │ │ │ │ ├── ImmutableRestartLocal.java │ │ │ │ │ ├── ImmutableSetSourceFile.java │ │ │ │ │ └── ImmutableStartLocal.java │ │ │ │ ├── instruction │ │ │ │ │ ├── ImmutableArrayPayload.java │ │ │ │ │ ├── ImmutableInstruction.java │ │ │ │ │ ├── ImmutableInstruction10t.java │ │ │ │ │ ├── ImmutableInstruction10x.java │ │ │ │ │ ├── ImmutableInstruction11n.java │ │ │ │ │ ├── ImmutableInstruction11x.java │ │ │ │ │ ├── ImmutableInstruction12x.java │ │ │ │ │ ├── ImmutableInstruction20bc.java │ │ │ │ │ ├── ImmutableInstruction20t.java │ │ │ │ │ ├── ImmutableInstruction21c.java │ │ │ │ │ ├── ImmutableInstruction21ih.java │ │ │ │ │ ├── ImmutableInstruction21lh.java │ │ │ │ │ ├── ImmutableInstruction21s.java │ │ │ │ │ ├── ImmutableInstruction21t.java │ │ │ │ │ ├── ImmutableInstruction22b.java │ │ │ │ │ ├── ImmutableInstruction22c.java │ │ │ │ │ ├── ImmutableInstruction22cs.java │ │ │ │ │ ├── ImmutableInstruction22s.java │ │ │ │ │ ├── ImmutableInstruction22t.java │ │ │ │ │ ├── ImmutableInstruction22x.java │ │ │ │ │ ├── ImmutableInstruction23x.java │ │ │ │ │ ├── ImmutableInstruction30t.java │ │ │ │ │ ├── ImmutableInstruction31c.java │ │ │ │ │ ├── ImmutableInstruction31i.java │ │ │ │ │ ├── ImmutableInstruction31t.java │ │ │ │ │ ├── ImmutableInstruction32x.java │ │ │ │ │ ├── ImmutableInstruction35c.java │ │ │ │ │ ├── ImmutableInstruction35mi.java │ │ │ │ │ ├── ImmutableInstruction35ms.java │ │ │ │ │ ├── ImmutableInstruction3rc.java │ │ │ │ │ ├── ImmutableInstruction3rmi.java │ │ │ │ │ ├── ImmutableInstruction3rms.java │ │ │ │ │ ├── ImmutableInstruction45cc.java │ │ │ │ │ ├── ImmutableInstruction4rcc.java │ │ │ │ │ ├── ImmutableInstruction51l.java │ │ │ │ │ ├── ImmutableInstructionFactory.java │ │ │ │ │ ├── ImmutablePackedSwitchPayload.java │ │ │ │ │ ├── ImmutableSparseSwitchPayload.java │ │ │ │ │ ├── ImmutableSwitchElement.java │ │ │ │ │ └── ImmutableUnknownInstruction.java │ │ │ │ ├── reference │ │ │ │ │ ├── ImmutableCallSiteReference.java │ │ │ │ │ ├── ImmutableFieldReference.java │ │ │ │ │ ├── ImmutableMethodHandleReference.java │ │ │ │ │ ├── ImmutableMethodProtoReference.java │ │ │ │ │ ├── ImmutableMethodReference.java │ │ │ │ │ ├── ImmutableReference.java │ │ │ │ │ ├── ImmutableReferenceFactory.java │ │ │ │ │ ├── ImmutableStringReference.java │ │ │ │ │ └── ImmutableTypeReference.java │ │ │ │ ├── util │ │ │ │ │ ├── CharSequenceConverter.java │ │ │ │ │ └── ParamUtil.java │ │ │ │ └── value │ │ │ │ │ ├── ImmutableAnnotationEncodedValue.java │ │ │ │ │ ├── ImmutableArrayEncodedValue.java │ │ │ │ │ ├── ImmutableBooleanEncodedValue.java │ │ │ │ │ ├── ImmutableByteEncodedValue.java │ │ │ │ │ ├── ImmutableCharEncodedValue.java │ │ │ │ │ ├── ImmutableDoubleEncodedValue.java │ │ │ │ │ ├── ImmutableEncodedValue.java │ │ │ │ │ ├── ImmutableEncodedValueFactory.java │ │ │ │ │ ├── ImmutableEnumEncodedValue.java │ │ │ │ │ ├── ImmutableFieldEncodedValue.java │ │ │ │ │ ├── ImmutableFloatEncodedValue.java │ │ │ │ │ ├── ImmutableIntEncodedValue.java │ │ │ │ │ ├── ImmutableLongEncodedValue.java │ │ │ │ │ ├── ImmutableMethodEncodedValue.java │ │ │ │ │ ├── ImmutableMethodHandleEncodedValue.java │ │ │ │ │ ├── ImmutableMethodTypeEncodedValue.java │ │ │ │ │ ├── ImmutableNullEncodedValue.java │ │ │ │ │ ├── ImmutableShortEncodedValue.java │ │ │ │ │ ├── ImmutableStringEncodedValue.java │ │ │ │ │ └── ImmutableTypeEncodedValue.java │ │ │ ├── rewriter │ │ │ │ ├── AnnotationElementRewriter.java │ │ │ │ ├── AnnotationRewriter.java │ │ │ │ ├── ClassDefRewriter.java │ │ │ │ ├── DebugItemRewriter.java │ │ │ │ ├── DexFileRewriter.java │ │ │ │ ├── DexRewriter.java │ │ │ │ ├── EncodedValueRewriter.java │ │ │ │ ├── ExceptionHandlerRewriter.java │ │ │ │ ├── FieldReferenceRewriter.java │ │ │ │ ├── FieldRewriter.java │ │ │ │ ├── InstructionRewriter.java │ │ │ │ ├── MethodImplementationRewriter.java │ │ │ │ ├── MethodParameterRewriter.java │ │ │ │ ├── MethodReferenceRewriter.java │ │ │ │ ├── MethodRewriter.java │ │ │ │ ├── Rewriter.java │ │ │ │ ├── RewriterModule.java │ │ │ │ ├── RewriterUtils.java │ │ │ │ ├── Rewriters.java │ │ │ │ ├── TryBlockRewriter.java │ │ │ │ └── TypeRewriter.java │ │ │ ├── util │ │ │ │ ├── AlignmentUtils.java │ │ │ │ ├── AnnotatedBytes.java │ │ │ │ ├── DexUtil.java │ │ │ │ ├── EncodedValueUtils.java │ │ │ │ ├── FieldUtil.java │ │ │ │ ├── InstructionOffsetMap.java │ │ │ │ ├── InstructionUtil.java │ │ │ │ ├── MethodUtil.java │ │ │ │ ├── Preconditions.java │ │ │ │ ├── ReferenceUtil.java │ │ │ │ ├── SyntheticAccessorFSM.java │ │ │ │ ├── SyntheticAccessorResolver.java │ │ │ │ └── TypeUtils.java │ │ │ └── writer │ │ │ │ ├── AnnotationSection.java │ │ │ │ ├── AnnotationSetSection.java │ │ │ │ ├── CallSiteSection.java │ │ │ │ ├── ClassSection.java │ │ │ │ ├── DebugWriter.java │ │ │ │ ├── DexDataWriter.java │ │ │ │ ├── DexWriter.java │ │ │ │ ├── EncodedArraySection.java │ │ │ │ ├── EncodedValueWriter.java │ │ │ │ ├── FieldSection.java │ │ │ │ ├── IndexSection.java │ │ │ │ ├── InstructionFactory.java │ │ │ │ ├── InstructionWriter.java │ │ │ │ ├── MethodHandleSection.java │ │ │ │ ├── MethodSection.java │ │ │ │ ├── NullableIndexSection.java │ │ │ │ ├── NullableOffsetSection.java │ │ │ │ ├── OffsetSection.java │ │ │ │ ├── ProtoSection.java │ │ │ │ ├── StringSection.java │ │ │ │ ├── TypeListSection.java │ │ │ │ ├── TypeSection.java │ │ │ │ ├── builder │ │ │ │ ├── BaseBuilderPool.java │ │ │ │ ├── BuilderAnnotation.java │ │ │ │ ├── BuilderAnnotationElement.java │ │ │ │ ├── BuilderAnnotationPool.java │ │ │ │ ├── BuilderAnnotationSet.java │ │ │ │ ├── BuilderAnnotationSetPool.java │ │ │ │ ├── BuilderCallSitePool.java │ │ │ │ ├── BuilderCallSiteReference.java │ │ │ │ ├── BuilderClassDef.java │ │ │ │ ├── BuilderClassPool.java │ │ │ │ ├── BuilderEncodedArrayPool.java │ │ │ │ ├── BuilderEncodedValues.java │ │ │ │ ├── BuilderExceptionHandler.java │ │ │ │ ├── BuilderField.java │ │ │ │ ├── BuilderFieldPool.java │ │ │ │ ├── BuilderFieldReference.java │ │ │ │ ├── BuilderMapEntryCollection.java │ │ │ │ ├── BuilderMethod.java │ │ │ │ ├── BuilderMethodHandlePool.java │ │ │ │ ├── BuilderMethodHandleReference.java │ │ │ │ ├── BuilderMethodParameter.java │ │ │ │ ├── BuilderMethodPool.java │ │ │ │ ├── BuilderMethodProtoReference.java │ │ │ │ ├── BuilderMethodReference.java │ │ │ │ ├── BuilderProtoPool.java │ │ │ │ ├── BuilderReference.java │ │ │ │ ├── BuilderStringPool.java │ │ │ │ ├── BuilderStringReference.java │ │ │ │ ├── BuilderTryBlock.java │ │ │ │ ├── BuilderTypeList.java │ │ │ │ ├── BuilderTypeListPool.java │ │ │ │ ├── BuilderTypePool.java │ │ │ │ ├── BuilderTypeReference.java │ │ │ │ └── DexBuilder.java │ │ │ │ ├── io │ │ │ │ ├── DeferredOutputStream.java │ │ │ │ ├── DeferredOutputStreamFactory.java │ │ │ │ ├── DexDataStore.java │ │ │ │ ├── FileDataStore.java │ │ │ │ ├── FileDeferredOutputStream.java │ │ │ │ ├── MemoryDataStore.java │ │ │ │ └── MemoryDeferredOutputStream.java │ │ │ │ ├── pool │ │ │ │ ├── AnnotationPool.java │ │ │ │ ├── AnnotationSetPool.java │ │ │ │ ├── BaseIndexPool.java │ │ │ │ ├── BaseNullableOffsetPool.java │ │ │ │ ├── BaseOffsetPool.java │ │ │ │ ├── BasePool.java │ │ │ │ ├── CallSitePool.java │ │ │ │ ├── ClassPool.java │ │ │ │ ├── DexPool.java │ │ │ │ ├── EncodedArrayPool.java │ │ │ │ ├── FieldPool.java │ │ │ │ ├── Markable.java │ │ │ │ ├── MethodHandlePool.java │ │ │ │ ├── MethodPool.java │ │ │ │ ├── PoolClassDef.java │ │ │ │ ├── PoolMethod.java │ │ │ │ ├── PoolMethodProto.java │ │ │ │ ├── ProtoPool.java │ │ │ │ ├── StringPool.java │ │ │ │ ├── StringTypeBasePool.java │ │ │ │ ├── TypeListPool.java │ │ │ │ └── TypePool.java │ │ │ │ └── util │ │ │ │ ├── CallSiteUtil.java │ │ │ │ ├── StaticInitializerUtil.java │ │ │ │ └── TryListBuilder.java │ │ │ ├── smali │ │ │ ├── AssembleCommand.java │ │ │ ├── HelpCommand.java │ │ │ ├── InvalidToken.java │ │ │ ├── LexerErrorInterface.java │ │ │ ├── LiteralTools.java │ │ │ ├── Main.java │ │ │ ├── OdexedInstructionException.java │ │ │ ├── PrintTokensCommand.java │ │ │ ├── SemanticException.java │ │ │ ├── Smali.java │ │ │ ├── SmaliFlexLexer.java │ │ │ ├── SmaliMethodParameter.java │ │ │ ├── SmaliOptions.java │ │ │ ├── SmaliParser.java │ │ │ ├── SmaliTestUtils.java │ │ │ ├── SmaliTreeWalker.java │ │ │ ├── WithRegister.java │ │ │ └── util │ │ │ │ └── BlankReader.java │ │ │ └── util │ │ │ ├── AbstractForwardSequentialList.java │ │ │ ├── AbstractListIterator.java │ │ │ ├── ArraySortedSet.java │ │ │ ├── BitSetUtils.java │ │ │ ├── CharSequenceUtils.java │ │ │ ├── ClassFileNameHandler.java │ │ │ ├── CollectionUtils.java │ │ │ ├── ConsoleUtil.java │ │ │ ├── ExceptionWithContext.java │ │ │ ├── Hex.java │ │ │ ├── ImmutableConverter.java │ │ │ ├── ImmutableUtils.java │ │ │ ├── IndentingWriter.java │ │ │ ├── LinearSearch.java │ │ │ ├── NibbleUtils.java │ │ │ ├── NumberUtils.java │ │ │ ├── PathUtil.java │ │ │ ├── RandomAccessFileInputStream.java │ │ │ ├── RandomAccessFileOutputStream.java │ │ │ ├── SparseArray.java │ │ │ ├── SparseIntArray.java │ │ │ ├── StringUtils.java │ │ │ ├── StringWrapper.java │ │ │ ├── TwoColumnOutput.java │ │ │ ├── Utf8Utils.java │ │ │ ├── WrappedIndentingWriter.java │ │ │ └── jcommander │ │ │ ├── ColonParameterSplitter.java │ │ │ ├── Command.java │ │ │ ├── ExtendedCommands.java │ │ │ ├── ExtendedParameter.java │ │ │ ├── ExtendedParameters.java │ │ │ └── HelpFormatter.java │ └── jflex │ │ ├── smaliFlexLexer.java │ │ └── smaliLexer.jflex │ └── test │ └── java │ └── com │ └── apkide │ └── smali │ └── ExampleUnitTest.java └── util ├── antlr-runtime ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ └── java │ └── org │ └── antlr │ └── runtime │ ├── ANTLRFileStream.java │ ├── ANTLRInputStream.java │ ├── ANTLRReaderStream.java │ ├── ANTLRStringStream.java │ ├── BaseRecognizer.java │ ├── BitSet.java │ ├── BufferedTokenStream.java │ ├── CharStream.java │ ├── CharStreamState.java │ ├── ClassicToken.java │ ├── CommonToken.java │ ├── CommonTokenStream.java │ ├── DFA.java │ ├── EarlyExitException.java │ ├── FailedPredicateException.java │ ├── IntStream.java │ ├── LegacyCommonTokenStream.java │ ├── Lexer.java │ ├── MismatchedNotSetException.java │ ├── MismatchedRangeException.java │ ├── MismatchedSetException.java │ ├── MismatchedTokenException.java │ ├── MismatchedTreeNodeException.java │ ├── MissingTokenException.java │ ├── NoViableAltException.java │ ├── Parser.java │ ├── ParserRuleReturnScope.java │ ├── RecognitionException.java │ ├── RecognizerSharedState.java │ ├── RuleReturnScope.java │ ├── SerializedGrammar.java │ ├── Token.java │ ├── TokenRewriteStream.java │ ├── TokenSource.java │ ├── TokenStream.java │ ├── UnbufferedTokenStream.java │ ├── UnwantedTokenException.java │ ├── misc │ ├── DoubleKeyMap.java │ ├── FastQueue.java │ ├── IntArray.java │ ├── LookaheadStream.java │ └── Stats.java │ └── tree │ ├── BaseTree.java │ ├── BaseTreeAdaptor.java │ ├── BufferedTreeNodeStream.java │ ├── CommonErrorNode.java │ ├── CommonTree.java │ ├── CommonTreeAdaptor.java │ ├── CommonTreeNodeStream.java │ ├── ParseTree.java │ ├── PositionTrackingStream.java │ ├── RewriteCardinalityException.java │ ├── RewriteEarlyExitException.java │ ├── RewriteEmptyStreamException.java │ ├── RewriteRuleElementStream.java │ ├── RewriteRuleNodeStream.java │ ├── RewriteRuleSubtreeStream.java │ ├── RewriteRuleTokenStream.java │ ├── Tree.java │ ├── TreeAdaptor.java │ ├── TreeFilter.java │ ├── TreeIterator.java │ ├── TreeNodeStream.java │ ├── TreeParser.java │ ├── TreePatternLexer.java │ ├── TreePatternParser.java │ ├── TreeRewriter.java │ ├── TreeRuleReturnScope.java │ ├── TreeVisitor.java │ ├── TreeVisitorAction.java │ └── TreeWizard.java └── antlr4-runtime ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src └── main └── java └── org └── antlr └── v4 └── runtime ├── ANTLRErrorListener.java ├── ANTLRErrorStrategy.java ├── ANTLRFileStream.java ├── ANTLRInputStream.java ├── BailErrorStrategy.java ├── BaseErrorListener.java ├── BufferedTokenStream.java ├── CharStream.java ├── CharStreams.java ├── CodePointBuffer.java ├── CodePointCharStream.java ├── CommonToken.java ├── CommonTokenFactory.java ├── CommonTokenStream.java ├── ConsoleErrorListener.java ├── DefaultErrorStrategy.java ├── DiagnosticErrorListener.java ├── FailedPredicateException.java ├── InputMismatchException.java ├── IntStream.java ├── InterpreterRuleContext.java ├── Lexer.java ├── LexerInterpreter.java ├── LexerNoViableAltException.java ├── ListTokenSource.java ├── NoViableAltException.java ├── Parser.java ├── ParserInterpreter.java ├── ParserRuleContext.java ├── ProxyErrorListener.java ├── RecognitionException.java ├── Recognizer.java ├── RuleContext.java ├── RuleContextWithAltNum.java ├── RuntimeMetaData.java ├── Token.java ├── TokenFactory.java ├── TokenSource.java ├── TokenStream.java ├── TokenStreamRewriter.java ├── UnbufferedCharStream.java ├── UnbufferedTokenStream.java ├── Vocabulary.java ├── VocabularyImpl.java ├── WritableToken.java ├── atn ├── ATN.java ├── ATNConfig.java ├── ATNConfigSet.java ├── ATNDeserializationOptions.java ├── ATNDeserializer.java ├── ATNSerializer.java ├── ATNSimulator.java ├── ATNState.java ├── ATNType.java ├── AbstractPredicateTransition.java ├── ActionTransition.java ├── AmbiguityInfo.java ├── ArrayPredictionContext.java ├── AtomTransition.java ├── BasicBlockStartState.java ├── BasicState.java ├── BlockEndState.java ├── BlockStartState.java ├── CodePointTransitions.java ├── ContextSensitivityInfo.java ├── DecisionEventInfo.java ├── DecisionInfo.java ├── DecisionState.java ├── EmptyPredictionContext.java ├── EpsilonTransition.java ├── ErrorInfo.java ├── LL1Analyzer.java ├── LexerATNConfig.java ├── LexerATNSimulator.java ├── LexerAction.java ├── LexerActionExecutor.java ├── LexerActionType.java ├── LexerChannelAction.java ├── LexerCustomAction.java ├── LexerIndexedCustomAction.java ├── LexerModeAction.java ├── LexerMoreAction.java ├── LexerPopModeAction.java ├── LexerPushModeAction.java ├── LexerSkipAction.java ├── LexerTypeAction.java ├── LookaheadEventInfo.java ├── LoopEndState.java ├── NotSetTransition.java ├── OrderedATNConfigSet.java ├── ParseInfo.java ├── ParserATNSimulator.java ├── PlusBlockStartState.java ├── PlusLoopbackState.java ├── PrecedencePredicateTransition.java ├── PredicateEvalInfo.java ├── PredicateTransition.java ├── PredictionContext.java ├── PredictionContextCache.java ├── PredictionMode.java ├── ProfilingATNSimulator.java ├── RangeTransition.java ├── RuleStartState.java ├── RuleStopState.java ├── RuleTransition.java ├── SemanticContext.java ├── SetTransition.java ├── SingletonPredictionContext.java ├── StarBlockStartState.java ├── StarLoopEntryState.java ├── StarLoopbackState.java ├── TokensStartState.java ├── Transition.java └── WildcardTransition.java ├── dfa ├── DFA.java ├── DFASerializer.java ├── DFAState.java └── LexerDFASerializer.java ├── misc ├── AbstractEqualityComparator.java ├── Array2DHashSet.java ├── DoubleKeyMap.java ├── EqualityComparator.java ├── FlexibleHashMap.java ├── IntSet.java ├── IntegerList.java ├── IntegerStack.java ├── InterpreterDataReader.java ├── Interval.java ├── IntervalSet.java ├── LogManager.java ├── MultiMap.java ├── MurmurHash.java ├── NotNull.java ├── ObjectEqualityComparator.java ├── OrderedHashSet.java ├── Pair.java ├── ParseCancellationException.java ├── Predicate.java ├── TestRig.java ├── Triple.java └── Utils.java └── tree ├── AbstractParseTreeVisitor.java ├── ErrorNode.java ├── ErrorNodeImpl.java ├── IterativeParseTreeWalker.java ├── ParseTree.java ├── ParseTreeListener.java ├── ParseTreeProperty.java ├── ParseTreeVisitor.java ├── ParseTreeWalker.java ├── RuleNode.java ├── SyntaxTree.java ├── TerminalNode.java ├── TerminalNodeImpl.java ├── Tree.java ├── Trees.java ├── pattern ├── Chunk.java ├── ParseTreeMatch.java ├── ParseTreePattern.java ├── ParseTreePatternMatcher.java ├── RuleTagToken.java ├── TagChunk.java ├── TextChunk.java └── TokenTagToken.java └── xpath ├── XPath.java ├── XPathElement.java ├── XPathLexer.java ├── XPathLexerErrorListener.java ├── XPathRuleAnywhereElement.java ├── XPathRuleElement.java ├── XPathTokenAnywhereElement.java ├── XPathTokenElement.java ├── XPathWildcardAnywhereElement.java └── XPathWildcardElement.java /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | .idea 4 | /local.properties 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | -------------------------------------------------------------------------------- /analytics/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /analytics/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.library' 3 | } 4 | 5 | android { 6 | namespace 'com.apkide.analytics' 7 | compileSdk 34 8 | 9 | defaultConfig { 10 | minSdk 26 11 | 12 | consumerProguardFiles "consumer-rules.pro" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | 22 | sourceSets { 23 | main { 24 | java.srcDirs = ['src/main/java'] 25 | } 26 | } 27 | 28 | compileOptions { 29 | sourceCompatibility JavaVersion.VERSION_11 30 | targetCompatibility JavaVersion.VERSION_11 31 | } 32 | } 33 | 34 | dependencies { 35 | api fileTree(dir: 'libs', include: ['*.jar']) 36 | implementation libs.androidx.annotation 37 | implementation 'com.flurry.android:analytics:14.3.0@aar' 38 | } -------------------------------------------------------------------------------- /analytics/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/analytics/consumer-rules.pro -------------------------------------------------------------------------------- /analytics/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /analytics/src/main/java/com/apkide/analytics/AnalyticsOptionsCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.analytics; 2 | 3 | public interface AnalyticsOptionsCallback { 4 | boolean isAnalyticsEnabled(); 5 | 6 | } 7 | -------------------------------------------------------------------------------- /apktool/core/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /apktool/core/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/consumer-rules.pro -------------------------------------------------------------------------------- /apktool/core/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /apktool/core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apktool/core/src/main/assets/android-framework.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/assets/android-framework.jar -------------------------------------------------------------------------------- /apktool/core/src/main/assets/arm-pie/aapt2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/assets/arm-pie/aapt2 -------------------------------------------------------------------------------- /apktool/core/src/main/assets/arm64/aapt2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/assets/arm64/aapt2 -------------------------------------------------------------------------------- /apktool/core/src/main/assets/x86-pie/aapt2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/assets/x86-pie/aapt2 -------------------------------------------------------------------------------- /apktool/core/src/main/assets/x86/aapt2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/assets/x86/aapt2 -------------------------------------------------------------------------------- /apktool/core/src/main/java/com/apkide/apktool/androlib/apk/VersionInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 Ryszard Wiśniewski 3 | * Copyright (C) 2010 Connor Tumbleson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package com.apkide.apktool.androlib.apk; 18 | 19 | public class VersionInfo { 20 | public String versionCode; 21 | public String versionName; 22 | } 23 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/com/apkide/apktool/androlib/res/data/value/ResValue.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010 Ryszard Wiśniewski 3 | * Copyright (C) 2010 Connor Tumbleson 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * https://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package com.apkide.apktool.androlib.res.data.value; 18 | 19 | public class ResValue { 20 | 21 | } 22 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/mxp1/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |

Contains XPP3 implementation of XMLPULL V1 API. 8 | 9 | 10 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/Iterable.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | import java.util.Iterator; 4 | 5 | //JDK15 remove and replace usage with real Iterable 6 | /** 7 | * Use java.lang.Iterable instead when JDK 1.5 comes out ...* 8 | * 9 | * @version $Revision: 1.3 $ 10 | * @author Aleksander Slominski 11 | */ 12 | public interface Iterable 13 | { 14 | public Iterator iterator(); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlCharacters.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Represents otrdered colection of 5 | * Character Information Items 6 | * where character code properties are put together into Java String. 7 | * 8 | * @version $Revision: 1.5 $ 9 | * @author Aleksander Slominski 10 | */ 11 | public interface XmlCharacters extends XmlContained 12 | { 13 | public String getText(); 14 | public Boolean isWhitespaceContent(); 15 | //public XmlElement getParent(); 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlComment.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Represents 5 | * Comment Information Item. 6 | * 7 | * 8 | * @version $Revision: 1.5 $ 9 | * @author Aleksander Slominski 10 | */ 11 | 12 | public interface XmlComment //extends XmlContainer 13 | { 14 | /** 15 | * A string representing the content of the comment. 16 | */ 17 | public String getContent(); 18 | 19 | /** 20 | * The document or element information item which contains this information item 21 | * in its [children] property. 22 | */ 23 | public XmlContainer getParent(); 24 | } 25 | 26 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlContained.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Common abstraction to represent XML infoset item that are contained in other infoet items 5 | * This is useful so parent can be updated on contained items when container is cloned ... 6 | * 7 | * @version $Revision: 1.3 $ 8 | * @author Aleksander Slominski 9 | */ 10 | 11 | public interface XmlContained 12 | { 13 | 14 | //Object getPrent() -- requires covariant return to work both in 15 | /// XmlElement (returns XmlContainer) and XmlComment (returns XmlContainer) ... 16 | public XmlContainer getParent(); 17 | public void setParent(XmlContainer el); 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlContainer.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Common abstraction shared between XmlElement, XmlDocument and XmlDoctype 5 | * to represent XML Infoset item that can contain other Infoset items 6 | * This is useful so getParent() operation will return this instead of Object ... 7 | * 8 | * @version $Revision: 1.4 $ 9 | * @author Aleksander Slominski 10 | */ 11 | 12 | public interface XmlContainer 13 | { 14 | } 15 | 16 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlSerializable.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | 4 | import org.xmlpull.v1.XmlSerializer; 5 | 6 | import java.io.IOException; 7 | 8 | /** 9 | * This interface is used during serialization by XmlInfosetBuilder 10 | * for children that are not in XML infoset. 11 | * 12 | * @version $Revision: 1.4 $ 13 | * @author Aleksander Slominski 14 | */ 15 | public interface XmlSerializable 16 | { 17 | public void serialize(XmlSerializer ser) throws IOException; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlUnexpandedEntityReference.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Represents 5 | * Unexpanded Entity Reference 6 | * Information Item 7 | * . 8 | * 9 | * @version $Revision: 1.3 $ 10 | * @author Aleksander Slominski 11 | */ 12 | public interface XmlUnexpandedEntityReference //extends XmlContainer 13 | { 14 | public String getName(); 15 | public String getSystemIdentifier(); 16 | public String getPublicIdentifier(); 17 | public String getDeclarationBaseUri(); 18 | public XmlElement getParent(); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/XmlUnparsedEntity.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder; 2 | 3 | /** 4 | * Represents 5 | * Unparsed Entity 6 | * Information Item 7 | * . 8 | * 9 | * @version $Revision: 1.3 $ 10 | * @author Aleksander Slominski 11 | */ 12 | public interface XmlUnparsedEntity //extends XmlContainer 13 | { 14 | public String getName(); 15 | public String getSystemIdentifier(); 16 | public String getPublicIdentifier(); 17 | public String getDeclarationBaseUri(); 18 | public String getNotationName(); 19 | public XmlNotation getNotation(); 20 | } 21 | 22 | -------------------------------------------------------------------------------- /apktool/core/src/main/java/org/xmlpull/v1/builder/impl/XmlCommentImpl.java: -------------------------------------------------------------------------------- 1 | package org.xmlpull.v1.builder.impl; 2 | 3 | import org.xmlpull.v1.builder.XmlComment; 4 | import org.xmlpull.v1.builder.XmlContainer; 5 | 6 | /** 7 | * Simple implementation. 8 | * 9 | * @author Aleksander Slominski 10 | */ 11 | public class XmlCommentImpl implements XmlComment 12 | { 13 | private XmlContainer owner_; 14 | 15 | private String content_; 16 | 17 | XmlCommentImpl(XmlContainer owner, String content) { 18 | this.owner_ = owner; 19 | this.content_ = content; 20 | if(content == null) throw new IllegalArgumentException("comment content can not be null"); 21 | } 22 | 23 | public String getContent() { 24 | return content_; 25 | } 26 | 27 | public XmlContainer getParent() { 28 | return owner_; 29 | } 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /apktool/core/src/main/jniLibs/arm64-v8a/libaapt2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/jniLibs/arm64-v8a/libaapt2.so -------------------------------------------------------------------------------- /apktool/core/src/main/jniLibs/armeabi-v7a/libaapt2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/jniLibs/armeabi-v7a/libaapt2.so -------------------------------------------------------------------------------- /apktool/core/src/main/jniLibs/x86/libaapt2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/jniLibs/x86/libaapt2.so -------------------------------------------------------------------------------- /apktool/core/src/main/jniLibs/x86_64/libaapt2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/core/src/main/jniLibs/x86_64/libaapt2.so -------------------------------------------------------------------------------- /apktool/core/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apktool/core/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apktool/core/src/main/resources/META-INF/services/org.xmlpull.v1.XmlPullParserFactory: -------------------------------------------------------------------------------- 1 | org.xmlpull.mxp1.MXParserFactory -------------------------------------------------------------------------------- /apktool/core/src/test/java/com/apkide/apktool/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.apkide.apktool; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /apktool/service/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /apktool/service/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/apktool/service/consumer-rules.pro -------------------------------------------------------------------------------- /apktool/service/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /apktool/service/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /apktool/service/src/main/java/com/apkide/apktool/engine/ApkToolConfig.java: -------------------------------------------------------------------------------- 1 | package com.apkide.apktool.engine; 2 | 3 | import com.apkide.apktool.androlib.Config; 4 | 5 | //TODO: implementation configs 6 | public class ApkToolConfig { 7 | 8 | 9 | protected void configure(Config config){ 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apktool/service/src/main/java/com/apkide/apktool/engine/ProcessingCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.apktool.engine; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 处理回调 7 | */ 8 | public interface ProcessingCallback { 9 | 10 | /** 11 | * 准备处理 12 | * 13 | * @param sourcePath 输入源路径 14 | */ 15 | void processPrepare(@NonNull String sourcePath); 16 | 17 | /** 18 | * 处理中 19 | * 20 | * @param msg 处理输出信息 21 | */ 22 | void processing(@NonNull String msg); 23 | 24 | /** 25 | * 处理错误 26 | * 27 | * @param error 错误 28 | */ 29 | void processError(@NonNull Throwable error); 30 | 31 | /** 32 | * 处理完成 33 | * 34 | * @param outputPath 输出路径 35 | */ 36 | void processDone(@NonNull String outputPath); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /apktool/service/src/main/java/com/apkide/apktool/engine/service/IProcessingCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.apktool.engine.service; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import cn.thens.okbinder2.AIDL; 6 | 7 | /** 8 | * 处理回调 9 | */ 10 | @AIDL 11 | public interface IProcessingCallback { 12 | 13 | /** 14 | * 准备处理 15 | * 16 | * @param sourcePath 源文件路径 17 | */ 18 | void processPrepare(@NonNull String sourcePath); 19 | 20 | /** 21 | * 处理中 22 | * 23 | * @param msg 处理输出信息 24 | */ 25 | void processing(@NonNull String msg); 26 | 27 | /** 28 | * 处理错误 29 | * 30 | * @param error 错误 31 | */ 32 | void processError(@NonNull Throwable error); 33 | 34 | /** 35 | * 处理完成 36 | * 37 | * @param outputPath 输出文件路径 38 | */ 39 | void processDone(@NonNull String outputPath); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /debug 3 | /release 4 | /src/main/gen 5 | .externalNativeBuild 6 | .cxx -------------------------------------------------------------------------------- /app/libs/java_compiler.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/libs/java_compiler.jar -------------------------------------------------------------------------------- /app/libs/jdk_compiler.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/libs/jdk_compiler.jar -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/MainUIViewModel.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui; 2 | 3 | import android.app.Application; 4 | 5 | import androidx.annotation.NonNull; 6 | import androidx.lifecycle.AndroidViewModel; 7 | 8 | public class MainUIViewModel extends AndroidViewModel { 9 | 10 | public MainUIViewModel(@NonNull Application application) { 11 | super(application); 12 | } 13 | 14 | @Override 15 | protected void onCleared() { 16 | super.onCleared(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/Browser.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers; 2 | 3 | public interface Browser { 4 | 5 | void refresh(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/BrowserMenuCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers; 2 | 3 | import androidx.annotation.DrawableRes; 4 | import androidx.annotation.StringRes; 5 | 6 | import com.apkide.common.command.Command; 7 | 8 | 9 | public interface BrowserMenuCommand extends Command { 10 | 11 | @DrawableRes 12 | int getIcon(); 13 | 14 | @StringRes 15 | int getLabel(); 16 | 17 | boolean isVisible(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/build/BuildOutputModel.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.build; 2 | 3 | import com.apkide.ui.views.CodeEditTextModel; 4 | 5 | public class BuildOutputModel extends CodeEditTextModel { 6 | public BuildOutputModel() { 7 | super(); 8 | } 9 | 10 | @Override 11 | public boolean isReadOnly() { 12 | return false; 13 | } 14 | 15 | @Override 16 | public boolean isLogging() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isLogErrorLine(int line) { 22 | return super.isLogErrorLine(line); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/error/ErrorBrowser.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.error; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.apkide.ui.R; 8 | import com.apkide.ui.browsers.HeaderBrowserLayout; 9 | 10 | public class ErrorBrowser extends HeaderBrowserLayout { 11 | public ErrorBrowser(@NonNull Context context) { 12 | super(context); 13 | 14 | getHeaderIcon().setImageResource(R.drawable.errors_no); 15 | getHeaderLabel().setText(R.string.browser_label_error); 16 | getHeaderHelp().setOnClickListener(view -> { 17 | 18 | }); 19 | } 20 | 21 | @NonNull 22 | @Override 23 | public String getBrowserName() { 24 | return "ErrorBrowser"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/error/ErrorEntry.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.error; 2 | 3 | import com.apkide.ui.util.Entry; 4 | 5 | public class ErrorEntry implements Entry, Comparable { 6 | 7 | @Override 8 | public int compareTo(ErrorEntry o) { 9 | return 0; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/error/ErrorEntryListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.error; 2 | 3 | import android.view.View; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.apkide.ui.util.Entry; 8 | import com.apkide.ui.util.ListAdapter; 9 | 10 | public class ErrorEntryListAdapter extends ListAdapter { 11 | @Override 12 | protected int getLayoutId(int viewType) { 13 | return 0; 14 | } 15 | 16 | @Override 17 | protected EntryViewHolder createEntryViewHolder(View view, int viewType) { 18 | return null; 19 | } 20 | 21 | @Override 22 | protected void boundEntryViewHolder(@NonNull EntryViewHolder holder, Entry entry, int position) { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/file/FileEntryViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.file; 2 | 3 | import android.view.View; 4 | import android.widget.ImageView; 5 | import android.widget.TextView; 6 | 7 | import androidx.annotation.NonNull; 8 | 9 | import com.apkide.ui.R; 10 | import com.apkide.ui.util.ListAdapter; 11 | 12 | public class FileEntryViewHolder extends ListAdapter.EntryViewHolder { 13 | public ImageView entryIcon; 14 | public TextView entryLabel; 15 | 16 | public FileEntryViewHolder(@NonNull View itemView) { 17 | super(itemView); 18 | entryIcon = itemView.findViewById(R.id.fileEntryIcon); 19 | entryLabel = itemView.findViewById(R.id.fileEntryLabel); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/project/ProjectEntryViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.project; 2 | 3 | import android.view.View; 4 | import android.widget.ImageView; 5 | import android.widget.TextView; 6 | 7 | import androidx.annotation.NonNull; 8 | 9 | import com.apkide.ui.R; 10 | import com.apkide.ui.util.ListAdapter; 11 | 12 | public class ProjectEntryViewHolder extends ListAdapter.EntryViewHolder { 13 | 14 | public ImageView entryIcon; 15 | public TextView entryLabel; 16 | 17 | public ProjectEntryViewHolder(@NonNull View itemView) { 18 | super(itemView); 19 | entryIcon = itemView.findViewById(R.id.projectEntryIcon); 20 | entryLabel = itemView.findViewById(R.id.projectEntryLabel); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/search/SearchBrowser.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.search; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.apkide.ui.R; 8 | import com.apkide.ui.browsers.HeaderBrowserLayout; 9 | 10 | public class SearchBrowser extends HeaderBrowserLayout { 11 | public SearchBrowser(@NonNull Context context) { 12 | super(context); 13 | 14 | getHeaderIcon().setImageResource(R.drawable.search); 15 | getHeaderLabel().setText(R.string.browser_label_search); 16 | getHeaderHelp().setOnClickListener(view -> { 17 | 18 | }); 19 | } 20 | 21 | @NonNull 22 | @Override 23 | public String getBrowserName() { 24 | return "SearchBrowser"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/search/SearchEntry.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.search; 2 | 3 | 4 | import com.apkide.ui.util.Entry; 5 | 6 | public class SearchEntry implements Entry, Comparable { 7 | 8 | private String label; 9 | 10 | @Override 11 | public int compareTo(SearchEntry o) { 12 | return 0; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/browsers/search/SearchEntryListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.browsers.search; 2 | 3 | import android.view.View; 4 | 5 | import androidx.annotation.NonNull; 6 | 7 | import com.apkide.ui.util.Entry; 8 | import com.apkide.ui.util.ListAdapter; 9 | 10 | public class SearchEntryListAdapter extends ListAdapter { 11 | @Override 12 | protected int getLayoutId(int viewType) { 13 | return 0; 14 | } 15 | 16 | @Override 17 | protected EntryViewHolder createEntryViewHolder(View view, int viewType) { 18 | return null; 19 | } 20 | 21 | @Override 22 | protected void boundEntryViewHolder(@NonNull EntryViewHolder holder, Entry entry, int position) { 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/CloseFileCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class CloseFileCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandCloseFile; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/ExitCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.App; 6 | import com.apkide.ui.R; 7 | import com.apkide.ui.util.MenuCommand; 8 | 9 | public class ExitCommand implements MenuCommand { 10 | @IdRes 11 | @Override 12 | public int getId() { 13 | return R.id.commandExit; 14 | } 15 | 16 | @Override 17 | public boolean isVisible() { 18 | return true; 19 | } 20 | 21 | @Override 22 | public boolean isEnabled() { 23 | return true; 24 | } 25 | 26 | @Override 27 | public boolean run() { 28 | App.getMainUI().shutdown(); 29 | return true; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/GotoSettingsCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.App; 6 | import com.apkide.ui.R; 7 | import com.apkide.ui.preferences.PreferencesUI; 8 | import com.apkide.ui.util.MenuCommand; 9 | 10 | public class GotoSettingsCommand implements MenuCommand { 11 | @IdRes 12 | @Override 13 | public int getId() { 14 | return R.id.commandGotoSettings; 15 | } 16 | 17 | @Override 18 | public boolean isVisible() { 19 | return true; 20 | } 21 | 22 | @Override 23 | public boolean isEnabled() { 24 | return true; 25 | } 26 | 27 | @Override 28 | public boolean run() { 29 | App.gotoUI(PreferencesUI.class.getName()); 30 | return true; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/SaveCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class SaveCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandSave; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/CopyCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class CopyCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandCopy; 13 | } 14 | 15 | 16 | @Override 17 | public boolean isVisible() { 18 | return false; 19 | } 20 | 21 | @Override 22 | public boolean isEnabled() { 23 | return false; 24 | } 25 | 26 | @Override 27 | public boolean run() { 28 | return false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/CutCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class CutCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandCut; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/EditModeCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class EditModeCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandEditMode; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/NavigateModeCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class NavigateModeCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandNavigateMode; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/PasteCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class PasteCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandPaste; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/PickColorCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class PickColorCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandPickColor; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/RedoCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class RedoCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandRedo; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/RunCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class RunCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandRun; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return true; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return true; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/SelectAllCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class SelectAllCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandSelectAll; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/actionbar/UndoCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.actionbar; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class UndoCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandUndo; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return false; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/IndentLinesCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class IndentLinesCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandAutoIndentLines; 13 | } 14 | @Override 15 | public boolean isVisible() { 16 | return true; 17 | } 18 | 19 | @Override 20 | public boolean isEnabled() { 21 | return false; 22 | } 23 | 24 | @Override 25 | public boolean run() { 26 | return false; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/OptimizeImportsCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class OptimizeImportsCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandOptimizeImports; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/OutCommentCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class OutCommentCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandOutComment; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/ReformatCodeCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class ReformatCodeCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandReformatCode; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/SurroundWithCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class SurroundWithCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandSurroundWith; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/code/UnOutCommentCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.code; 2 | 3 | import com.apkide.ui.R; 4 | import com.apkide.ui.util.MenuCommand; 5 | 6 | public class UnOutCommentCommand implements MenuCommand { 7 | @Override 8 | public int getId() { 9 | return R.id.commandUnOutComment; 10 | } 11 | 12 | @Override 13 | public boolean isVisible() { 14 | return true; 15 | } 16 | 17 | @Override 18 | public boolean isEnabled() { 19 | return false; 20 | } 21 | 22 | @Override 23 | public boolean run() { 24 | return false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/edit/FindCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.edit; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class FindCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandFind; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/edit/FindInFileCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.edit; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class FindInFileCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandFindInFile; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/edit/FindReplaceCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.edit; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class FindReplaceCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandFindReplace; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/edit/FindReplaceInFileCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.edit; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class FindReplaceInFileCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandFindReplaceInFile; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/navigate/BackwardCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.navigate; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class BackwardCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandBackward; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/navigate/FindUsagesCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.navigate; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class FindUsagesCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandFindUsages; 13 | } 14 | 15 | 16 | @Override 17 | public boolean isVisible() { 18 | return true; 19 | } 20 | 21 | @Override 22 | public boolean isEnabled() { 23 | return false; 24 | } 25 | 26 | @Override 27 | public boolean run() { 28 | return false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/navigate/ForwardCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.navigate; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class ForwardCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandForward; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/navigate/GotoCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.navigate; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class GotoCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandGoto; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/project/CleanProjectCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.project; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class CleanProjectCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandCleanProject; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/project/CloseProjectCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.project; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.App; 6 | import com.apkide.ui.R; 7 | import com.apkide.ui.util.MenuCommand; 8 | 9 | public class CloseProjectCommand implements MenuCommand { 10 | @IdRes 11 | @Override 12 | public int getId() { 13 | return R.id.commandCloseProject; 14 | } 15 | 16 | @Override 17 | public boolean isVisible() { 18 | return true; 19 | } 20 | 21 | @Override 22 | public boolean isEnabled() { 23 | return App.getProjectService().isProjectOpened(); 24 | } 25 | 26 | @Override 27 | public boolean run() { 28 | App.getProjectService().closeProject(); 29 | return true; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/project/MakeProjectCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.project; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class MakeProjectCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandMakeProject; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/project/RebuildProjectCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.project; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class RebuildProjectCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandRebuildProject; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/refactor/InlineCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.refactor; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class InlineCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandInline; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/refactor/RenameCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.refactor; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class RenameCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandRename; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/refactor/SafeDeleteCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.refactor; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.R; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class SafeDeleteCommand implements MenuCommand { 9 | @IdRes 10 | @Override 11 | public int getId() { 12 | return R.id.commandSafeDelete; 13 | } 14 | 15 | @Override 16 | public boolean isVisible() { 17 | return true; 18 | } 19 | 20 | @Override 21 | public boolean isEnabled() { 22 | return false; 23 | } 24 | 25 | @Override 26 | public boolean run() { 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/view/ViewBuildCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.view; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.App; 6 | import com.apkide.ui.R; 7 | import com.apkide.ui.browsers.BrowserPager; 8 | import com.apkide.ui.util.MenuCommand; 9 | 10 | public class ViewBuildCommand implements MenuCommand { 11 | @IdRes 12 | @Override 13 | public int getId() { 14 | return R.id.commandViewBuild; 15 | } 16 | 17 | @Override 18 | public boolean isVisible() { 19 | return true; 20 | } 21 | 22 | @Override 23 | public boolean isEnabled() { 24 | return true; 25 | } 26 | 27 | @Override 28 | public boolean run() { 29 | if (!App.getMainUI().getSplitLayout().isSplit()){ 30 | App.getMainUI().getSplitLayout().openSplit(); 31 | } 32 | if (App.getMainUI().getBrowserPager().getIndex()!= BrowserPager.BUILD_BROWSER){ 33 | App.getMainUI().getBrowserPager().toggle(BrowserPager.BUILD_BROWSER); 34 | } 35 | return true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/view/ViewFileCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.view; 2 | 3 | import androidx.annotation.IdRes; 4 | 5 | import com.apkide.ui.App; 6 | import com.apkide.ui.R; 7 | import com.apkide.ui.browsers.BrowserPager; 8 | import com.apkide.ui.util.MenuCommand; 9 | 10 | public class ViewFileCommand implements MenuCommand { 11 | @IdRes 12 | @Override 13 | public int getId() { 14 | return R.id.commandViewFile; 15 | } 16 | 17 | @Override 18 | public boolean isVisible() { 19 | return true; 20 | } 21 | 22 | @Override 23 | public boolean isEnabled() { 24 | return true; 25 | } 26 | 27 | @Override 28 | public boolean run() { 29 | if (!App.getMainUI().getSplitLayout().isSplit()){ 30 | App.getMainUI().getSplitLayout().openSplit(); 31 | } 32 | if (App.getMainUI().getBrowserPager().getIndex()!= BrowserPager.FILE_BROWSER){ 33 | App.getMainUI().getBrowserPager().toggle(BrowserPager.FILE_BROWSER); 34 | } 35 | return true; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/commands/view/ViewProjectCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.commands.view; 2 | 3 | import com.apkide.ui.App; 4 | import com.apkide.ui.R; 5 | import com.apkide.ui.browsers.BrowserPager; 6 | import com.apkide.ui.util.MenuCommand; 7 | 8 | public class ViewProjectCommand implements MenuCommand { 9 | @Override 10 | public int getId() { 11 | return R.id.commandViewProject; 12 | } 13 | 14 | @Override 15 | public boolean isVisible() { 16 | return true; 17 | } 18 | 19 | @Override 20 | public boolean isEnabled() { 21 | return true; 22 | } 23 | 24 | @Override 25 | public boolean run() { 26 | if (!App.getMainUI().getSplitLayout().isSplit()){ 27 | App.getMainUI().getSplitLayout().openSplit(); 28 | } 29 | if (App.getMainUI().getBrowserPager().getIndex()!= BrowserPager.PROJECT_BROWSER){ 30 | App.getMainUI().getBrowserPager().toggle(BrowserPager.PROJECT_BROWSER); 31 | } 32 | return true; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/preferences/AppearancePreferencesFragment.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.preferences; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.preference.PreferenceFragmentCompat; 7 | 8 | import com.apkide.ui.AppPreferences; 9 | import com.apkide.ui.R; 10 | 11 | public class AppearancePreferencesFragment extends PreferenceFragmentCompat { 12 | @Override 13 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { 14 | addPreferencesFromResource(R.xml.preferences_appearance); 15 | findPreference("app.theme.night").setEnabled(!AppPreferences.isFollowSystemTheme()); 16 | findPreference("app.theme.followSystem").setOnPreferenceChangeListener((preference, newValue) -> { 17 | findPreference("app.theme.night").setEnabled(Boolean.parseBoolean(newValue.toString())); 18 | return true; 19 | }); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/preferences/CompilerPreferencesFragment.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.preferences; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.preference.PreferenceFragmentCompat; 7 | 8 | import com.apkide.ui.R; 9 | 10 | public class CompilerPreferencesFragment extends PreferenceFragmentCompat { 11 | @Override 12 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { 13 | addPreferencesFromResource(R.xml.preferences_compiler); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/preferences/EditorPreferencesFragment.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.preferences; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.preference.PreferenceFragmentCompat; 7 | 8 | import com.apkide.ui.R; 9 | 10 | public class EditorPreferencesFragment extends PreferenceFragmentCompat { 11 | @Override 12 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { 13 | addPreferencesFromResource(R.xml.preferences_editor); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/preferences/HeadersPreferencesFragment.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.preferences; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.preference.PreferenceFragmentCompat; 7 | 8 | import com.apkide.ui.R; 9 | 10 | public class HeadersPreferencesFragment extends PreferenceFragmentCompat { 11 | 12 | @Override 13 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { 14 | addPreferencesFromResource(R.xml.preferences_headers); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/preferences/SourceControlPreferencesFragment.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.preferences; 2 | 3 | import android.os.Bundle; 4 | 5 | import androidx.annotation.Nullable; 6 | import androidx.preference.PreferenceFragmentCompat; 7 | 8 | import com.apkide.ui.R; 9 | 10 | public class SourceControlPreferencesFragment extends PreferenceFragmentCompat { 11 | @Override 12 | public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { 13 | addPreferencesFromResource(R.xml.preferences_sourcecontrol); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/AppService.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services; 2 | 3 | public interface AppService { 4 | 5 | void initialize(); 6 | 7 | void shutdown(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/build/BuildListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.build; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface BuildListener { 6 | void buildStarted(@NonNull String rootPath); 7 | 8 | void buildOutput(@NonNull String message); 9 | 10 | void buildFailed(@NonNull Throwable err); 11 | 12 | void buildFinished(@NonNull String outputPath); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/build/BuildService.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.build; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.ui.services.AppService; 6 | 7 | public class BuildService implements AppService { 8 | 9 | 10 | private BuildListener myListener; 11 | 12 | @Override 13 | public void initialize() { 14 | 15 | } 16 | 17 | public void setListener(@NonNull BuildListener listener) { 18 | myListener = listener; 19 | } 20 | 21 | public void build() { 22 | 23 | } 24 | 25 | @Override 26 | public void shutdown() { 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/decode/DecodeListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.decode; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface DecodeListener { 6 | void decodeStarted(@NonNull String rootPath); 7 | 8 | void decodeOutput(@NonNull String message); 9 | 10 | void decodeFailed(@NonNull Throwable err); 11 | 12 | void decodeFinished(@NonNull String outputPath); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/error/ErrorService.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.error; 2 | 3 | import com.apkide.ui.services.AppService; 4 | 5 | public class ErrorService implements AppService { 6 | 7 | @Override 8 | public void initialize() { 9 | 10 | } 11 | 12 | @Override 13 | public void shutdown() { 14 | 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/file/FileModel.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.file; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.common.io.iterator.LineIterator; 6 | import com.apkide.language.FileHighlighting; 7 | 8 | import java.io.IOException; 9 | 10 | public interface FileModel { 11 | @NonNull 12 | String getFileContent(); 13 | 14 | @NonNull 15 | LineIterator getFileContents(); 16 | 17 | void sync() throws IOException; 18 | 19 | void save() throws IOException; 20 | 21 | void highlighting(@NonNull FileHighlighting highlighting); 22 | 23 | void semanticHighlighting(@NonNull FileHighlighting highlighting); 24 | 25 | boolean isReadOnly(); 26 | 27 | boolean isBinary(); 28 | 29 | @NonNull 30 | String getFilePath(); 31 | 32 | long getLastModified(); 33 | 34 | long getFileSize(); 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/file/FileModelFactory.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.file; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import java.io.IOException; 6 | 7 | public interface FileModelFactory { 8 | 9 | @NonNull 10 | String getName(); 11 | 12 | boolean isSupportedFile(@NonNull String filePath); 13 | 14 | @NonNull 15 | FileModel createFileModel(@NonNull String filePath) throws IOException; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/file/FileServiceListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.file; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface FileServiceListener { 6 | 7 | void fileOpened(@NonNull String filePath, @NonNull FileModel fileModel); 8 | 9 | void fileClosed(@NonNull String filePath, @NonNull FileModel fileModel); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/navigate/NavigateService.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.navigate; 2 | 3 | import com.apkide.ui.services.AppService; 4 | 5 | public class NavigateService implements AppService { 6 | @Override 7 | public void initialize() { 8 | 9 | } 10 | 11 | @Override 12 | public void shutdown() { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/project/ConfigureFileImpl.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.project; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import java.io.IOException; 6 | 7 | public class ConfigureFileImpl extends ConfigureFile { 8 | 9 | public static final String APKTOOL_YML = "apktool.yml"; 10 | 11 | public ConfigureFileImpl(@NonNull String filePath) { 12 | super(filePath); 13 | } 14 | 15 | 16 | @Override 17 | protected void onSync() throws IOException { 18 | if (!getFilePath().equals(APKTOOL_YML)) 19 | throw new IOException(getFilePath()+" file not supported."); 20 | 21 | 22 | } 23 | 24 | @Override 25 | protected void onDestroy() { 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/project/ProjectManager.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.project; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.Nullable; 5 | 6 | import java.io.IOException; 7 | 8 | public interface ProjectManager { 9 | 10 | @NonNull 11 | String getName(); 12 | 13 | @NonNull 14 | String[] getSupportedLanguages(); 15 | 16 | boolean checkIsSupportedProjectRootPath(@NonNull String rootPath); 17 | 18 | boolean checkIsSupportedProjectPath(@NonNull String path); 19 | 20 | void open(@NonNull String rootPath)throws IOException; 21 | 22 | void close(); 23 | 24 | void sync(); 25 | 26 | boolean isOpen(); 27 | 28 | @Nullable 29 | String getRootPath(); 30 | 31 | boolean isProjectFilePath(@NonNull String path); 32 | 33 | @Nullable 34 | String resolvePath(@NonNull String path); 35 | 36 | int getIcon(); 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/services/project/ProjectServiceListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.services.project; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface ProjectServiceListener { 6 | 7 | 8 | void projectOpened(@NonNull String rootPath); 9 | 10 | void projectClosed(@NonNull String rootPath); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/util/Entry.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.util; 2 | 3 | public interface Entry { 4 | } 5 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/util/FileSpan.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.util; 2 | 3 | public class FileSpan { 4 | 5 | public String filePath; 6 | public int startLine,startColumn; 7 | public int endLine,endColumn; 8 | 9 | public FileSpan(String filePath, int startLine, int startColumn, int endLine, int endColumn) { 10 | this.filePath = filePath; 11 | this.startLine = startLine; 12 | this.startColumn = startColumn; 13 | this.endLine = endLine; 14 | this.endColumn = endColumn; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/util/MenuCommand.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.util; 2 | 3 | import androidx.annotation.DrawableRes; 4 | import androidx.annotation.IdRes; 5 | import androidx.annotation.Nullable; 6 | 7 | import com.apkide.common.command.Command; 8 | 9 | 10 | public interface MenuCommand extends Command { 11 | 12 | @IdRes 13 | int getId(); 14 | 15 | @DrawableRes 16 | default int getIcon(){ 17 | return 0; 18 | } 19 | 20 | @Nullable 21 | default String getTitle() { 22 | return null; 23 | } 24 | 25 | boolean isVisible(); 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/CodeEditTextModel.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views; 2 | 3 | import com.apkide.ui.views.editor.EditorModel; 4 | 5 | public class CodeEditTextModel extends EditorModel { 6 | 7 | public CodeEditTextModel(){ 8 | super(); 9 | } 10 | 11 | 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/editor/CaretListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views.editor; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface CaretListener { 6 | void caretUpdate(@NonNull EditorView view,int line,int column,boolean typing); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/editor/EditorModel.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views.editor; 2 | 3 | public class EditorModel extends Model{ 4 | public EditorModel(){ 5 | super(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/editor/Hyperlink.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views.editor; 2 | 3 | public class Hyperlink { 4 | public String url; 5 | public int startLine,startColumn; 6 | public int endLine,endColumn; 7 | 8 | public Hyperlink(String url, int startLine, int startColumn, int endLine, int endColumn) { 9 | this.url = url; 10 | this.startLine = startLine; 11 | this.startColumn = startColumn; 12 | this.endLine = endLine; 13 | this.endColumn = endColumn; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/editor/SelectionListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views.editor; 2 | 3 | public interface SelectionListener { 4 | void selectionUpdate(EditorView view); 5 | 6 | void selectionChanged(EditorView view, boolean selectionVisibility); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/apkide/ui/views/editor/Typing.java: -------------------------------------------------------------------------------- 1 | package com.apkide.ui.views.editor; 2 | 3 | public class Typing { 4 | 5 | public int line; 6 | public int startColumn; 7 | public int endColumn; 8 | 9 | public Typing(int line, int startColumn, int endColumn) { 10 | this.line = line; 11 | this.startColumn = startColumn; 12 | this.endColumn = endColumn; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/box_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/box_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/box_pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/box_pink.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/box_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/box_red.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/browser_git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/browser_git.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/errors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/errors.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/errors_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/errors_no.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_c.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_cpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_cpp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_css.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_h.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_html.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_java.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_js.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_txt.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_unknown.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/file_type_xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/file_type_xml.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/folder.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/folder_hidden.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/folder_hidden.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/folder_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/folder_open.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_design.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_expand.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_fix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_fix.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_goto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_goto.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_help.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_manage.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_more.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_redo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_run.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_undo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/ic_view.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/info.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/master_button_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/master_button_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/master_button_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/master_button_pressed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/objects.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pakage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/pakage.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/project_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/project_new.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/project_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/project_open.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/project_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/project_properties.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/text_select_handle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/text_select_handle_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/text_select_handle_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/text_select_handle_middle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/text_select_handle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-hdpi/text_select_handle_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/text_select_handle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-mdpi/text_select_handle_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/text_select_handle_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-mdpi/text_select_handle_middle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/text_select_handle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-mdpi/text_select_handle_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_copy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_cut.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_design.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_edit.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_expand.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_fix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_fix.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_goto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_goto.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_help.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_manage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_manage.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_more.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_paste.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_redo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_run.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_undo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night-hdpi/ic_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-night-hdpi/ic_view.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/text_select_handle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xhdpi/text_select_handle_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/text_select_handle_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xhdpi/text_select_handle_middle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/text_select_handle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xhdpi/text_select_handle_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/text_select_handle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xxhdpi/text_select_handle_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/text_select_handle_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xxhdpi/text_select_handle_middle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/text_select_handle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xxhdpi/text_select_handle_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/text_select_handle_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xxxhdpi/text_select_handle_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/text_select_handle_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/drawable-xxxhdpi/text_select_handle_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/master_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_build.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_error.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_error_entry.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_project.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/browser_search_entry.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/component_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_build_options.xml: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_error_entry_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_error_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_file_entry_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 10 | 13 | 14 | 17 | 18 | 21 | 22 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_file_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | 19 | 20 | 22 | 23 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_project_entry_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_project_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_search_entry_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/menu/browser_search_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #03A9F4 5 | #FF000000 6 | #FF000000 7 | #03A9F4 8 | #0288D1 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | 6 | #FFFFFFFF 7 | #03A9F4 8 | #FFFFFFFF 9 | #FFFFFFFF 10 | #03A9F4 11 | #0D47A1 12 | #FF000000 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_banner_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/xml/preferences_appearance.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/preferences_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/xml/preferences_sourcecontrol.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/testkey.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/app/testkey.jks -------------------------------------------------------------------------------- /common/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /common/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.library' 3 | } 4 | 5 | android { 6 | namespace 'com.apkide.common' 7 | compileSdk 34 8 | 9 | defaultConfig { 10 | minSdk 26 11 | 12 | consumerProguardFiles "consumer-rules.pro" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | 22 | sourceSets { 23 | main { 24 | java.srcDirs = ['src/main/java'] 25 | } 26 | } 27 | 28 | compileOptions { 29 | sourceCompatibility JavaVersion.VERSION_11 30 | targetCompatibility JavaVersion.VERSION_11 31 | } 32 | } 33 | 34 | dependencies { 35 | api fileTree(dir: 'libs', include: ['*.jar']) 36 | api libs.google.guava 37 | api libs.commons.text 38 | implementation libs.androidx.annotation 39 | testImplementation libs.junit 40 | } -------------------------------------------------------------------------------- /common/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/common/consumer-rules.pro -------------------------------------------------------------------------------- /common/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /common/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/SafeRunner.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public final class SafeRunner { 6 | 7 | public static void run(@NonNull SafeRunnable runnable) { 8 | try { 9 | runnable.run(); 10 | } catch (Exception e) { 11 | runnable.handleException(e); 12 | } 13 | } 14 | 15 | 16 | public interface SafeRunnable { 17 | void run() throws Exception; 18 | 19 | default void handleException(@NonNull Throwable e) { 20 | throw new RuntimeException(e); 21 | } 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/collection/IntPair.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.collection; 2 | 3 | public final class IntPair { 4 | private IntPair() {} 5 | public static long of(int first, int second) { 6 | return (((long)first) << 32) | ((long)second & 0xffffffffL); 7 | } 8 | 9 | public static int first(long intPair) { 10 | return (int)(intPair >> 32); 11 | } 12 | 13 | public static int second(long intPair) { 14 | return (int)intPair; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/command/Command.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.command; 2 | 3 | public interface Command { 4 | boolean isEnabled(); 5 | 6 | boolean run(); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/logger/Level.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.logger; 2 | 3 | public enum Level { 4 | Debug("DEBUG"), 5 | Information("INFO"), 6 | Verbose("VERBOSE"), 7 | Warning("WARNING"), 8 | Error("ERROR"); 9 | public final String prefix; 10 | public final String simplePrefix; 11 | 12 | Level(String prefix) { 13 | this.prefix = prefix; 14 | this.simplePrefix = prefix.substring(0, 1); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/logger/LoggerFactory.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.logger; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface LoggerFactory { 6 | @NonNull 7 | Logger createLogger(@NonNull String name); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/logger/LoggerListener.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.logger; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public interface LoggerListener { 6 | void logging(@NonNull String name, @NonNull Level level, @NonNull String msg); 7 | } 8 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/runnable/ActionRunnable.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.runnable; 2 | 3 | public interface ActionRunnable { 4 | 5 | void run(); 6 | 7 | void setEnabled(boolean enabled); 8 | 9 | boolean isEnabled(); 10 | } 11 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/runnable/ResultRunnable.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.runnable; 2 | 3 | import androidx.annotation.Nullable; 4 | 5 | public interface ResultRunnable { 6 | @Nullable 7 | R run(V V); 8 | } 9 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/runnable/ValueRunnable.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.runnable; 2 | 3 | public interface ValueRunnable { 4 | void run(T value); 5 | } 6 | -------------------------------------------------------------------------------- /common/src/main/java/com/apkide/common/text/TextGraphics.java: -------------------------------------------------------------------------------- 1 | package com.apkide.common.text; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Paint; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | public interface TextGraphics { 9 | 10 | float measure(int start, int end, @NonNull Paint paint); 11 | 12 | void getWidths(int start, int end, @NonNull float[] widths, @NonNull Paint paint); 13 | 14 | void draw(int start, int end, float x, float y, @NonNull Canvas canvas, @NonNull Paint paint); 15 | } 16 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/images/1.png -------------------------------------------------------------------------------- /images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/images/2.png -------------------------------------------------------------------------------- /images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/images/3.png -------------------------------------------------------------------------------- /images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/images/4.png -------------------------------------------------------------------------------- /java-decompiler/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /java-decompiler/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/java-decompiler/consumer-rules.pro -------------------------------------------------------------------------------- /java-decompiler/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/ClassNameConstants.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. 2 | package com.apkide.java.decompiler; 3 | 4 | public interface ClassNameConstants { 5 | String JAVA_LANG_STRING = "java/lang/String"; 6 | } 7 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/code/ExceptionTable.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.code; 3 | 4 | import java.util.Collections; 5 | import java.util.List; 6 | 7 | public class ExceptionTable { 8 | public static final ExceptionTable EMPTY = new ExceptionTable(Collections.emptyList()); 9 | 10 | private final List handlers; 11 | 12 | public ExceptionTable(List handlers) { 13 | this.handlers = handlers; 14 | } 15 | 16 | public List getHandlers() { 17 | return handlers; 18 | } 19 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/code/JumpInstruction.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.code; 3 | 4 | public class JumpInstruction extends Instruction { 5 | public int destination; 6 | 7 | public JumpInstruction(int opcode, int group, boolean wide, int bytecodeVersion, int[] operands) { 8 | super(opcode, group, wide, bytecodeVersion, operands); 9 | } 10 | 11 | @Override 12 | public void initInstruction(InstructionSequence seq) { 13 | destination = seq.getPointerByRelOffset(this.operand(0)); 14 | } 15 | 16 | @Override 17 | public JumpInstruction clone() { 18 | JumpInstruction copy = (JumpInstruction)super.clone(); 19 | copy.destination = destination; 20 | return copy; 21 | } 22 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/code/SimpleInstructionSequence.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.code; 3 | 4 | import com.apkide.java.decompiler.util.VBStyleCollection; 5 | 6 | public class SimpleInstructionSequence extends InstructionSequence { 7 | 8 | public SimpleInstructionSequence() { 9 | } 10 | 11 | public SimpleInstructionSequence(VBStyleCollection collinstr) { 12 | super(collinstr); 13 | } 14 | 15 | @Override 16 | public SimpleInstructionSequence clone() { 17 | SimpleInstructionSequence newseq = new SimpleInstructionSequence(collinstr.clone()); 18 | newseq.setPointer(this.getPointer()); 19 | 20 | return newseq; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/main/collectors/CounterContainer.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.main.collectors; 3 | 4 | public class CounterContainer { 5 | public static final int STATEMENT_COUNTER = 0; 6 | public static final int EXPRESSION_COUNTER = 1; 7 | public static final int VAR_COUNTER = 2; 8 | 9 | private final int[] values = new int[]{1, 1, 1}; 10 | 11 | public void setCounter(int counter, int value) { 12 | values[counter] = value; 13 | } 14 | 15 | public int getCounter(int counter) { 16 | return values[counter]; 17 | } 18 | 19 | public int getCounterAndIncrement(int counter) { 20 | return values[counter]++; 21 | } 22 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/main/extern/ClassFormatException.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.main.extern; 3 | 4 | public class ClassFormatException extends RuntimeException { 5 | public ClassFormatException(String message) { 6 | super(message); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/main/extern/IBytecodeProvider.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.main.extern; 3 | 4 | import java.io.IOException; 5 | 6 | public interface IBytecodeProvider { 7 | byte[] getBytecode(String externalPath, String internalPath) throws IOException; 8 | } 9 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/main/extern/IIdentifierRenamer.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.main.extern; 3 | 4 | public interface IIdentifierRenamer { 5 | 6 | enum Type {ELEMENT_CLASS, ELEMENT_FIELD, ELEMENT_METHOD} 7 | 8 | boolean toBeRenamed(Type elementType, String className, String element, String descriptor); 9 | 10 | String getNextClassName(String fullName, String shortName); 11 | 12 | String getNextFieldName(String className, String field, String descriptor); 13 | 14 | String getNextMethodName(String className, String method, String descriptor); 15 | } 16 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/decompiler/ClearStructHelper.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.decompiler; 3 | 4 | import com.apkide.java.decompiler.modules.decompiler.stats.RootStatement; 5 | import com.apkide.java.decompiler.modules.decompiler.stats.Statement; 6 | 7 | import java.util.LinkedList; 8 | 9 | 10 | public final class ClearStructHelper { 11 | 12 | public static void clearStatements(RootStatement root) { 13 | 14 | LinkedList stack = new LinkedList<>(); 15 | stack.add(root); 16 | 17 | while (!stack.isEmpty()) { 18 | 19 | Statement stat = stack.removeFirst(); 20 | 21 | stat.clearTempInformation(); 22 | 23 | stack.addAll(stat.getStats()); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/decompiler/ExpressionStack.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.decompiler; 3 | 4 | import com.apkide.java.decompiler.modules.decompiler.exps.Exprent; 5 | import com.apkide.java.decompiler.util.ListStack; 6 | 7 | public class ExpressionStack extends ListStack { 8 | public ExpressionStack() { } 9 | 10 | private ExpressionStack(int initialCapacity) { 11 | super(initialCapacity); 12 | } 13 | 14 | @Override 15 | public ExpressionStack copy() { 16 | ExpressionStack copy = new ExpressionStack(size()); 17 | for (Exprent expr : this) copy.push(expr.copy()); 18 | return copy; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/decompiler/decompose/IGraph.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.decompiler.decompose; 3 | 4 | import java.util.List; 5 | import java.util.Set; 6 | 7 | public interface IGraph { 8 | 9 | List getReversePostOrderList(); 10 | 11 | Set getRoots(); 12 | } 13 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/decompiler/decompose/IGraphNode.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.decompiler.decompose; 3 | 4 | import java.util.List; 5 | 6 | public interface IGraphNode { 7 | List getPredecessorNodes(); 8 | } 9 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/renamer/ClassWrapperNode.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.renamer; 3 | 4 | import com.apkide.java.decompiler.struct.StructClass; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class ClassWrapperNode { 10 | private final StructClass classStruct; 11 | private final List subclasses = new ArrayList<>(); 12 | 13 | public ClassWrapperNode(StructClass cl) { 14 | this.classStruct = cl; 15 | } 16 | 17 | public void addSubclass(ClassWrapperNode node) { 18 | subclasses.add(node); 19 | } 20 | 21 | public StructClass getClassStruct() { 22 | return classStruct; 23 | } 24 | 25 | public List getSubclasses() { 26 | return subclasses; 27 | } 28 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/modules/renamer/PoolInterceptor.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.modules.renamer; 3 | 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | public class PoolInterceptor { 8 | private final Map mapOldToNewNames = new HashMap<>(); 9 | private final Map mapNewToOldNames = new HashMap<>(); 10 | 11 | public void addName(String oldName, String newName) { 12 | mapOldToNewNames.put(oldName, newName); 13 | mapNewToOldNames.put(newName, oldName); 14 | } 15 | 16 | public String getName(String oldName) { 17 | return mapOldToNewNames.get(oldName); 18 | } 19 | 20 | public String getOldName(String newName) { 21 | return mapNewToOldNames.get(newName); 22 | } 23 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/IDecompiledData.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct; 3 | 4 | public interface IDecompiledData { 5 | 6 | String getClassEntryName(StructClass cl, String entryname); 7 | 8 | String getClassContent(StructClass cl); 9 | } 10 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/attr/StructAnnDefaultAttribute.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.attr; 3 | 4 | import com.apkide.java.decompiler.modules.decompiler.exps.Exprent; 5 | import com.apkide.java.decompiler.struct.consts.ConstantPool; 6 | import com.apkide.java.decompiler.util.DataInputFullStream; 7 | 8 | import java.io.IOException; 9 | 10 | public class StructAnnDefaultAttribute extends StructGeneralAttribute { 11 | 12 | private Exprent defaultValue; 13 | 14 | @Override 15 | public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { 16 | defaultValue = StructAnnotationAttribute.parseAnnotationElement(data, pool); 17 | } 18 | 19 | public Exprent getDefaultValue() { 20 | return defaultValue; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/attr/StructConstantValueAttribute.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.attr; 3 | 4 | import com.apkide.java.decompiler.struct.consts.ConstantPool; 5 | import com.apkide.java.decompiler.util.DataInputFullStream; 6 | 7 | import java.io.IOException; 8 | 9 | public class StructConstantValueAttribute extends StructGeneralAttribute { 10 | 11 | private int index; 12 | 13 | @Override 14 | public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { 15 | index = data.readUnsignedShort(); 16 | } 17 | 18 | public int getIndex() { 19 | return index; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/attr/StructGenericSignatureAttribute.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.attr; 3 | 4 | import com.apkide.java.decompiler.struct.consts.ConstantPool; 5 | import com.apkide.java.decompiler.util.DataInputFullStream; 6 | 7 | import java.io.IOException; 8 | 9 | public class StructGenericSignatureAttribute extends StructGeneralAttribute { 10 | 11 | private String signature; 12 | 13 | @Override 14 | public void initContent(DataInputFullStream data, ConstantPool pool) throws IOException { 15 | int index = data.readUnsignedShort(); 16 | signature = pool.getPrimitiveConstant(index).getString(); 17 | } 18 | 19 | public String getSignature() { 20 | return signature; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/consts/PooledConstant.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.consts; 3 | 4 | import com.apkide.java.decompiler.code.CodeConstants; 5 | 6 | public class PooledConstant implements CodeConstants { 7 | public final int type; 8 | 9 | public PooledConstant(int type) { 10 | this.type = type; 11 | } 12 | 13 | public void resolveConstant(ConstantPool pool) { } 14 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/gen/NewClassNameBuilder.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.gen; 3 | 4 | public interface NewClassNameBuilder { 5 | String buildNewClassname(String className); 6 | } 7 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/gen/Type.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. 2 | package com.apkide.java.decompiler.struct.gen; 3 | 4 | public interface Type { 5 | int getType(); 6 | 7 | int getArrayDim(); 8 | 9 | String getValue(); 10 | } 11 | 12 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/gen/generics/GenericClassDescriptor.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.gen.generics; 3 | 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | public class GenericClassDescriptor { 8 | 9 | public GenericType superclass; 10 | 11 | public final List superinterfaces = new ArrayList<>(); 12 | 13 | public final List fparameters = new ArrayList<>(); 14 | 15 | public final List> fbounds = new ArrayList<>(); 16 | } 17 | -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/gen/generics/GenericFieldDescriptor.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.gen.generics; 3 | 4 | public class GenericFieldDescriptor { 5 | public final GenericType type; 6 | 7 | public GenericFieldDescriptor(GenericType type) { 8 | this.type = type; 9 | } 10 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/struct/match/IMatchable.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.struct.match; 3 | 4 | public interface IMatchable { 5 | enum MatchProperties { 6 | STATEMENT_TYPE, 7 | STATEMENT_RET, 8 | STATEMENT_STATSIZE, 9 | STATEMENT_EXPRSIZE, 10 | STATEMENT_POSITION, 11 | STATEMENT_IFTYPE, 12 | 13 | EXPRENT_TYPE, 14 | EXPRENT_RET, 15 | EXPRENT_POSITION, 16 | EXPRENT_FUNCTYPE, 17 | EXPRENT_EXITTYPE, 18 | EXPRENT_CONSTTYPE, 19 | EXPRENT_CONSTVALUE, 20 | EXPRENT_INVOCATION_CLASS, 21 | EXPRENT_INVOCATION_SIGNATURE, 22 | EXPRENT_INVOCATION_PARAMETER, 23 | EXPRENT_VAR_INDEX, 24 | EXPRENT_FIELD_NAME, 25 | } 26 | 27 | IMatchable findObject(MatchNode matchNode, int index); 28 | 29 | boolean match(MatchNode matchNode, MatchEngine engine); 30 | } -------------------------------------------------------------------------------- /java-decompiler/src/main/java/com/apkide/java/decompiler/util/DataInputFullStream.java: -------------------------------------------------------------------------------- 1 | // Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2 | package com.apkide.java.decompiler.util; 3 | 4 | import java.io.ByteArrayInputStream; 5 | import java.io.DataInputStream; 6 | import java.io.IOException; 7 | 8 | public class DataInputFullStream extends DataInputStream { 9 | public DataInputFullStream(byte[] bytes) { 10 | super(new ByteArrayInputStream(bytes)); 11 | } 12 | 13 | public byte[] read(int n) throws IOException { 14 | return InterpreterUtil.readBytes(this, n); 15 | } 16 | 17 | public void discard(int n) throws IOException { 18 | InterpreterUtil.discardBytes(this, n); 19 | } 20 | } -------------------------------------------------------------------------------- /language/api/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/api/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/api/consumer-rules.pro -------------------------------------------------------------------------------- /language/api/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/api/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeAnalyzer.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 代码分析接口 7 | */ 8 | public interface CodeAnalyzer { 9 | 10 | void analyze(@NonNull String filePath,@NonNull CodeAnalyzerCallback callback); 11 | } 12 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeAnalyzerCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 代码分析回调 7 | */ 8 | public interface CodeAnalyzerCallback extends FileStoreCallback{ 9 | 10 | void errorFound(@NonNull String source, @NonNull String message, @NonNull String code); 11 | void errorFound(@NonNull String filePath, @NonNull String message, @NonNull String code, 12 | int startLine, int startColumn, int endLine, int endColumn); 13 | void warningFound(@NonNull String source, @NonNull String message, @NonNull String code); 14 | void warningFound(@NonNull String filePath, @NonNull String message, @NonNull String code, 15 | int startLine, int startColumn, int endLine, int endColumn); 16 | } 17 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeCompiler.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | /** 4 | * 代码编译接口 5 | *

6 | * apkide 似乎不需要,所以不会实现该接口 7 | */ 8 | 9 | public interface CodeCompiler { 10 | 11 | /* void compile(@NonNull String filePath, 12 | @NonNull CodeCompilerCallback callback);*/ 13 | } 14 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeCompilerCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | /** 4 | * 代码编译回调 5 | */ 6 | public interface CodeCompilerCallback extends FileStoreCallback{ 7 | } 8 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeCompleter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | 6 | /** 7 | * 代码补全接口 8 | */ 9 | public interface CodeCompleter { 10 | 11 | /** 12 | * 请求补全 13 | * 14 | * @param filePath 文件路径 15 | * @param line 标识符所在行 16 | * @param column 标识符所在列 17 | * @param allowTypes 包括类型 18 | * @param callback 补全回调 19 | */ 20 | void completion(@NonNull String filePath, int line, int column, boolean allowTypes, 21 | @NonNull CodeCompleterCallback callback); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeCompleterCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.annotation.Nullable; 5 | 6 | /** 7 | * 代码补全回调 8 | */ 9 | public interface CodeCompleterCallback extends FileStoreCallback{ 10 | 11 | void completionFound(int kind, @NonNull String label, @Nullable String details, 12 | @Nullable String documentation, boolean deprecated, boolean preselect, 13 | @Nullable String sortText, @NonNull String insertText, boolean snippet); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeFormatterCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 格式化回调 7 | */ 8 | public interface CodeFormatterCallback extends FileStoreCallback { 9 | 10 | int getLineIndentation(int line); 11 | 12 | void indentationLine(int line, int indentationSize); 13 | 14 | int getIndentationSize(); 15 | 16 | int getTabSize(); 17 | 18 | int getLineCount(); 19 | 20 | int getLineLength(int line); 21 | 22 | char getChar(int line, int column); 23 | 24 | int getStyle(int line, int column); 25 | 26 | void insertLineBreak(int line, int column); 27 | 28 | void removeLineBreak(int line); 29 | 30 | void insertText(int line, int column, @NonNull String text); 31 | 32 | void removeText(int startLine, int startColumn, int endLine, int endColumn); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeHighlighter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 高亮接口 7 | */ 8 | public interface CodeHighlighter { 9 | 10 | void highlighting(@NonNull String filePath, @NonNull CodeHighlighterCallback callback); 11 | 12 | void semanticHighlighting(@NonNull String filePath, @NonNull CodeHighlighterCallback callback); 13 | } 14 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeHighlighterCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | /** 4 | * 高亮回调 5 | */ 6 | public interface CodeHighlighterCallback extends FileStoreCallback { 7 | 8 | void tokenFound(int styleKind, int startLine, int startColumn, 9 | int endLine, int endColumn); 10 | 11 | void semanticTokenFound(int styleKind, int startLine, int startColumn, 12 | int endLine, int endColumn); 13 | } 14 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/CodeNavigationCallback.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | /** 6 | * 代码导航回调 7 | */ 8 | public interface CodeNavigationCallback extends FileStoreCallback{ 9 | 10 | 11 | void usageFound(@NonNull String filePath,int startLine,int startColumn, 12 | int endLine,int endColumn); 13 | 14 | 15 | 16 | void symbolFound(int kind,@NonNull String name,boolean deprecated, 17 | @NonNull String filePath,int startLine,int startColumn, 18 | int endLine,int endColumn); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /language/api/src/main/java/com/apkide/language/api/StyleKind.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | public class StyleKind { 4 | public static final int PlainStyle = 0; 5 | public static final int KeywordStyle = 1; 6 | public static final int OperatorStyle = 2; 7 | public static final int SeparatorStyle = 3; 8 | public static final int StringStyle = 4; 9 | public static final int NumberStyle = 5; 10 | public static final int MetadataStyle = 6; 11 | public static final int IdentifierStyle = 7; 12 | public static final int NamespaceStyle = 8; 13 | public static final int TypeStyle = 9; 14 | public static final int VariableStyle = 10; 15 | public static final int FunctionStyle = 11; 16 | public static final int FunctionCallStyle = 12; 17 | public static final int ParameterStyle = 13; 18 | public static final int CommentStyle = 14; 19 | public static final int BlockCommentStyle = 15; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /language/api/src/test/java/com/apkide/language/api/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.api; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /language/language-java/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/language-java/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/language-java/consumer-rules.pro -------------------------------------------------------------------------------- /language/language-java/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/language-java/src/main/java/com/apkide/language/java/JavaCodeAnalyzer.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.java; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeAnalyzer; 6 | import com.apkide.language.api.CodeAnalyzerCallback; 7 | 8 | public class JavaCodeAnalyzer implements CodeAnalyzer { 9 | private final JavaLanguage myLanguage; 10 | 11 | public JavaCodeAnalyzer(JavaLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void analyze(@NonNull String filePath, @NonNull CodeAnalyzerCallback callback) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /language/language-java/src/main/java/com/apkide/language/java/JavaCodeCompleter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.java; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeCompleter; 6 | import com.apkide.language.api.CodeCompleterCallback; 7 | 8 | public class JavaCodeCompleter implements CodeCompleter { 9 | private final JavaLanguage myLanguage; 10 | 11 | public JavaCodeCompleter(JavaLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void completion(@NonNull String filePath, int line, int column, boolean allowTypes, 17 | @NonNull CodeCompleterCallback callback) { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /language/language-java/src/main/java/com/apkide/language/java/JavaCodeFormatter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.java; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeFormatter; 6 | import com.apkide.language.api.CodeFormatterCallback; 7 | 8 | public class JavaCodeFormatter implements CodeFormatter { 9 | private final JavaLanguage myLanguage; 10 | 11 | public JavaCodeFormatter(JavaLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void indentLines(@NonNull String filePath, int startLine, int startColumn, 17 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void formatLines(@NonNull String filePath, int startLine, int startColumn, 23 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /language/language-java/src/main/java/com/apkide/language/java/JavaCodeNavigation.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.java; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeNavigation; 6 | import com.apkide.language.api.CodeNavigationCallback; 7 | 8 | public class JavaCodeNavigation implements CodeNavigation { 9 | private final JavaLanguage myLanguage; 10 | 11 | public JavaCodeNavigation(JavaLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void searchUsages(@NonNull String filePath, int line, int column, 17 | @NonNull CodeNavigationCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void searchSymbol(@NonNull String filePath, int line, int column, 23 | boolean includeDeclaration, 24 | @NonNull CodeNavigationCallback callback) { 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /language/language-smali/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/language-smali/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/language-smali/consumer-rules.pro -------------------------------------------------------------------------------- /language/language-smali/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/language-smali/src/main/java/com/apkide/language/smali/SmaliCodeAnalyzer.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.smali; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeAnalyzer; 6 | import com.apkide.language.api.CodeAnalyzerCallback; 7 | 8 | public class SmaliCodeAnalyzer implements CodeAnalyzer { 9 | private final SmaliLanguage myLanguage; 10 | 11 | public SmaliCodeAnalyzer(SmaliLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void analyze(@NonNull String filePath, @NonNull CodeAnalyzerCallback callback) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /language/language-smali/src/main/java/com/apkide/language/smali/SmaliCodeCompleter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.smali; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeCompleter; 6 | import com.apkide.language.api.CodeCompleterCallback; 7 | 8 | public class SmaliCodeCompleter implements CodeCompleter { 9 | private final SmaliLanguage myLanguage; 10 | 11 | public SmaliCodeCompleter(SmaliLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void completion(@NonNull String filePath, int line, int column, boolean allowTypes, 17 | @NonNull CodeCompleterCallback callback) { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /language/language-smali/src/main/java/com/apkide/language/smali/SmaliCodeFormatter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.smali; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeFormatter; 6 | import com.apkide.language.api.CodeFormatterCallback; 7 | 8 | public class SmaliCodeFormatter implements CodeFormatter { 9 | private final SmaliLanguage myLanguage; 10 | 11 | public SmaliCodeFormatter(SmaliLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void indentLines(@NonNull String filePath, int startLine, int startColumn, 17 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void formatLines(@NonNull String filePath, int startLine, int startColumn, 23 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /language/language-smali/src/main/java/com/apkide/language/smali/SmaliCodeHighlighter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.smali; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeHighlighter; 6 | import com.apkide.language.api.CodeHighlighterCallback; 7 | 8 | public class SmaliCodeHighlighter implements CodeHighlighter { 9 | private final SmaliLanguage myLanguage; 10 | 11 | public SmaliCodeHighlighter(SmaliLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void highlighting(@NonNull String filePath, 17 | @NonNull CodeHighlighterCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void semanticHighlighting(@NonNull String filePath, 23 | @NonNull CodeHighlighterCallback callback) { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /language/language-smali/src/main/java/com/apkide/language/smali/SmaliCodeNavigation.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.smali; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeNavigation; 6 | import com.apkide.language.api.CodeNavigationCallback; 7 | 8 | public class SmaliCodeNavigation implements CodeNavigation { 9 | private final SmaliLanguage myLanguage; 10 | 11 | public SmaliCodeNavigation(SmaliLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void searchUsages(@NonNull String filePath, int line, int column, 17 | @NonNull CodeNavigationCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void searchSymbol(@NonNull String filePath, int line, int column, 23 | boolean includeDeclaration, 24 | @NonNull CodeNavigationCallback callback) { 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /language/language-xml/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/language-xml/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/language-xml/consumer-rules.pro -------------------------------------------------------------------------------- /language/language-xml/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/language-xml/src/main/java/com/apkide/language/xml/XmlCodeAnalyzer.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.xml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeAnalyzer; 6 | import com.apkide.language.api.CodeAnalyzerCallback; 7 | 8 | public class XmlCodeAnalyzer implements CodeAnalyzer { 9 | private final XmlLanguage myLanguage; 10 | 11 | public XmlCodeAnalyzer(XmlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void analyze(@NonNull String filePath, @NonNull CodeAnalyzerCallback callback) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /language/language-xml/src/main/java/com/apkide/language/xml/XmlCodeCompleter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.xml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeCompleter; 6 | import com.apkide.language.api.CodeCompleterCallback; 7 | 8 | public class XmlCodeCompleter implements CodeCompleter { 9 | private final XmlLanguage myLanguage; 10 | 11 | public XmlCodeCompleter(XmlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void completion(@NonNull String filePath, int line, int column, boolean allowTypes, 17 | @NonNull CodeCompleterCallback callback) { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /language/language-xml/src/main/java/com/apkide/language/xml/XmlCodeFormatter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.xml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeFormatter; 6 | import com.apkide.language.api.CodeFormatterCallback; 7 | 8 | public class XmlCodeFormatter implements CodeFormatter { 9 | private final XmlLanguage myLanguage; 10 | 11 | public XmlCodeFormatter(XmlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void indentLines(@NonNull String filePath, int startLine, int startColumn, 17 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void formatLines(@NonNull String filePath, int startLine, int startColumn, 23 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /language/language-xml/src/main/java/com/apkide/language/xml/XmlCodeNavigation.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.xml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeNavigation; 6 | import com.apkide.language.api.CodeNavigationCallback; 7 | 8 | public class XmlCodeNavigation implements CodeNavigation { 9 | private final XmlLanguage myLanguage; 10 | 11 | public XmlCodeNavigation(XmlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void searchUsages(@NonNull String filePath, int line, int column, 17 | @NonNull CodeNavigationCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void searchSymbol(@NonNull String filePath, int line, int column, 23 | boolean includeDeclaration, 24 | @NonNull CodeNavigationCallback callback) { 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /language/language-yaml/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/language-yaml/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/language-yaml/consumer-rules.pro -------------------------------------------------------------------------------- /language/language-yaml/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/language-yaml/src/main/java/com/apkide/language/yaml/YamlCodeAnalyzer.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.yaml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeAnalyzer; 6 | import com.apkide.language.api.CodeAnalyzerCallback; 7 | 8 | public class YamlCodeAnalyzer implements CodeAnalyzer { 9 | private final YamlLanguage myLanguage; 10 | 11 | public YamlCodeAnalyzer(YamlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void analyze(@NonNull String filePath, @NonNull CodeAnalyzerCallback callback) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /language/language-yaml/src/main/java/com/apkide/language/yaml/YamlCodeCompleter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.yaml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeCompleter; 6 | import com.apkide.language.api.CodeCompleterCallback; 7 | 8 | public class YamlCodeCompleter implements CodeCompleter { 9 | private final YamlLanguage myLanguage; 10 | 11 | public YamlCodeCompleter(YamlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void completion(@NonNull String filePath, int line, int column, boolean allowTypes, 17 | @NonNull CodeCompleterCallback callback) { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /language/language-yaml/src/main/java/com/apkide/language/yaml/YamlCodeFormatter.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.yaml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeFormatter; 6 | import com.apkide.language.api.CodeFormatterCallback; 7 | 8 | public class YamlCodeFormatter implements CodeFormatter { 9 | private final YamlLanguage myLanguage; 10 | 11 | public YamlCodeFormatter(YamlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void indentLines(@NonNull String filePath, int startLine, int startColumn, 17 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void formatLines(@NonNull String filePath, int startLine, int startColumn, 23 | int endLine, int endColumn, @NonNull CodeFormatterCallback callback) { 24 | 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /language/language-yaml/src/main/java/com/apkide/language/yaml/YamlCodeNavigation.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language.yaml; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.apkide.language.api.CodeNavigation; 6 | import com.apkide.language.api.CodeNavigationCallback; 7 | 8 | public class YamlCodeNavigation implements CodeNavigation { 9 | private final YamlLanguage myLanguage; 10 | 11 | public YamlCodeNavigation(YamlLanguage language) { 12 | myLanguage = language; 13 | } 14 | 15 | @Override 16 | public void searchUsages(@NonNull String filePath, int line, int column, 17 | @NonNull CodeNavigationCallback callback) { 18 | 19 | } 20 | 21 | @Override 22 | public void searchSymbol(@NonNull String filePath, int line, int column, 23 | boolean includeDeclaration, 24 | @NonNull CodeNavigationCallback callback) { 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /language/service/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /language/service/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/language/service/consumer-rules.pro -------------------------------------------------------------------------------- /language/service/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /language/service/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/Assembly.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable Assembly; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/Completion.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable Completion; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/FileHighlighting.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable FileHighlighting; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/FileSpan.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable FileSpan; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/IEngine.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | interface IEngine { 4 | 5 | 6 | } 7 | -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/LanguageProvider.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | import com.apkide.language.api.Language; 4 | 5 | public abstract class LanguageProvider { 6 | private static final Object sLock=new Object(); 7 | private static LanguageProvider sProvider; 8 | 9 | public static void set(LanguageProvider provider) { 10 | synchronized (sLock) { 11 | sProvider = provider; 12 | } 13 | } 14 | 15 | public static LanguageProvider get() { 16 | synchronized (sLock) { 17 | return sProvider; 18 | } 19 | } 20 | 21 | public abstract Language[] createLanguages(); 22 | } 23 | -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/Modification.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable Modification; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/Problem.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable Problem; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/StyleKind.java: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | public class StyleKind { 4 | public static final int PlainStyle = 0; 5 | public static final int KeywordStyle = 1; 6 | public static final int OperatorStyle = 2; 7 | public static final int SeparatorStyle = 3; 8 | public static final int StringStyle = 4; 9 | public static final int NumberStyle = 5; 10 | public static final int MetadataStyle = 6; 11 | public static final int IdentifierStyle = 7; 12 | public static final int NamespaceStyle = 8; 13 | public static final int TypeStyle = 9; 14 | public static final int VariableStyle = 10; 15 | public static final int FunctionStyle = 11; 16 | public static final int FunctionCallStyle = 12; 17 | public static final int ParameterStyle = 13; 18 | public static final int CommentStyle = 14; 19 | public static final int BlockCommentStyle = 15; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/Symbol.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language; 2 | 3 | parcelable Symbol; -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/service/ICodeAnayzingListener.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language.service; 2 | 3 | import com.apkide.language.Problem; 4 | 5 | interface ICodeAnayzingListener { 6 | 7 | void analyzeFinished(in String filePath,in List list); 8 | } -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/service/ICodeCompletionListener.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language.service; 2 | 3 | import com.apkide.language.Completion; 4 | 5 | interface ICodeCompletionListener { 6 | 7 | void completionFinished(in String filePath,in int line,in int column, 8 | in boolean allowTypes,in List list); 9 | } -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/service/ICodeHighlightingListener.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language.service; 2 | 3 | import com.apkide.language.FileHighlighting; 4 | 5 | interface ICodeHighlightingListener { 6 | 7 | void highlightingFinished(in FileHighlighting highlight); 8 | 9 | void semanticHighlightingFinished(in FileHighlighting highlight); 10 | } -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/service/ICodeNavigationListener.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language.service; 2 | 3 | import com.apkide.language.FileSpan; 4 | import com.apkide.language.Symbol; 5 | 6 | interface ICodeNavigationListener { 7 | 8 | void searchUsagesFinished(in String filePath,in int line,in int column, 9 | in List list); 10 | 11 | void searchSymbolFinished(in String filePath,in int line,in int column, 12 | in boolean includeDeclaration, 13 | in List list); 14 | } -------------------------------------------------------------------------------- /language/service/src/main/java/com/apkide/language/service/IFileEditor.aidl: -------------------------------------------------------------------------------- 1 | package com.apkide.language.service; 2 | 3 | interface IFileEditor { 4 | 5 | int getLineIndentation(in int line); 6 | 7 | void indentationLine(in int line,in int indentationSize); 8 | 9 | int getIndentationSize(); 10 | 11 | int getTabSize(); 12 | 13 | int getLineCount(); 14 | 15 | int getLineLength(in int line); 16 | 17 | char getChar(in int line,in int column); 18 | 19 | int getStyle(in int line,in int column); 20 | 21 | void insertLineBreak(in int line,in int column); 22 | 23 | void removeLineBreak(in int line); 24 | 25 | void insertText(in int line,in int column,in String text); 26 | 27 | void removeText(in int startLine,in int startColumn,in int endLine,in int endColumn); 28 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = "apkide" 2 | include ':app' 3 | include ':analytics' 4 | include ':common' 5 | include ':language:api' 6 | include ':language:language-java' 7 | include ':language:language-smali' 8 | include ':language:language-xml' 9 | include ':language:language-yaml' 10 | include ':language:service' 11 | include ':apktool:core' 12 | include ':apktool:service' 13 | include ':smali' 14 | include ':java-decompiler' 15 | include ':util:antlr4-runtime' 16 | include ':util:antlr-runtime' 17 | -------------------------------------------------------------------------------- /smali/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /smali/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/smali/consumer-rules.pro -------------------------------------------------------------------------------- /smali/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /smali/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /smali/src/test/java/com/apkide/smali/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.apkide.smali; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /util/antlr-runtime/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /util/antlr-runtime/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/util/antlr-runtime/consumer-rules.pro -------------------------------------------------------------------------------- /util/antlr-runtime/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /util/antlr4-runtime/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /util/antlr4-runtime/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/weg2022/apkide-old/c6b819ec1112caf2792f58e6d2ec6c754b40bc8c/util/antlr4-runtime/consumer-rules.pro -------------------------------------------------------------------------------- /util/antlr4-runtime/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/WritableToken.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime; 8 | 9 | public interface WritableToken extends Token { 10 | public void setText(String text); 11 | 12 | public void setType(int ttype); 13 | 14 | public void setLine(int line); 15 | 16 | public void setCharPositionInLine(int pos); 17 | 18 | public void setChannel(int channel); 19 | 20 | public void setTokenIndex(int index); 21 | } 22 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/ATNType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** 10 | * Represents the type of recognizer an ATN applies to. 11 | * 12 | * @author Sam Harwell 13 | */ 14 | public enum ATNType { 15 | 16 | /** 17 | * A lexer grammar. 18 | */ 19 | LEXER, 20 | 21 | /** 22 | * A parser grammar. 23 | */ 24 | PARSER, 25 | 26 | } 27 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/AbstractPredicateTransition.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** 10 | * 11 | * @author Sam Harwell 12 | */ 13 | public abstract class AbstractPredicateTransition extends Transition { 14 | 15 | public AbstractPredicateTransition(ATNState target) { 16 | super(target); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/BasicBlockStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** 10 | * 11 | * @author Sam Harwell 12 | */ 13 | public final class BasicBlockStartState extends BlockStartState { 14 | @Override 15 | public int getStateType() { 16 | return BLOCK_START; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/BasicState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** 10 | * 11 | * @author Sam Harwell 12 | */ 13 | public final class BasicState extends ATNState { 14 | 15 | @Override 16 | public int getStateType() { 17 | return BASIC; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/BlockEndState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** Terminal node of a simple {@code (a|b|c)} block. */ 10 | public final class BlockEndState extends ATNState { 11 | public BlockStartState startState; 12 | 13 | @Override 14 | public int getStateType() { 15 | return BLOCK_END; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/BlockStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** The start of a regular {@code (...)} block. */ 10 | public abstract class BlockStartState extends DecisionState { 11 | public BlockEndState endState; 12 | } 13 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/DecisionState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | public abstract class DecisionState extends ATNState { 10 | public int decision = -1; 11 | public boolean nonGreedy; 12 | } 13 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/LoopEndState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** Mark the end of a * or + loop. */ 10 | public final class LoopEndState extends ATNState { 11 | public ATNState loopBackState; 12 | 13 | @Override 14 | public int getStateType() { 15 | return LOOP_END; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/OrderedATNConfigSet.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | import org.antlr.v4.runtime.misc.ObjectEqualityComparator; 10 | 11 | /** 12 | * 13 | * @author Sam Harwell 14 | */ 15 | public class OrderedATNConfigSet extends ATNConfigSet { 16 | 17 | public OrderedATNConfigSet() { 18 | this.configLookup = new LexerConfigHashSet(); 19 | } 20 | 21 | public static class LexerConfigHashSet extends AbstractConfigHashSet { 22 | public LexerConfigHashSet() { 23 | super(ObjectEqualityComparator.INSTANCE); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/PlusBlockStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** Start of {@code (A|B|...)+} loop. Technically a decision state, but 10 | * we don't use for code generation; somebody might need it, so I'm defining 11 | * it for completeness. In reality, the {@link PlusLoopbackState} node is the 12 | * real decision-making note for {@code A+}. 13 | */ 14 | public final class PlusBlockStartState extends BlockStartState { 15 | public PlusLoopbackState loopBackState; 16 | 17 | @Override 18 | public int getStateType() { 19 | return PLUS_BLOCK_START; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/PlusLoopbackState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** Decision state for {@code A+} and {@code (A|B)+}. It has two transitions: 10 | * one to the loop back to start of the block and one to exit. 11 | */ 12 | public final class PlusLoopbackState extends DecisionState { 13 | 14 | @Override 15 | public int getStateType() { 16 | return PLUS_LOOP_BACK; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/RuleStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | public final class RuleStartState extends ATNState { 10 | public RuleStopState stopState; 11 | public boolean isLeftRecursiveRule; 12 | 13 | @Override 14 | public int getStateType() { 15 | return RULE_START; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/RuleStopState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** The last node in the ATN for a rule, unless that rule is the start symbol. 10 | * In that case, there is one transition to EOF. Later, we might encode 11 | * references to all calls to this rule to compute FOLLOW sets for 12 | * error handling. 13 | */ 14 | public final class RuleStopState extends ATNState { 15 | 16 | @Override 17 | public int getStateType() { 18 | return RULE_STOP; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/StarBlockStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** The block that begins a closure loop. */ 10 | public final class StarBlockStartState extends BlockStartState { 11 | 12 | @Override 13 | public int getStateType() { 14 | return STAR_BLOCK_START; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/StarLoopbackState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | public final class StarLoopbackState extends ATNState { 10 | public final StarLoopEntryState getLoopEntryState() { 11 | return (StarLoopEntryState)transition(0).target; 12 | } 13 | 14 | @Override 15 | public int getStateType() { 16 | return STAR_LOOP_BACK; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/TokensStartState.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | /** The Tokens rule start state linking to each lexer rule start state */ 10 | public final class TokensStartState extends DecisionState { 11 | 12 | @Override 13 | public int getStateType() { 14 | return TOKEN_START; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/atn/WildcardTransition.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.atn; 8 | 9 | public final class WildcardTransition extends Transition { 10 | public WildcardTransition(ATNState target) { super(target); } 11 | 12 | @Override 13 | public int getSerializationType() { 14 | return WILDCARD; 15 | } 16 | 17 | @Override 18 | public boolean matches(int symbol, int minVocabSymbol, int maxVocabSymbol) { 19 | return symbol >= minVocabSymbol && symbol <= maxVocabSymbol; 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "."; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/dfa/LexerDFASerializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.dfa; 8 | 9 | import org.antlr.v4.runtime.VocabularyImpl; 10 | 11 | public class LexerDFASerializer extends DFASerializer { 12 | public LexerDFASerializer(DFA dfa) { 13 | super(dfa, VocabularyImpl.EMPTY_VOCABULARY); 14 | } 15 | 16 | @Override 17 | 18 | protected String getEdgeLabel(int i) { 19 | return new StringBuilder("'") 20 | .appendCodePoint(i) 21 | .append("'") 22 | .toString(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/misc/AbstractEqualityComparator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | package org.antlr.v4.runtime.misc; 7 | 8 | /** 9 | * This abstract base class is provided so performance-critical applications can 10 | * use virtual- instead of interface-dispatch when calling comparator methods. 11 | * 12 | * @author Sam Harwell 13 | */ 14 | public abstract class AbstractEqualityComparator implements EqualityComparator { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/misc/IntegerStack.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | package org.antlr.v4.runtime.misc; 7 | 8 | /** 9 | * 10 | * @author Sam Harwell 11 | */ 12 | public class IntegerStack extends IntegerList { 13 | 14 | public IntegerStack() { 15 | } 16 | 17 | public IntegerStack(int capacity) { 18 | super(capacity); 19 | } 20 | 21 | public IntegerStack(IntegerStack list) { 22 | super(list); 23 | } 24 | 25 | public final void push(int value) { 26 | add(value); 27 | } 28 | 29 | public final int pop() { 30 | return removeAt(size() - 1); 31 | } 32 | 33 | public final int peek() { 34 | return get(size() - 1); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/misc/NotNull.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | package org.antlr.v4.runtime.misc; 7 | 8 | import java.lang.annotation.Documented; 9 | import java.lang.annotation.ElementType; 10 | import java.lang.annotation.Retention; 11 | import java.lang.annotation.RetentionPolicy; 12 | import java.lang.annotation.Target; 13 | 14 | /** @deprecated THIS IS HERE FOR BACKWARD COMPATIBILITY WITH 4.5 ONLY. It will 15 | * disappear in 4.6+ 16 | */ 17 | @Documented 18 | @Retention(RetentionPolicy.CLASS) 19 | @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE}) 20 | @Deprecated 21 | public @interface NotNull { 22 | } 23 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/misc/Predicate.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.misc; 8 | 9 | public interface Predicate { 10 | boolean test(T t); 11 | } 12 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/ErrorNode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree; 8 | 9 | public interface ErrorNode extends TerminalNode { 10 | } 11 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/RuleNode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree; 8 | 9 | import org.antlr.v4.runtime.RuleContext; 10 | 11 | public interface RuleNode extends ParseTree { 12 | RuleContext getRuleContext(); 13 | } 14 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/TerminalNode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree; 8 | 9 | import org.antlr.v4.runtime.Token; 10 | 11 | public interface TerminalNode extends ParseTree { 12 | Token getSymbol(); 13 | } 14 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/pattern/Chunk.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree.pattern; 8 | 9 | /** 10 | * A chunk is either a token tag, a rule tag, or a span of literal text within a 11 | * tree pattern. 12 | * 13 | *

The method {@link ParseTreePatternMatcher#split(String)} returns a list of 14 | * chunks in preparation for creating a token stream by 15 | * {@link ParseTreePatternMatcher#tokenize(String)}. From there, we get a parse 16 | * tree from with {@link ParseTreePatternMatcher#compile(String, int)}. These 17 | * chunks are converted to {@link RuleTagToken}, {@link TokenTagToken}, or the 18 | * regular tokens of the text surrounding the tags.

19 | */ 20 | abstract class Chunk { 21 | } 22 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/xpath/XPathLexerErrorListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree.xpath; 8 | 9 | import org.antlr.v4.runtime.BaseErrorListener; 10 | import org.antlr.v4.runtime.RecognitionException; 11 | import org.antlr.v4.runtime.Recognizer; 12 | 13 | public class XPathLexerErrorListener extends BaseErrorListener { 14 | @Override 15 | public void syntaxError(Recognizer recognizer, Object offendingSymbol, 16 | int line, int charPositionInLine, String msg, 17 | RecognitionException e) 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/xpath/XPathRuleAnywhereElement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree.xpath; 8 | 9 | import org.antlr.v4.runtime.tree.ParseTree; 10 | import org.antlr.v4.runtime.tree.Trees; 11 | 12 | import java.util.Collection; 13 | 14 | /** 15 | * Either {@code ID} at start of path or {@code ...//ID} in middle of path. 16 | */ 17 | public class XPathRuleAnywhereElement extends XPathElement { 18 | protected int ruleIndex; 19 | public XPathRuleAnywhereElement(String ruleName, int ruleIndex) { 20 | super(ruleName); 21 | this.ruleIndex = ruleIndex; 22 | } 23 | 24 | @Override 25 | public Collection evaluate(ParseTree t) { 26 | return Trees.findAllRuleNodes(t, ruleIndex); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/xpath/XPathTokenAnywhereElement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree.xpath; 8 | 9 | import org.antlr.v4.runtime.tree.ParseTree; 10 | import org.antlr.v4.runtime.tree.Trees; 11 | 12 | import java.util.Collection; 13 | 14 | public class XPathTokenAnywhereElement extends XPathElement { 15 | protected int tokenType; 16 | public XPathTokenAnywhereElement(String tokenName, int tokenType) { 17 | super(tokenName); 18 | this.tokenType = tokenType; 19 | } 20 | 21 | @Override 22 | public Collection evaluate(ParseTree t) { 23 | return Trees.findAllTokenNodes(t, tokenType); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /util/antlr4-runtime/src/main/java/org/antlr/v4/runtime/tree/xpath/XPathWildcardAnywhereElement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. 3 | * Use of this file is governed by the BSD 3-clause license that 4 | * can be found in the LICENSE.txt file in the project root. 5 | */ 6 | 7 | package org.antlr.v4.runtime.tree.xpath; 8 | 9 | import org.antlr.v4.runtime.tree.ParseTree; 10 | import org.antlr.v4.runtime.tree.Trees; 11 | 12 | import java.util.ArrayList; 13 | import java.util.Collection; 14 | 15 | public class XPathWildcardAnywhereElement extends XPathElement { 16 | public XPathWildcardAnywhereElement() { 17 | super(XPath.WILDCARD); 18 | } 19 | 20 | @Override 21 | public Collection evaluate(ParseTree t) { 22 | if ( invert ) return new ArrayList(); // !* is weird but valid (empty) 23 | return Trees.getDescendants(t); 24 | } 25 | } 26 | --------------------------------------------------------------------------------