Git Product home page Git Product logo

androidideofficial / androidide Goto Github PK

View Code? Open in Web Editor NEW
1.9K 53.0 231.0 943.83 MB

AndroidIDE is an IDE for Android to develop full featured Android apps.

Home Page: https://m.androidide.com

License: GNU General Public License v3.0

Java 88.67% ANTLR 0.27% Kotlin 10.58% HTML 0.27% Makefile 0.01% Lex 0.03% Scheme 0.05% Shell 0.04% AIDL 0.01% C 0.02% C++ 0.06%
android ide gradle java openjdk autocomplete androidide kotlin mobile-development android-ide

androidide's Introduction

AndroidIDE

AndroidIDE

An IDE to develop real, Gradle-based Android applications on Android devices.


Latest release Builds and tests CodeFactor Crowdin License

Explore the docs »    

Report a bug   •   Request a feature   •   Join us on Telegram

We are looking for contributors/maintainers to help keep the project alive and speed up the development. You can help by fixing bugs, implementing & improving features, writing documentation, etc.

Features

  • Gradle support.
  • JDK 11 and JDK 17 available for use.
  • Terminal with necessary packages.
  • Custom environment variables (for Build & Terminal).
  • SDK Manager (Available via terminal).
  • API information for classes and their members (since, removed, deprecated).
  • Log reader (shows your app's logs in real-time)
  • Language servers
    • Java
    • XML
    • Kotlin
  • UI Designer
    • Layout inflater
    • Resolve resource references
    • Auto-complete resource values when user edits attributes using the attribute editor
    • Drag & Drop
    • Visual attribute editor
    • Android Widgets
  • String Translator
  • Asset Studio (Drawable & Icon Maker)
  • Git

Installation

Get it on F-Droid Get it on F-Droid

Please install AndroidIDE from trusted sources only i.e.

  • Download the AndroidIDE APK from the mentioned trusted sources.
  • Follow the instructions here to install the build tools.

Limitations

  • For working with projects in AndroidIDE, your project must use Android Gradle Plugin v7.2.0 or newer. Projects with older AGP must be migrated to newer versions.
  • SDK Manager is already included in Android SDK and is accessible in AndroidIDE via its Terminal. But, you cannot use it to install some tools (like NDK) because those tools are not built for Android.
  • No official NDK support because we haven't built the NDK for Android.

The app is still being developed actively. It's in beta stage and may not be stable. if you have any issues using the app, please let us know.

Contributing

See the contributing guide.

For translations, visit the Crowdin project page.

Thanks to

Thanks to all the developers who have contributed to this project.

This project is supported by:

Contact Us

License

AndroidIDE is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

AndroidIDE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with AndroidIDE.  If not, see <https://www.gnu.org/licenses/>.

Any violations to the license can be reported either by opening an issue or writing a mail to us directly.

androidide's People

Contributors

bandroid avatar bryangig avatar code-factor avatar dead8309 avatar deepkrg17 avatar dependabot[bot] avatar devendra34 avatar eirv avatar fasheep avatar friostd avatar github-actions[bot] avatar hakaisu71881 avatar itsaky avatar itsvks19 avatar jayx003 avatar m-anshuman2166 avatar marvinstelter avatar matheustgp avatar micoder-dev avatar mrikso avatar nicesapien avatar pranavpurwar avatar premjit-developer avatar rafael2616 avatar renovate[bot] avatar rosemoe avatar rystars avatar se-lyan avatar smooth-e avatar teixeira0x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidide's Issues

[BUG] Unable to delete sysroot directory

Describe the bug
AndroidIDE crash report
Manufacturer: samsung
Device: SM-J730GM
App version: 2.0-beta (200)

Stacktrace:
com.itsaky.androidide.utils.BootstrapInstaller$InstallationException: Unable to delete sysroot directory
Caused by: java.util.concurrent.CompletionException: com.itsaky.androidide.utils.BootstrapInstaller$InstallationException: Unable to delete sysroot directory
at com.itsaky.androidide.utils.BootstrapInstaller.lambda$doInstall$0(BootstrapInstaller.java:75)
at com.itsaky.androidide.utils.BootstrapInstaller$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1661)
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1653)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:285)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1152)
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1990)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1938)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

To Reproduce
Steps to reproduce the behavior:

  1. Try to open terminal
    Expected behavior
    A clear and concise description of what you expected to happen.

Details

  • Device: [Samsung j7Pro]
  • OS: [ Android 9 ]
  • AndroidIDE Version [2.0-beta]

App freezes on tapping 'View' button multiple times

I'm going to try to describe the first issue from my other post #33 here.

LG, Android 8.0

I can make the app freeze on purpose with 100% certainty.

  • Open a project
  • Doesn't seem to matter if gradle daemon is running or not, or app is done compiling/building or not
    -Tap red button on bottom right corner to show a menu (1st time)
    -Tap phone's back button or tap outside of menu to close menu (1st time)
    -Tap red button again to show menu (2nd time)
    -Tap phone's back button or tap outside of menu to close menu (2nd time)
    -Tap red button again to show menu (3rd time)
    -Tap phone's back button or tap outside of menu to close menu (3rd time)
    -App freezes, and most of the time, whole phone is now not responsive for a few seconds

I tap phone's running app list button and swipe off AndroidIDE. I repeat the process dozens of times with the exact result.

There's another interesting detail. If I tap on the phone's running app list button in the middle of the process before it freezes (after 1st or 2nd time), and tap AndroidIDE from the list to go back to it, I'm allowed to toggle the red button 2 more times.

So, the pause-then-resuming of the app seems to reset the red button's toggle-count-before-freeze status.

annoying Logsender

im using two module and com.itsaky.androidide.logsender.LogeSender
its compiled in that two module.

i suggested to add a feature that give user options, to use logesender or not.

What went wrong:
Execution failed for task ':app:mergeLibDexDebug'.
A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
There was a failure while executing work items
A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type com.itsaky.androidide.logsender.LogSender$Callback is defined multiple times: /storage/emulated/0/AndroidIDEProjects/app_name/library_one/build/.transforms/a3f5f5cd3e4e000b4145f4d283e66ebf/transformed/classes/classes.dex, /storage/emulated/0/AndroidIDEProjects/app_name/library_two/build/.transforms/187c6fa16d5942500a83d815c6ed2829/transformed/classes/classes.dex

