Open-source modular Android App IDE for Android

Related tags

App blokkok
Overview

Blokkok

Hits-of-Code GitHub commit activity Discord Website GitHub issues


Blokkok is an open-source modular Android App IDE for Android. Every components of the IDE are separated from each other by modules, every modules work together to create an IDE interface for the user to use. Since the plain blokkok app is well, just plain, you can create anything you like with it by modules.

Getting started

These steps will show you on how to build blokkok on your own

Cloning

Cloning this repository isn't a single step process, you would need to install git-lfs since we've used it to version large files such as android.jar, ecj.jar, etc.

  • First, as I've already mentioned above, you need to install the git-lfs git extension. You can see it's page here.

  • Second, clone this repository as how you do it normally

    $ git clone https://github.com/Blokkok/blokkok
  • Third, make sure to clone it's submodules

    $ git submodule update --init
  • Lastly, don't forget to pull the files from the LFS storage, sum of all of the files inside the LFS storage are approximately 45MB.

    $ git lfs pull

Building

Building this app is fairly simple, if you have android studio, you can open this project in it and click run. If you don't, you will need to have java installed in your machine, then run ./gradlew assembleDebug or .\gradlew assembleDebug (if on windows) in the project directory. After some time, the APK will be available in the app/build/outputs/apk/debug directory, have fun!

Communication APIs

If you're looking on what communication APIs this app provides, you can checkout the documentation COMMUNICATION_APIS.md

Reporting bugs

Only report bugs related to the plain app in this repository, other Blokkok builtin IDE functionalities should be posted on the blokkok-modules issues page since that's where the functionalities live in.

Contributing

You can read the CONTRIBUTING.md file for details on this project's code of conduct, and the process for submitting pull requests to this project, good luck!

Versioning

This project uses semver for versioning, you can head on to their page to check what's up

License

This project is licensed under the GNU GPLv3 LICENSE, check the LICENSE file for details

Contact

Acknowledgements

  • Modular communication API was inspired from the Linux kernel
  • Blokkok is a rewrite of the dead OpenBlocks
  • How OpenBlocks was born from knowing that Sketchware users like to modify Sketchware to make their own features, so then it's better if the app itself is modular so people doesn't need to know a lot about reverse engineering to modify it
  • Thank you TheClashFruit for leading the team and making a website for blokkok
  • Thank you Iyxan23 for programming the app and it's module library
  • Thank you Sketchub for being a partner with us since the beginning
  • Thank you for the old openblocks community being supportive about this project
  • Thank you for the Sketchware Pro server for providing us with knowledge in the android build system
  • Thank you to tyron for making his ApkBuilder open-source
  • Thank you others who have contributed in this project in the past
  • And finally, Thank YOU for being interested in blokkok!
You might also like...
Open source Crypto Currency Tracker Android App made fully in Kotlin
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

A sample Android app which showcases advanced usage of Dagger among other open source libraries.
A sample Android app which showcases advanced usage of Dagger among other open source libraries.

U+2020 A sample Android app which showcases advanced usage of Dagger among other open source libraries. Watch the corresponding talk or view the slide

An open-source reimplementation of the Discord Android app

OpenCord An open source reimplementation of the Discord Android app. Why does this exist? Current discord app sucks as it looks ugly and doesn't suppo

Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.
Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

DAVx⁵ is an open-source CalDAV/CardDAV suite and sync app for Android.

DAVx⁵ Please see the DAVx⁵ Web site for comprehensive information about DAVx⁵. DAVx⁵ is licensed under the GPLv3 License. News and updates: @davx5app

An Open-Source Android app for creating training plans and tracking progress
An Open-Source Android app for creating training plans and tracking progress

GymRoutines noahjutz.codeberg.page/gymroutines An Open-Source Android app for creating training plans and tracking progress. Screenshots Contributing

Authenticator Pro is a free open-source two factor authentication app for Android
Authenticator Pro is a free open-source two factor authentication app for Android

Authenticator Pro Authenticator Pro is a free open-source two factor authentication app for Android. It features encrypted backups, icons, categories

Aegis Authenticator is a free, secure and open source 2FA app for Android
Aegis Authenticator is a free, secure and open source 2FA app for Android

Aegis Authenticator Aegis Authenticator is a free, secure and open source 2FA app for Android. It aims to provide a secure authenticator for your onli

AudioNotes 📙 An open source simple audio note taking app built to demonstrate android development best practices.
AudioNotes 📙 An open source simple audio note taking app built to demonstrate android development best practices.

AudioNotes 📙 A simple open source audio note-taking 📝 Android application built to describe the use of Modern Android development tools. 🏗 . Made w

