AndroidIDE - an IDE for Android to develop full featured Android apps on Android smartphones.

Last update: May 22, 2022

Minimum SDK CI Build Status GPL v3 License Join us on Telegram


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).
  • 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 (*)

Items marked with (*) are partially implemented. XML language server supports only code completion at the moment. Git is currently available only in the terminal i.e. no GUI interface for git.

Limitations

  • Gradle Wrapper is supported. But, it requires that the project's application module is named 'app'.
  • 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.

Thanks to

And all the developers who have contributed to this project.

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 .

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

GitHub

https://github.com/itsaky/AndroidIDE
Comments
  • 1. 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)
    
    Reviewed by dhaigit at 2022-01-11 15:49
  • 2. 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.

    Reviewed by dhaigit at 2022-01-02 17:35
  • 3. 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.

    Reviewed by ghost at 2021-11-16 20:46
  • 4. 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.

    Reviewed by dhaigit at 2022-01-04 19:51
  • 5. 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.

    Reviewed by dhaigit at 2021-12-31 23:38
  • 6. 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

    Reviewed by uomar8 at 2021-08-18 12:52
  • 7. 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

    Reviewed by PranavPurwar at 2021-07-30 09:18
  • 8. [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

    Reviewed by Premjit-Chowdhury at 2022-01-02 06:34
  • 9. 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
    
    Reviewed by Premjit-Chowdhury at 2021-12-31 15:26
  • 10. [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]
    Reviewed by ghost at 2022-01-13 02:51
  • 11. 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)
    Reviewed by dhaigit at 2022-01-03 17:57
  • 12. When we search in project then select any result

    AndroidIDE crash report Manufacturer: Xiaomi Device: RedmiK20Pro App version: 2.0.2-beta (202)

    Stacktrace: java.lang.ArrayIndexOutOfBoundsException: length=128; index=-1 at io.github.rosemoe.sora.graphics.GraphicTextRow.measureText(GraphicTextRow.java:255) at io.github.rosemoe.sora.widget.layout.LineBreakLayout.getCharLayoutOffset(LineBreakLayout.java:168) at io.github.rosemoe.sora.widget.CursorBlink.run(CursorBlink.java:81) at android.os.Handler.handleCallback(Handler.java:914) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7560) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

    Reviewed by ani1nonly at 2022-05-19 08:08
  • 13. aapt2 bug In .aab production process

    PNG Drawables couldn't be found by the aapt2 when making a .aab package release. Even with the newly created project with empty activity, the default png icons could not be process by the aapt2

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:mergeReleaseResources'.
    > Multiple task action failures occurred:
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > Android resource compilation failed
            ERROR:AAPT: com.macas.nmsc.sict.app-main-36:/drawable/menu_dot.png: error: file not found.
            
                
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > Android resource compilation failed
            ERROR:AAPT: com.macas.nmsc.sict.app-main-36:/mipmap-mdpi/ic_launcher.png: error: file not found.
            
                
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > Android resource compilation failed
            ERROR:AAPT: com.macas.nmsc.sict.app-main-36:/drawable/menu_bar.png: error: file not found.
            
                
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > Android resource compilation failed
            ERROR:AAPT: com.macas.nmsc.sict.app-main-36:/mipmap-mdpi/ic_launcher_round.png: error: file not found.
            
                
       > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable
          > Android resource compilation failed
            ERROR:AAPT: com.macas.nmsc.sict.app-main-36:/mipmap-hdpi/ic_launcher.png: error: file not found.
            
                
    
    * 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
    
    • Device: POCO X3 NFC
    • OS: Android 11
    • AndroidIDE Version: Commit with tooling api
    Reviewed by uzariustics123 at 2022-05-16 10:22
  • 14. Installation error android ide

    AndroidIDE crash report
    Manufacturer: HUAWEI
    Device: MRD-LX1
    App version: 2.0.1-beta (201)
    
     Stacktrace: 
    java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    	at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:6)
    	at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:14)
    	at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:1)
    	at androidx.fragment.app.DialogFragment.dismissInternal(DialogFragment.java:20)
    	at androidx.fragment.app.DialogFragment.dismiss(DialogFragment.java:1)
    	at com.google.android.material.bottomsheet.BottomSheetDialogFragment.dismiss(BottomSheetDialogFragment.java:2)
    	at com.itsaky.androidide.fragments.sheets.ProgressSheet.dismiss(ProgressSheet.java:1)
    	at com.itsaky.androidide.DownloadActivity$$ExternalSyntheticLambda6.run(R8$$SyntheticClass:12)
    	at android.os.Handler.handleCallback(Handler.java:907)
    	at android.os.Handler.dispatchMessage(Handler.java:105)
    	at android.os.Looper.loop(Looper.java:216)
    	at android.app.ActivityThread.main(ActivityThread.java:7625)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
    

    This is the error I got on installing the plugins

    Reviewed by Holak01 at 2022-05-01 03:28
  • 15. [FEATURE]: Standalone drawable preview

    The IDE should have the ability to preview the drawable resources.

    • [ ] For PNG and 9-patch images, simply read and show the image.
    • [ ] For XML drawables (shape, layer-list, etc), they can be inflated using the drawable inflater API and shown to the user.

    Currently, there is no option to preview only the drawable files. To be able to view the drawable, the user has to use in a layout file and then preview the whole layout.

    Reviewed by itsaky at 2022-04-25 10:20
  • 16. Layout Previewer caused Autocomplition issue

    After clicking on the layout previewer of a layout which have unsupported views, the autocomplition don't work.

    To Reproduce Steps to reproduce the behavior:

    1. Create an XML layout file with unsupported widgets (views) (androidx or material)
    2. Open the layout previewer
    3. Get back to the editor
    4. Check if the autocomplition works or not

    Screenshots

    Screenshot_20220423-075956_AndroidIDE.jpg

    Screenshot_20220423-080031_AndroidIDE.jpg

    Screenshot_20220423-080057_AndroidIDE.jpg

    Reviewed by codejoker01 at 2022-04-23 05:11