[BUG] Layout Preview showing error codes

Describe the bug
When i try click Layout preview from my activity_main.xml which has Constraint Layout, RecyclerView, Material Fab button it gives me error in the layout preview page.

Screenshots
Screenshot_2022-01-02-11-57-34-837_com itsaky androidide
IMG_20220102_110845

LogSender: IllegalThreadStateException

LogSender crashes when it is started with the following stacktrace:

Caused by: java.lang.IllegalThreadStateException
11-01  22:16:07.059  10611  10611  E  AndroidRuntime: at java.lang.Thread.start(Thread.java:724)
11-01  22:16:07.059  10611  10611  E  AndroidRuntime: at com.itsaky.androidide.logsender.LogSender.startLogging(LogSender.java:58)
11-01  22:16:07.059  10611  10611  E  AndroidRuntime: at <__package__>.MainActivity.onCreate(MainActivity.kt:39)

Issues with file opening and saving

LG, Android 8.0

App freezes if I use the red-eyed menu button 4 or more times. Sometimes even less. If I leave that button alone, I might be lucky enough to make a successful compilation or build.

All I can do is swipe it off the app list and start again. After swiping off a bunch of times, there's a chance some of the files get blanked out. Happened a few times.

Also, when a file gets blanked out, you can't tap on it to open anymore.

Tried to create an empty file and tapped on it to open. It didn't open either.

BUILD FAILED: Premature end of Content-Length delimited message body

I'm using an Android 11 device. When i opened the app it showed "Starting a Gradle Daemon". Then it started downloading libraries and other files, after 10 minutes, it stopped and this error showed:

[FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'Application'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not download fastutil-7.2.0.jar (it.unimi.dsi:fastutil:7.2.0)
> Could not get resource 'https://maven.aliyun.com/repository/public/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar'.
> Premature end of Content-Length delimited message body (expected: 17,309,408; received: 1,738,316)

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 10m 43s
java.lang.RuntimeException: Can't create handler inside thread Thread[Thread-40,5,main] that has not called Looper.prepare()]

[BUG] Use system shell if busybox or sh.sh script is not present.

Describe the bug
The terminal fails to open if $SYSROOT/bin/sh.sh is not available.

To Reproduce

  • Delete or rename $SYSROOT/bin/sh.sh.
  • Open terminal.

Expected behavior
Terminal should use $BUSYBOX sh if $SYSROOT/bin/sh.sh is not available. Or at least it should use /system/bin/sh.

[BUG] DirectoryNotEmpty

Describe the bug
It just shows when im trying open terminal.
Im using latest build

To Reproduce
Steps to reproduce the behavior:

  1. Click on 'TERMINAL' to open Terminal
  2. See error

Expected behavior
Terminal opens without errors?

Details (please complete the following information):
AndroidIDE crash report
Manufacturer: HUAWEI
Device: SNE-LX1
App version: 2.0-beta (200)

Stacktrace:
java.nio.file.DirectoryNotEmptyException: /data/data/com.itsaky.androidide/files/sysroot
at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:242)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1126)
at com.itsaky.androidide.utils.BootstrapInstaller.lambda$doInstall$0(BootstrapInstaller.java:80)
Caused by: java.util.concurrent.CompletionException: java.nio.file.DirectoryNotEmptyException: /data/data/com.itsaky.androidide/files/sysroot
at com.itsaky.androidide.utils.BootstrapInstaller.lambda$doInstall$0(BootstrapInstaller.java:83)
at com.itsaky.androidide.utils.BootstrapInstaller$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1663)
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1655)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:285)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1155)
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1993)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1941)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Inconsistent auto completion

The auto completion is kind of iffy. Sometimes it shows sometimes it doesn't. Looking at the ide messages, I see that it isn't always able to process the classpath and ends up just being able to recognize only keywords and local variables.

A lot of the times, it even shows nothing. With each letter we enter, the idelogs view spits out:

JavaAutoComplete: Completion error java.io.IOException: Stream closed
    at java.lang.ProcessBuilder$NullOutputStream.write(ProcessBuilder.java:433)
    at java.io.OutputStream.write(OutputStream.java:116)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
    at org.eclipse.lsp4j.jsonrpc.json.StreamMessageConsumer.consume(StreamMessageConsumer.java:69)
 Caused by: org.eclipse.lsp4j.jsonrpc.JsonRpcException: java.io.IOException: Stream closed
    at org.eclipse.lsp4j.jsonrpc.json.StreamMessageConsumer.consume(StreamMessageConsumer.java:72)
    at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.request(RemoteEndpoint.java:161)
    at org.eclipse.lsp4j.jsonrpc.services.EndpointProxy.invoke(EndpointProxy.java:91)
    at java.lang.reflect.Proxy.invoke(Proxy.java:913)
    at $Proxy5.completion(Unknown Source)
    at com.itsaky.androidide.language.java.JavaAutoComplete.getAutoCompleteItems(JavaAutoComplete.java:52)
 Caused by: java.util.concurrent.ExecutionException: org.eclipse.lsp4j.jsonrpc.JsonRpcException: java.io.IOException: Stream closed
    at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:359)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1921)
    at com.itsaky.androidide.language.java.JavaAutoComplete.getAutoCompleteItems(JavaAutoComplete.java:60)
    at io.github.rosemoe.editor.widget.EditorAutoCompleteWindow$MatchThread.run(EditorAutoCompleteWindow.java:350)

quick request about logs panel

Could you make a quick modification to the logs panel so that when dragging it up  we could also pin it at a height we prefer?

It would be very helpful to be able to see the messages in real time. I'm thinking of making my keyboard partially transparent so that I could be able to see the logs while typing in the editor at the same time.

Written the last changed file in project with nothing

I have made changes to activity_main.xml and close the project and the app, but then when i cameback to AndroidIDE and re-open the project, i cant access the activity_main.xml.

When i check it using mt manager, activity_main.xml has nothing in it

Screenshot_2021-11-01-13-21-32-529_bin.mt.plus.jpg

LogSender is included more than once

LogSender is included in source paths more than once which results in a dexing error :

Type com.itsaky.androidide.logsender.LogSender$Callback is defined multiple times