Comments
  • Android Studio build error

    Android Studio build error

    opened project in android studio to build it and got this error:

    `Could not determine the dependencies of task ':app:mergeDebugAssets'.

    Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'. Could not resolve project :module-system. Required by: project :app > No matching configuration of project :module-system was found. The consumer was configured to find a runtime of a component, preferably optimized for Android, as well as attribute 'com.android.build.api.attributes.BuildTypeAttr' with value 'debug', attribute 'org.jetbrains.kotlin.platform.type' with value 'androidJvm' but: - None of the consumable configurations have attributes.

    • 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.

    `

    question 
    opened by bobjones12131 4
  • Main Issue

    Main Issue

    I forgot to post this issue on github, but this is the current main problem that stops me from continuing blokkok. I prefer to just stop early rather than doing work that'll become worthless in the future since this is a quite of a big project of me and TheClashFruit. If anybody could propose a great working solution that follows with the current module system, I'll happily consider continuing this.

    Main problem: In android 10< you can't run binaries that are inside the app's private storage or simply "external binaries" (binaries that are downloaded or binaries that doesn't come with the app itself), this restricts blokkok modules from shipping their own binaries.

    Current Ideas we have sorted by favor-ability:

    • By using a wasm to run "native programs" Pro: No need any changes to the current module system, it will fit to a module without any internal changes

      Cons:

      • There isn't any wasm-compiled aapt2 or zipalign, I will need to port them myself, and I have no idea how to do it
      • Is slower than native
    • Use hidden android apps (apps that doesn't show in launchers) instead of plain JARs as blokkok modules Modules can then access include binaries inside them and android will allow them to use them. Also, communication will be done using broadcasts.

      Credit: Hemanth & Jbk0

      Pro: Can't figure out any pros :(

      Cons:

      • Much more resource heavy
      • Will need a complete overhaul of the module system
      • More hoops for the user to delete a module (finding the hidden app in settings and uninstalling it)
    • Blokkok will ship its own binaries (what we're currently doing) Binaries like aapt2 and zipalign will be shipped in blokkok by default

      Pro: Very straightforward and simple

      Con: Breaks the modular principle of blokkok, modules couldn't add or update the binaries and users will have to update the app to update the binaries (will be better if binaries were packaged inside a module)

    • Lower down the target API to android 10> Allows us to bypass the restriction. This has been suggested by many people to me, but all I can say is that this is not a good idea for blokkok in long-term. The problem with this approach is that minimum API levels will always rise, and when it got past android 9 or 10, blokkok will just die. This does not solve the issue, but rather just delaying it.

    • Virtualization Yeah, virtualizing a Linux distro to run binaries..

      Credit: Tarochino

      Pro: Binaries can run flawlessly

      Con: VERY Resource heavy

    If anyone has any new and interesting approaches or have any pros/cons you want to add to this list, please comment on this issue.

    opened by Iyxan23 13
  • Using binaries directly with NDK

    Using binaries directly with NDK

    I've been thinking of using the binary tools used in the build tools to be called directly using NDK so we don't need to store it in assets + extracting it (which literally doubles the storage usage), and this would allow us to not have pain with two "legacy" and "new method" execution methods.

    I don't have a lot of knowledge in NDK / Native, so I might need to do some research

    enhancement priority: low build-system 
    opened by Iyxan23 0
  • AAPT2 stuck at linking big libraries

    AAPT2 stuck at linking big libraries

    For some reason, aapt2 got stuck on linking and compiling big libraries like appcompat, material. It works fine on compiling smaller resources like the core library. The emulator I tested in on doesn't show a significant CPU usage after waiting for about 15 minutes, means that the device is not doing any work at all.

    image

    It might be a quirk of aapt2 in android. Compiling those libraries works fine on PC

    bug priority: medium build-system don't know 
    opened by Iyxan23 0
Owner
Blokkok is a WIP full-fledged IDE with modular concept in mind for creating Android apps within Android.
null
A modular and portable open source XMPP client library written in Java for Android and Java (SE) VMs

Smack About Smack is an open-source, highly modular, easy to use, XMPP client library written in Java for Java SE compatible JVMs and Android. Being a

Ignite Realtime 2.3k Dec 21, 2021
Modular android app for searching Movies on Filmnet.ir and show the details of each Move based on MVVM.

Movie_Search Modular android app for searching Movies on Filmnet.ir and show the details of each Move based on MVVM. Android MVVM Architecture Table o

ehsan kolivand 3 Nov 26, 2022
A Android Web IDE supports code auto-completion and highlight, plugin (Supports Html, Css, JS, Json, Php etc)

WebDevOps A Android Web IDE supports code auto-completion and highlight, plugin (Supports Html, Css, JS, Json, Php etc) Join us QQ group number: 10314

SuMuCheng 22 Jan 3, 2023
Advent of code 2021 (unofficial) in Kotlin for Educational Plugin on Jetbrains IntelliJ IDE.

Kotlin Advent of Code 2021 (unofficial) DISCLAIMER: I am not affiliated with the official Advent of code event or website. To open this course, you ne

null 1 Dec 10, 2021
📚 Sample Android Components Architecture on a modular word focused on the scalability, testability and maintainability written in Kotlin, following best practices using Jetpack.

Android Components Architecture in a Modular Word Android Components Architecture in a Modular Word is a sample project that presents modern, 2020 app

Madalin Valceleanu 2.3k Jan 3, 2023
A Modular Firebase plugin (Android) for godot

GDFirebase GDFirebase is a Modular Godot Plugin for using Firebase Depends on Godot game engine: git clone https://github.com/godotengine/godot Avail

FrogSquare 10 Dec 9, 2022
A multi-modular Gradle project that encapsulates various modules to learn Kotlin language, tools and frameworks.

KotlinLearn This is a gradle project for the sole basis of exploring and learning Kotlin language, tools and frameworks. The root project wil encapsul

Victor Kiprop 2 Oct 10, 2021
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

MindOrks 1.2k Dec 29, 2022
Open source Imgur Android App

Opengur NO LONGER UNDER ACTIVE DEVELOPMENT Open source Imgur Android App Want to become a beta tester? Click Here! #Features Built in native java Nati

Kenny 324 Nov 22, 2022
Open source Imgur Android App

Opengur NO LONGER UNDER ACTIVE DEVELOPMENT Open source Imgur Android App Want to become a beta tester? Click Here! #Features Built in native java Nati

Kenny 324 Nov 22, 2022