A podcast proxy that sits between itunes search api and android apps allowing normalization of rss feeds to standard Json format that can be consumed by apps.

Podcasts Rss Feeds Search Proxy A podcast proxy written using kotlin dsl that sits between itunes search api, podcasts rss feeds and android apps allo

Jan 15, 2022
In this Repo i create public apis to serve apps, like muslim apps using Spring, kotlin, and microservices

spring-freelance-apis-kotlin In this Repo i create public apis to serve apps, like muslim apps using Spring, kotlin, and microservices This repo for l

Feb 13, 2022
Reach plc. Apps Team Exercise (Junior)Reach plc. Apps Team Exercise (Junior)

Reach plc. Apps Team Exercise (Junior) Description One of our magazines is looking for new sources of revenues and starts a few partnerships with beau

Nov 9, 2021
Kotlin TodoMVC – full-stack Kotlin application demo

Kotlin full stack TodoMVC This project is an example implementation of the TodoMVC app written in Kotlin. More specifically, it's the Kotlin port of t

Oct 1, 2021
A repository full of Forge 1.8.9 Kotlin utilities

kotlin-forge-api kotlin-forge-api is a repository full of different APIs to be used by mods for Forge 1.8.9 to make modding easier! Warning! To use an

Aug 7, 2021
Full stack examples of how to use Hotwire JS in Kotlin services

hotwire-kt A collection of Kotlin examples using the Hotwire JS framework to build interactive web apps with a Kotlin Armeria server backend. Using Ho

Apr 20, 2022
🧶 Full-fledged Kotlin client for MikaBot/cluster-operator as a separate package

?? Eri Full-fledged Kotlin client for MikaBot/cluster-operator as a separate package Usage Connecting to operator fun main(args: Array<String>) {

Nov 17, 2021
Lucilla - Fast, efficient, in-memory Full Text Search for Kotlin

Lucilla Lucilla is an in-memory Full Text Search library for Kotlin. It allows t

May 4, 2022
📌This repo contains the kotlin implementation of TensorflowLite Example Android Apps🚀
📌This repo contains the kotlin implementation of TensorflowLite Example Android Apps🚀

TensorflowLite Examples Kotlin This repo contains the kotlin implementation of TensorflowLite Example Apps here, which are mostly implemented in java

Apr 18, 2022
Hands-on experiments to demonstrate the exploitability of insecure TLS configurations in Android apps

Containerized Demo for Insecure TLS Certificate Checking in Android Overview Thi

May 12, 2022
Sushi Design System - UI Kit for Android apps
Sushi Design System - UI Kit for Android apps

Sushi Design System ⚡️ Android UI Kit ⚡️ Application is available here: Latest release: Usage The master branch is being used for release and dev is t

Mar 28, 2022
This is a work-in-progress (🔧️) ultraviolet index viewer app for demonstrating Instant Apps + Kotlin + Dagger + MVP
This is a work-in-progress (🔧️) ultraviolet index viewer app for demonstrating Instant Apps + Kotlin + Dagger + MVP

UV Index A simple ultraviolet index viewer app for demonstrating: Instant Apps + Kotlin + Dagger + MVP Built With Weatherbit as weather API Android In

Feb 13, 2022
Playground UI Compose in Desktop Apps
Playground UI Compose in Desktop Apps

caravan-kotlin-desktop-compose Project Learning Jetpack Compose on Desktop Aplication Request Data Retrofit Version Release This Is Latest Release $ve

Apr 27, 2022
Almost all modern mobile consumer apps are constructed from the same 4 components

?? Why? Almost all modern mobile consumer apps are constructed from the same 4 components. A component to communicate to the backend server A way to o

Nov 10, 2021
Template to accelerate the creation of new apps using Spring Boot 3, MongoDB & GraphQL.

Template to accelerate the creation of new apps using Spring Boot 3, MongoDB & GraphQL.

Feb 13, 2022
Ksp-di-library - Small library for DI in KMM apps

DI-KSP Small library for DI in KMM apps. Uses KSP for processing DI annotations:

Feb 6, 2022
Aggregated Android news, articles, podcasts and conferences about Android Development
Aggregated Android news, articles, podcasts and conferences about Android Development

DroidFeed Curated news feed for Android Developers! Stay up to date with the latest Android Development news. Built for the Android developer communit

Apr 19, 2022
May 15, 2022
🎓 Learning Kotlin Coroutines for Android by example. 🚀 Sample implementations for real-world Android use cases. 🛠 Unit tests included!
🎓 Learning Kotlin Coroutines for Android by example. 🚀 Sample implementations for real-world Android use cases. 🛠 Unit tests included!

Kotlin Coroutines - Use Cases on Android ?? Learning Kotlin Coroutines for Android by example. ?? Sample implementations for real-world Android use ca

May 19, 2022