library "libz.so.1" not found

After first build it says

========== [15:47:44] TASK_BEGIN: Start Completion Services ==========
CANNOT LINK EXECUTABLE "ANDROIDIDE_HOME/jdk/bin/java": library "libz.so.1" not found
CANNOT LINK EXECUTABLE "ANDROIDIDE_HOME/jdk/bin/java": library "libz.so.1" not found

Information:
Device: Galaxy Tab s3
Android 9
app version: 1.0.2.1-alpha
Jdk: 07.08.2021

Gradle error on startup

Describe the bug
I provided version 7.3.3 and recieved this error on a new project:

-------------------- NOTE --------------------
Gradle Wrapper is not available!
Installing default one. Gradle v7.1.1 will be downloaded if necessary.
----------------------------------------------
========== [10:41:50] TASK_BEGIN: assembleDebug ==========
ERROR: could not disable heap pointer tagging, Operation not supported on transport endpoint
gradlew: eval: line 2: :app:assembleDebug: not found
gradlew: eval: line 4: --init-script: not found
ERROR: could not disable heap pointer tagging, Operation not supported on transport endpoint
/data/data/com.itsaky.androidide/files/init/androidide.init.gradle: line 1: import: not found
/data/data/com.itsaky.androidide/files/init/androidide.init.gradle: line 2: import: not found
/data/data/com.itsaky.androidide/files/init/androidide.init.gradle: line 3: import: not found
/data/data/com.itsaky.androidide/files/init/androidide.init.gradle: line 5: gradle.projectsLoaded: not found
/data/data/com.itsaky.androidide/files/init/androidide.init.gradle: line 7: syntax error: unexpected newline
gradlew: eval: line 8: --info: not found
ERROR: could not disable heap pointer tagging, Operation not supported on transport endpoint
Downloading https://services.gradle.org/distributions/gradle-7.1.1-bin.zip
..........10%...........20%...........30%..........40%...........50%...........60%..........70%...........80%...........90%...........100%

Welcome to Gradle 7.1.1!

Here are the highlights of this release:
- Faster incremental Java compilation
- Easier source set configuration in the Kotlin DSL

For more details see https://docs.gradle.org/7.1.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

* What went wrong:
Project 'ERROR' not found in root project 'appBuild1'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 6m 39s

Then the Gradle output gets stuck in this loop:
SmartSelect_20220103-105144_AndroidIDE.jpg
This attempt ran for 6 minutes, 39 seconds

To Reproduce
Steps to reproduce the behavior:

  1. Using a fresh install of IDE, provide it the build tools needed:
    SmartSelect_20220103-103857_X-plore.jpg
    Screenshot_20220103-103953_AndroidIDE.jpg
  2. Start a new project.

Expected behavior
Build suceeds and you can start building app.

Screenshots
(Provided above)

Details (please complete the following information):

  • Device: Samsung Galaxy S21 5G
  • OS: Android 12
  • AndroidIDE Version 1.0.3-alpha for arm64-v8a

Additional context
N/A

32 Bits support

Please, make the app whith 32 bits (armv7a) devices support

Include more template projects

Some template suggestions :

  • Kotlin project
  • LibGdx Project
  • Project with material design components

Maybe we can include an option to choose the root layout for the default activity_main.xml?

[Gradle Error] Could not open cache for initialization script

Build fails with the message :

Could not open cp_init generic class cache for initialization script '/data/data/com.itsaky.androidide/files/init/androidide.init.gradle' (ANDROIDIDE_HOME/.gradle/caches/7.1.1/scripts/7q40j699owg9p9au4urnjzrbt).
> Failed to initialize cp_init generic class cache for initialization script '/data/data/com.itsaky.androidide/files/init/androidide.init.gradle' (ANDROIDIDE_HOME/.gradle/caches/7.1.1/scripts/7q40j699owg9p9au4urnjzrbt)

[It crashed when I try to open XML files]

AndroidIDE crash report
Manufacturer: samsung
Device: SM-A115F
App version: 2.0-beta (200)

Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'void io.github.rosemoe.editor.widget.CodeEditor.close()' on a null object reference
at com.itsaky.androidide.adapters.EditorPagerAdapter.closeFileAt(EditorPagerAdapter.java:132)
at com.itsaky.androidide.adapters.EditorPagerAdapter.closeAllFiles(EditorPagerAdapter.java:147)
at com.itsaky.androidide.EditorActivity.closeAll(EditorActivity.java:903)
at com.itsaky.androidide.EditorActivity.closeProject(EditorActivity.java:1075)
at com.itsaky.androidide.EditorActivity.lambda$confirmProjectClose$15$com-itsaky-androidide-EditorActivity(EditorActivity.java:1095)
at com.itsaky.androidide.EditorActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

Screenshots
If applicable, add screenshots to help explain your problem.

Details (please complete the following information):

  • Device: [e.g. realme 3 Pro]
  • OS: [e.g. Android 11]
  • AndroidIDE Version [e.g. v1.0.3-alpha]

Additional context
Add any other context about the problem here.

[BUG] Design View Crash App

🅳🅴🆂🅸🅶🅽 🆅🅸🅴🆅 🅱🆄🅶
Screenshot_2022-01-08-12-23-52-892_com itsaky androidide

I create my android project then open any file res/layout/.xml then when opening design view the app crashes giving the error in the crash report below
////////////////////////////////////////////////////////////////////////////////

AndroidIDE crash report
Manufacturer: Xiaomi
Device: RedmiNote6Pro
App version: 2.0-beta (200)

 Stacktrace: 
java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
	at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1090)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
	at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
	at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
	at android.view.View.measure(View.java:23196)
	at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1656)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
	at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:601)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:760)
	at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:99)
	at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:2003)
	at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:831)
	at android.view.View.measure(View.java:23196)
	at androidx.drawerlayout.widget.DrawerLayout.onMeasure(DrawerLayout.java:1156)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
	at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:145)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
	at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
	at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6753)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
	at com.android.internal.policy.DecorView.onMeasure(DecorView.java:720)
	at android.view.View.measure(View.java:23196)
	at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2798)
	at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1646)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1930)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1534)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7421)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1092)
	at android.view.Choreographer.doCallbacks(Choreographer.java:888)
	at android.view.Choreographer.doFrame(Choreographer.java:819)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1078)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:201)
	at android.app.ActivityThread.main(ActivityThread.java:6810)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

Unable to run gradle

Gradle Daemons Stopped
cd "/storage/emulated/0/AndroidIDEProjects/TestApp/app"
========== [14:20:29] TASK_BEGIN: Start Completion Services ==========
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[39]: dirname: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[44]: basename: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[81]: uname: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: sed: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: printf: not found
WARNING: linker: ANDROIDIDE_HOME/openjdk-11.0.1/bin/java: unused DT entry: type 0x1d arg 0x136
CANNOT LINK EXECUTABLE DEPENDENCIES: library "libjli.so" not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[39]: dirname: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[44]: basename: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[81]: uname: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: printf: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: sed: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: sed: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: printf: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: printf: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: sed: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: sed: not found
ANDROIDIDE_HOME/gradle-7.1.1/bin/gradle[180]: printf: not found
WARNING: linker: ANDROIDIDE_HOME/openjdk-11.0.1/bin/java: unused DT entry: type 0x1d arg 0x136
CANNOT LINK EXECUTABLE DEPENDENCIES: library "libjli.so" not found

These are the output logs

armv7a (arm32) support?

Why don't you guys build it supporting arm32 archs? Mine device is arm32, and I've to use Termux (its openjdk-17, gradle packages) and Build-Tools (like aapt2) from https://github.com/Lzhiyong/sdk-tools, and the code editor is Acode. Its very hard to build apps like this. If you had built the IDE for arm32 also, it would be very helpful for me.

Some needed improvements

  1. In the editor, if we want to edit at a location lower than the height of the onscreen keyboard and tap there, the keyboard shows up and covers the place where we are editing. The editor should readjust so the text appears just above the keyboard.

  2. It would be nice if we could select the whole line of text quickly. At the moment, we can only quickly select either one word or the entire file, which is not that convenient. I'm used to edit in another IDE where I can gradually "expand" the selection from a word, group of words, whole line, or everything.

  3. At the moment, to look for and fix errors we have to:

-go through the sea of messages and fish for the errors
-make a mental note where it is in the build outputs so we know which is already done and can go back to it
-look for the name of the file the error is in
-look for the line and place of the error
-chant the line numer repeatedly in head so we don't forget (lol)
-go to the filetree, look for the file and open it
-oh no, what was the number again??
-go back to build outputs to look for the line number
-go back to the file to find the error
-fix error
-rinse and repeat for the rest of the errors

It's very tedious. The sooner we have a tab with a list of only errors where we can tap on each to go straight to the specific error, the better.

  1. There should be a button at a convenient place where we could quickly press to check only what we just changed for typos or syntactical errors. We don't want to assemble, build, or quick run for small changes. (Real time checking seems too slow at the moment, and sometimes working sometimes not)

EditorPagerAdpater crashes when trying to close a file

Describe the bug
When i try use terminal and update the sysroot/ lib after 3--4 attempts it crashes.

Details (please complete the following information):
Manufacturer: Xiaomi
Device: M2102J20SI
App version: 2.0-beta (200)
Additional context

Stacktrace: 
java.lang.NullPointerException: Attempt to invoke virtual method 'void io.github.rosemoe.editor.widget.CodeEditor.close()' on a null object reference
	at com.itsaky.androidide.adapters.EditorPagerAdapter.closeFileAt(EditorPagerAdapter.java:132)
	at com.itsaky.androidide.adapters.EditorPagerAdapter.closeAllFiles(EditorPagerAdapter.java:147)
	at com.itsaky.androidide.EditorActivity.closeAll(EditorActivity.java:903)
	at com.itsaky.androidide.EditorActivity.closeProject(EditorActivity.java:1075)
	at com.itsaky.androidide.EditorActivity.lambda$confirmProjectClose$15$com-itsaky-androidide-EditorActivity(EditorActivity.java:1095)
	at com.itsaky.androidide.EditorActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
	at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:236)
	at android.app.ActivityThread.main(ActivityThread.java:8056)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

When i try to use Room Database library i got these errors

Describe the bug
When i try to use Room Database library i got these errors like lib.so not found / build libs not found etc

To Reproduce
Steps to reproduce the behavior:

  1. Go to Google and search android-room-with-a-view-master.zip which is provided by Google and download it'
  2. Open this room sample in AndroidIDE and build it '
  3. Open Build Output
  4. See error

Details (please complete the following information):

  • Device: Poco X3 Pro
  • OS: Android 11
  • AndroidIDE Version [e.g. v1.0.3-alpha]

Additional context

Build output :

> Task :app:compileDebugJavaWithJavac FAILED
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/libs', not found
Transforming viewbinding-7.0.2.aar (androidx.databinding:viewbinding:7.0.2) with JetifyTransform
Transforming viewbinding-7.0.2.aar (androidx.databinding:viewbinding:7.0.2) with AarToClassTransform
Transforming material-1.3.0.aar (com.google.android.material:material:1.3.0) with JetifyTransform
Transforming material-1.3.0.aar (com.google.android.material:material:1.3.0) with AarToClassTransform
Transforming constraintlayout-2.0.4.aar (androidx.constraintlayout:constraintlayout:2.0.4) with JetifyTransform
Transforming constraintlayout-2.0.4.aar (androidx.constraintlayout:constraintlayout:2.0.4) with AarToClassTransform
Transforming appcompat-1.3.0.aar (androidx.appcompat:appcompat:1.3.0) with JetifyTransform
Transforming appcompat-1.3.0.aar (androidx.appcompat:appcompat:1.3.0) with AarToClassTransform
Transforming viewpager2-1.0.0.aar (androidx.viewpager2:viewpager2:1.0.0) with JetifyTransform
Transforming viewpager2-1.0.0.aar (androidx.viewpager2:viewpager2:1.0.0) with AarToClassTransform
Transforming fragment-1.3.4.aar (androidx.fragment:fragment:1.3.4) with JetifyTransform
Transforming fragment-1.3.4.aar (androidx.fragment:fragment:1.3.4) with AarToClassTransform
Transforming fragment-1.3.4.aar (androidx.fragment:fragment:1.3.4) with JetifyTransform
Transforming fragment-1.3.4.aar (androidx.fragment:fragment:1.3.4) with AarToClassTransform
Transforming activity-1.2.3.aar (androidx.activity:activity:1.2.3) with JetifyTransform
Transforming activity-1.2.3.aar (androidx.activity:activity:1.2.3) with AarToClassTransform
Transforming lifecycle-viewmodel-savedstate-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1) with JetifyTransform
Transforming lifecycle-viewmodel-savedstate-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1) with AarToClassTransform
Transforming dynamicanimation-1.0.0.aar (androidx.dynamicanimation:dynamicanimation:1.0.0) with JetifyTransform
Transforming dynamicanimation-1.0.0.aar (androidx.dynamicanimation:dynamicanimation:1.0.0) with AarToClassTransform
Transforming legacy-support-core-utils-1.0.0.aar (androidx.legacy:legacy-support-core-utils:1.0.0) with JetifyTransform
Transforming legacy-support-core-utils-1.0.0.aar (androidx.legacy:legacy-support-core-utils:1.0.0) with AarToClassTransform
Transforming loader-1.0.0.aar (androidx.loader:loader:1.0.0) with JetifyTransform
Transforming loader-1.0.0.aar (androidx.loader:loader:1.0.0) with AarToClassTransform
Transforming loader-1.0.0.aar (androidx.loader:loader:1.0.0) with JetifyTransform
Transforming loader-1.0.0.aar (androidx.loader:loader:1.0.0) with AarToClassTransform
Transforming lifecycle-viewmodel-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel:2.3.1) with JetifyTransform
Transforming lifecycle-viewmodel-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel:2.3.1) with AarToClassTransform
Transforming lifecycle-viewmodel-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel:2.3.1) with JetifyTransform
Transforming lifecycle-viewmodel-2.3.1.aar (androidx.lifecycle:lifecycle-viewmodel:2.3.1) with AarToClassTransform
Transforming appcompat-resources-1.3.0.aar (androidx.appcompat:appcompat-resources:1.3.0) with JetifyTransform
Transforming appcompat-resources-1.3.0.aar (androidx.appcompat:appcompat-resources:1.3.0) with AarToClassTransform
Transforming drawerlayout-1.0.0.aar (androidx.drawerlayout:drawerlayout:1.0.0) with JetifyTransform
Transforming drawerlayout-1.0.0.aar (androidx.drawerlayout:drawerlayout:1.0.0) with AarToClassTransform
Transforming coordinatorlayout-1.1.0.aar (androidx.coordinatorlayout:coordinatorlayout:1.1.0) with JetifyTransform
Transforming coordinatorlayout-1.1.0.aar (androidx.coordinatorlayout:coordinatorlayout:1.1.0) with AarToClassTransform
Transforming recyclerview-1.1.0.aar (androidx.recyclerview:recyclerview:1.1.0) with JetifyTransform
Transforming recyclerview-1.1.0.aar (androidx.recyclerview:recyclerview:1.1.0) with AarToClassTransform
Transforming recyclerview-1.1.0.aar (androidx.recyclerview:recyclerview:1.1.0) with JetifyTransform
Transforming recyclerview-1.1.0.aar (androidx.recyclerview:recyclerview:1.1.0) with AarToClassTransform
Transforming transition-1.2.0.aar (androidx.transition:transition:1.2.0) with JetifyTransform
Transforming transition-1.2.0.aar (androidx.transition:transition:1.2.0) with AarToClassTransform
Transforming vectordrawable-animated-1.1.0.aar (androidx.vectordrawable:vectordrawable-animated:1.1.0) with JetifyTransform
Transforming vectordrawable-animated-1.1.0.aar (androidx.vectordrawable:vectordrawable-animated:1.1.0) with AarToClassTransform
Transforming vectordrawable-1.1.0.aar (androidx.vectordrawable:vectordrawable:1.1.0) with JetifyTransform
Transforming vectordrawable-1.1.0.aar (androidx.vectordrawable:vectordrawable:1.1.0) with AarToClassTransform
Transforming vectordrawable-1.1.0.aar (androidx.vectordrawable:vectordrawable:1.1.0) with JetifyTransform
Transforming vectordrawable-1.1.0.aar (androidx.vectordrawable:vectordrawable:1.1.0) with AarToClassTransform
Transforming viewpager-1.0.0.aar (androidx.viewpager:viewpager:1.0.0) with JetifyTransform
Transforming viewpager-1.0.0.aar (androidx.viewpager:viewpager:1.0.0) with AarToClassTransform
Transforming customview-1.0.0.aar (androidx.customview:customview:1.0.0) with JetifyTransform
Transforming customview-1.0.0.aar (androidx.customview:customview:1.0.0) with AarToClassTransform
Transforming core-1.5.0.aar (androidx.core:core:1.5.0) with JetifyTransform
Transforming core-1.5.0.aar (androidx.core:core:1.5.0) with AarToClassTransform
Transforming core-1.5.0.aar (androidx.core:core:1.5.0) with JetifyTransform
Transforming core-1.5.0.aar (androidx.core:core:1.5.0) with AarToClassTransform
Transforming cursoradapter-1.0.0.aar (androidx.cursoradapter:cursoradapter:1.0.0) with JetifyTransform
Transforming cursoradapter-1.0.0.aar (androidx.cursoradapter:cursoradapter:1.0.0) with AarToClassTransform
Transforming savedstate-1.1.0.aar (androidx.savedstate:savedstate:1.1.0) with JetifyTransform
Transforming savedstate-1.1.0.aar (androidx.savedstate:savedstate:1.1.0) with AarToClassTransform
Transforming cardview-1.0.0.aar (androidx.cardview:cardview:1.0.0) with JetifyTransform
Transforming cardview-1.0.0.aar (androidx.cardview:cardview:1.0.0) with AarToClassTransform
Transforming lifecycle-runtime-2.3.1.aar (androidx.lifecycle:lifecycle-runtime:2.3.1) with JetifyTransform
Transforming lifecycle-runtime-2.3.1.aar (androidx.lifecycle:lifecycle-runtime:2.3.1) with AarToClassTransform
Transforming room-runtime-2.4.0.aar (androidx.room:room-runtime:2.4.0) with JetifyTransform
Transforming room-runtime-2.4.0.aar (androidx.room:room-runtime:2.4.0) with AarToClassTransform
Transforming room-common-2.4.0.jar (androidx.room:room-common:2.4.0) with JetifyTransform
Transforming room-common-2.4.0.jar (androidx.room:room-common:2.4.0) with IdentityTransform
Transforming sqlite-framework-2.2.0.aar (androidx.sqlite:sqlite-framework:2.2.0) with JetifyTransform
Transforming sqlite-framework-2.2.0.aar (androidx.sqlite:sqlite-framework:2.2.0) with AarToClassTransform
Transforming sqlite-2.2.0.aar (androidx.sqlite:sqlite:2.2.0) with JetifyTransform
Transforming sqlite-2.2.0.aar (androidx.sqlite:sqlite:2.2.0) with AarToClassTransform
Transforming lifecycle-livedata-2.3.1.aar (androidx.lifecycle:lifecycle-livedata:2.3.1) with JetifyTransform
Transforming lifecycle-livedata-2.3.1.aar (androidx.lifecycle:lifecycle-livedata:2.3.1) with AarToClassTransform
Transforming lifecycle-livedata-2.3.1.aar (androidx.lifecycle:lifecycle-livedata:2.3.1) with JetifyTransform
Transforming lifecycle-livedata-2.3.1.aar (androidx.lifecycle:lifecycle-livedata:2.3.1) with AarToClassTransform
Transforming core-runtime-2.1.0.aar (androidx.arch.core:core-runtime:2.1.0) with JetifyTransform
Transforming core-runtime-2.1.0.aar (androidx.arch.core:core-runtime:2.1.0) with AarToClassTransform
Transforming versionedparcelable-1.1.1.aar (androidx.versionedparcelable:versionedparcelable:1.1.1) with JetifyTransform
Transforming versionedparcelable-1.1.1.aar (androidx.versionedparcelable:versionedparcelable:1.1.1) with AarToClassTransform
Transforming lifecycle-livedata-core-2.3.1.aar (androidx.lifecycle:lifecycle-livedata-core:2.3.1) with JetifyTransform
Transforming lifecycle-livedata-core-2.3.1.aar (androidx.lifecycle:lifecycle-livedata-core:2.3.1) with AarToClassTransform
Transforming interpolator-1.0.0.aar (androidx.interpolator:interpolator:1.0.0) with JetifyTransform
Transforming interpolator-1.0.0.aar (androidx.interpolator:interpolator:1.0.0) with AarToClassTransform
Transforming documentfile-1.0.0.aar (androidx.documentfile:documentfile:1.0.0) with JetifyTransform
Transforming documentfile-1.0.0.aar (androidx.documentfile:documentfile:1.0.0) with AarToClassTransform
Transforming localbroadcastmanager-1.0.0.aar (androidx.localbroadcastmanager:localbroadcastmanager:1.0.0) with JetifyTransform
Transforming localbroadcastmanager-1.0.0.aar (androidx.localbroadcastmanager:localbroadcastmanager:1.0.0) with AarToClassTransform
Transforming print-1.0.0.aar (androidx.print:print:1.0.0) with JetifyTransform
Transforming print-1.0.0.aar (androidx.print:print:1.0.0) with AarToClassTransform
Transforming annotation-experimental-1.1.0.aar (androidx.annotation:annotation-experimental:1.1.0) with JetifyTransform
Transforming annotation-experimental-1.1.0.aar (androidx.annotation:annotation-experimental:1.1.0) with AarToClassTransform
Transforming core-common-2.1.0.jar (androidx.arch.core:core-common:2.1.0) with JetifyTransform
Transforming collection-1.1.0.jar (androidx.collection:collection:1.1.0) with JetifyTransform
Transforming core-common-2.1.0.jar (androidx.arch.core:core-common:2.1.0) with IdentityTransform
Transforming collection-1.1.0.jar (androidx.collection:collection:1.1.0) with IdentityTransform
Transforming constraintlayout-solver-2.0.4.jar (androidx.constraintlayout:constraintlayout-solver:2.0.4) with JetifyTransform
Transforming constraintlayout-solver-2.0.4.jar (androidx.constraintlayout:constraintlayout-solver:2.0.4) with IdentityTransform
Transforming lifecycle-common-2.3.1.jar (androidx.lifecycle:lifecycle-common:2.3.1) with JetifyTransform
Transforming annotation-1.2.0.jar (androidx.annotation:annotation:1.2.0) with JetifyTransform
Transforming annotation-1.2.0.jar (androidx.annotation:annotation:1.2.0) with IdentityTransform
Transforming lifecycle-common-2.3.1.jar (androidx.lifecycle:lifecycle-common:2.3.1) with IdentityTransform
Transforming room-compiler-2.4.0.jar (androidx.room:room-compiler:2.4.0) with JetifyTransform
Transforming room-migration-2.4.0.jar (androidx.room:room-migration:2.4.0) with JetifyTransform
Transforming room-common-2.4.0.jar (androidx.room:room-common:2.4.0) with JetifyTransform
Transforming room-compiler-processing-2.4.0.jar (androidx.room:room-compiler-processing:2.4.0) with JetifyTransform
Transforming kotlinx-metadata-jvm-0.3.0.jar (org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0) with JetifyTransform
Transforming symbol-processing-api-1.6.0-1.0.1.jar (com.google.devtools.ksp:symbol-processing-api:1.6.0-1.0.1) with JetifyTransform
Transforming kotlinpoet-1.8.0.jar (com.squareup:kotlinpoet:1.8.0) with JetifyTransform
Transforming kotlin-stdlib-jdk8-1.6.0.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.0) with JetifyTransform
Transforming kotlin-stdlib-jdk7-1.6.0.jar (org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.0) with JetifyTransform
Transforming kotlin-reflect-1.4.31.jar (org.jetbrains.kotlin:kotlin-reflect:1.4.31) with JetifyTransform
Transforming kotlin-stdlib-1.6.0.jar (org.jetbrains.kotlin:kotlin-stdlib:1.6.0) with JetifyTransform
Transforming auto-common-0.11.jar (com.google.auto:auto-common:0.11) with JetifyTransform
Transforming auto-value-annotations-1.6.3.jar (com.google.auto.value:auto-value-annotations:1.6.3) with JetifyTransform
Transforming javapoet-1.13.0.jar (com.squareup:javapoet:1.13.0) with JetifyTransform
Transforming sqlite-jdbc-3.36.0.jar (org.xerial:sqlite-jdbc:3.36.0) with JetifyTransform
Transforming commons-codec-1.10.jar (commons-codec:commons-codec:1.10) with JetifyTransform
Transforming annotations-12.0.jar (com.intellij:annotations:12.0) with JetifyTransform
Transforming annotation-1.1.0.jar (androidx.annotation:annotation:1.1.0) with JetifyTransform
Transforming gson-2.8.0.jar (com.google.code.gson:gson:2.8.0) with JetifyTransform
Transforming guava-29.0-jre.jar (com.google.guava:guava:29.0-jre) with JetifyTransform
Transforming annotations-13.0.jar (org.jetbrains:annotations:13.0) with JetifyTransform
Transforming kotlin-stdlib-common-1.6.0.jar (org.jetbrains.kotlin:kotlin-stdlib-common:1.6.0) with JetifyTransform
Transforming failureaccess-1.0.1.jar (com.google.guava:failureaccess:1.0.1) with JetifyTransform
Transforming listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar (com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava) with JetifyTransform
Transforming jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2) with JetifyTransform
Transforming checker-qual-2.11.1.jar (org.checkerframework:checker-qual:2.11.1) with JetifyTransform
Transforming error_prone_annotations-2.3.4.jar (com.google.errorprone:error_prone_annotations:2.3.4) with JetifyTransform
Transforming j2objc-annotations-1.3.jar (com.google.j2objc:j2objc-annotations:1.3) with JetifyTransform
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/libs', not found
Caching disabled for task ':app:compileDebugJavaWithJavac' because:
Build cache is disabled
Task ':app:compileDebugJavaWithJavac' is not up-to-date because:
Task has failed previously.
The input changes require a full rebuild for incremental task ':app:compileDebugJavaWithJavac'.
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/libs', not found
Full recompilation is required because no incremental change information is available. This is usually caused by clean builds or changing compiler arguments.
Compiling with toolchain 'ANDROIDIDE_HOME/jdk'.
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/src/debug/java', not found
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/build/generated/aidl_source_output_dir/debug/out', not found
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/build/generated/renderscript_source_output_dir/debug/out', not found
Compiling with JDK Java compiler API.
Failed to load native library:sqlite-3.36.0-004928ad-ea73-4f13-ad93-0b00ab7d4380-libsqlitejdbc.so. osinfo: Linux/aarch64
java.lang.UnsatisfiedLinkError: /data/data/com.itsaky.androidide/files/sysroot/tmp/sqlite-3.36.0-004928ad-ea73-4f13-ad93-0b00ab7d4380-libsqlitejdbc.so: dlopen failed: library "libc.so.6" not found: needed by /data/data/com.itsaky.androidide/files/sysroot/tmp/sqlite-3.36.0-004928ad-ea73-4f13-ad93-0b00ab7d4380-libsqlitejdbc.so in namespace (default)
:app:compileDebugJavaWithJavac (Thread[Execution worker for ':' Thread 3,5,main]) completed. Took 1.626 secs.
:app:initializeIDEProject (Thread[Execution worker for ':' Thread 3,5,main]) started.

> Task :app:initializeIDEProject
Caching disabled for task ':app:initializeIDEProject' because:
Build cache is disabled
Task ':app:initializeIDEProject' is not up-to-date because:
Task.upToDateWhen is false.
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/libs', not found
file or directory '/storage/emulated/0/AndroidIDEProjects/Roomdb2/app/libs', not found
:app:initializeIDEProject (Thread[Execution worker for ':' Thread 3,5,main]) completed. Took 0.411 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.ExceptionInInitializerError

* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.RuntimeException: java.lang.ExceptionInInitializerError
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(Unknown Source)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(Unknown Source)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(Unknown Source)
at org.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:89)
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:54)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:97)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:51)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:37)
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:46)
at org.gradle.api.internal.tasks.compile.ModuleApplicationNameWritingCompiler.execute(ModuleApplicationNameWritingCompiler.java:36)
at org.gradle.jvm.toolchain.internal.DefaultToolchainJavaCompiler.execute(DefaultToolchainJavaCompiler.java:57)
at org.gradle.api.tasks.compile.JavaCompile.lambda$createToolchainCompiler$1(JavaCompile.java:231)
at org.gradle.api.internal.tasks.compile.CleaningJavaCompiler.execute(CleaningJavaCompiler.java:53)
at org.gradle.api.internal.tasks.compile.incremental.IncrementalCompilerFactory.lambda$createRebuildAllCompiler$0(IncrementalCompilerFactory.java:52)
at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:67)
at org.gradle.api.internal.tasks.compile.incremental.SelectiveCompiler.execute(SelectiveCompiler.java:41)
at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:65)
at org.gradle.api.internal.tasks.compile.incremental.IncrementalResultStoringCompiler.execute(IncrementalResultStoringCompiler.java:51)
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:59)
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler$2.call(CompileJavaBuildOperationReportingCompiler.java:51)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.api.internal.tasks.compile.CompileJavaBuildOperationReportingCompiler.execute(CompileJavaBuildOperationReportingCompiler.java:51)
at org.gradle.api.tasks.compile.JavaCompile.performCompilation(JavaCompile.java:278)
at org.gradle.api.tasks.compile.JavaCompile.performIncrementalCompilation(JavaCompile.java:164)
at org.gradle.api.tasks.compile.JavaCompile.compile(JavaCompile.java:145)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.IncrementalInputsTaskAction.doExecute(IncrementalInputsTaskAction.java:32)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:506)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:491)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:474)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:106)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:271)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:249)
at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:83)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:40)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:85)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:42)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:51)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:72)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:46)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.ExceptionInInitializerError
at androidx.room.processor.DatabaseProcessor.doProcess(DatabaseProcessor.kt:81)
at androidx.room.processor.DatabaseProcessor.process(DatabaseProcessor.kt:60)
at androidx.room.DatabaseProcessingStep$process$databases$1$1.invoke(DatabaseProcessingStep.kt:74)
at androidx.room.DatabaseProcessingStep$process$databases$1$1.invoke(DatabaseProcessingStep.kt:70)
at androidx.room.processor.Context.collectLogs(Context.kt:149)
at androidx.room.DatabaseProcessingStep.process(DatabaseProcessingStep.kt:70)
at androidx.room.DatabaseProcessingStep.process(DatabaseProcessingStep.kt:41)
at androidx.room.compiler.processing.CommonProcessorDelegate.processRound(XBasicAnnotationProcessor.kt:114)
at androidx.room.compiler.processing.javac.JavacBasicAnnotationProcessor.process(JavacBasicAnnotationProcessor.kt:63)
at org.gradle.api.internal.tasks.compile.processing.DelegatingProcessor.process(DelegatingProcessor.java:62)
at org.gradle.api.internal.tasks.compile.processing.DynamicProcessor.process(DynamicProcessor.java:52)
at org.gradle.api.internal.tasks.compile.processing.DelegatingProcessor.process(DelegatingProcessor.java:62)
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.access$401(TimeTrackingProcessor.java:37)
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor$5.create(TimeTrackingProcessor.java:99)
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor$5.create(TimeTrackingProcessor.java:96)
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.track(TimeTrackingProcessor.java:117)
at org.gradle.api.internal.tasks.compile.processing.TimeTrackingProcessor.process(TimeTrackingProcessor.java:96)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(Unknown Source)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(Unknown Source)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(Unknown Source)
at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(Unknown Source)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(Unknown Source)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(Unknown Source)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(Unknown Source)
... 162 more
Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=aarch64, paths=[/org/sqlite/native/Linux/aarch64:/data/data/com.itsaky.androidide/files/sysroot/lib:/usr/java/packages/lib:/lib:/usr/lib]
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:389)
at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:68)
at androidx.room.verifier.DatabaseVerifier.<clinit>(DatabaseVerifier.kt:70)
... 186 more

[BUG] Sysroot directory doesn't exist error in latest alpha

1st Error in gradle build

Cannot create service of type BuildTreeActionExecutor using method LauncherServices$ToolingBuildTreeScopeServices.createActionExecutor() as there is a problem with parameter #1 of type List.
Could not create service of type BuildLifecycleAwareVirtualFileSystem using GradleUserHomeServices.createVirtualFileSystem().
java.io.IOException: java.io.tmpdir is set to a directory that doesn't exist: ROOT/sysroot/tmp

2nd Terminal bootstrap installation error
Screenshot_2022-01-09-22-34-36-758_com itsaky androidide

[BUG] ConcurrentModificationException while expanding file tree nodes

java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.next(ArrayList.java:860)
	at com.unnamed.b.atv.view.AndroidTreeView.expandNode(AndroidTreeView.java:231)
	at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:132)
	at com.unnamed.b.atv.view.AndroidTreeView.getView(AndroidTreeView.java:137)
	at com.itsaky.androidide.fragments.FileTreeFragment.lambda$listProjectFiles$2$com-itsaky-androidide-fragments-FileTreeFragment(FileTreeFragment.java:208)
	at com.itsaky.androidide.fragments.FileTreeFragment$$ExternalSyntheticLambda0.complete(Unknown Source:4)
	at com.itsaky.androidide.tasks.TaskExecutor.lambda$executeAsync$0(TaskExecutor.java:52)
	at com.itsaky.androidide.tasks.TaskExecutor$$ExternalSyntheticLambda0.run(Unknown Source:4)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:236)
	at android.app.ActivityThread.main(ActivityThread.java:8061)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

[Question] How to use Android NDK?

Your app description says it doesn't support the official ndk packages. Is there any other way to use ndk now before you build the packages? Are there unofficial packages out there that might be used with your app?

Some bugs in code completion

  1. There is an issue with the case sensitivity of first letter of class names. For example, when typing "toa", we expect the "Toast" class to show up on the list, but it doesn't. We need to type "Toa", then it shows up. Normal variable names seem to show up as expected.

  2. After typing "Toastt", for example, then, a backspace to remove the extra "t", class "Toast" doesn't show as expected. The app needs to also update the list after every backspace.

  3. A class name of a class in its own file is being included in a code completion search, but a class defined in the same file as the main class is not.

There are times when the completion service crashes and no list would show up when we type, but that's a different story. These issues listed here are for when the completion service is up and running.

Can we have a button/option to change the Files position to Navigation Drawer?

Can we have a button/option to change the Files position to Navigation Drawer?
Because for a developer it is important to navigate his/her app directories or files easily and comfortably but in the AndroidIDE app directories/files navigation option on a FAB button which takes 2clicks to open but on the other hand if this is implemented in Navigation Drawer then with only a single swipe we can open the directories/files and it takes less time as compared to FAB.
So, if you implement this feature suggestion to AndroidIDE than it will be very much beneficial to navigate files/directories.
Thank You.

Allow usage of custom Gradle distribution

Where does it install a local version of gradle? In caches? Could you modify the installation script so it would take an official gradle package (gradle-x.x.x-bin.zip or gradle-x.x.x-all.zip) and install it as a default local version?

Being able to use gradle wrapper is great, but can we also make the app fall back to a default pre-installed version whenever the gradle wrapper distribution url points to an invalid or not accessible location?

Every time I create a new project, I have to change the distributionUrl in gradle-wrapper.properties to point to my locally stored gradle-x.x.x-bin.zip, which isn't too bad, but is there an easier, automatic way?

Originally posted by @dhaigit in https://github.com/itsaky/AndroidIDE/issues/28#issuecomment-1009136401

The app crashed trying to close a XML file.

AndroidIDE crash report

Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'io.github.rosemoe.editor.text.ContentLine io.github.rosemoe.editor.text.Content.getLine(int)' on a null object reference
at io.github.rosemoe.editor.widget.LineBreakLayout.getCharLayoutOffset(LineBreakLayout.java:136)
at io.github.rosemoe.editor.widget.CursorBlink.isSelectionVisible(CursorBlink.java:54)
at io.github.rosemoe.editor.widget.CursorBlink.run(CursorBlink.java:64)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)

Device Details

  • Device: SM-A115F
  • OS: Android 11
  • AndroidIDE Version 2.0-beta (200)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.