Sketchware Pro's sources, in Java.

Overview

Sketchware Pro

GitHub contributors GitHub last commit

This is for everyone who wants to contribute to Sketchware Pro's development.

There are few things that must be taken into consideration before contributing to Sketchware Pro:

  • Make sure that you're capable to mod.
  • Showing off on other contributors is seriously not allowed. We're a community.
  • When you fix, add or modify something in Sketchware Pro, write an explanation about what you've done, at best as comment of the commit adding the file to the repository.

How to contribute

  • Fork the repository to your GitHub account
  • Make a branch if necessary
  • Clone the forked repository to your local device (optional, you can edit the files through GitHub's web interface)
  • Make changes to files
  • Test those changes
  • Create a pull request in this repository
  • The repository members will review your pull request, and merge it when they are accepted.

Source code map

  • Jx -> Responsible for generating the source code of activities.
  • Lx -> Responsible for generating source codes of stuff such as listeners etc.
  • Ox -> Responsible for generating the xml source of layouts.
  • Dp -> Responsible for the whole compilation process of projects. Was modified to fix MultiDex bug and to add library support.
  • yq -> Organizes Sketchware projects' file paths.
  • tq -> Responsible for compilation dialog quizzes.

You may also check mod path that has the majority of contributors changes.

Some guidelines for commits follow.

Commit message

When you've made changes to one or more files, you have to commit that file. You also need a message for that commit.

You should read these guidelines: https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/

And that summarized:

  • Short and detailed
  • Prefix one of these commit types:
    • feat: A feature, possibly improving something already existing
    • fix: A fix, for example of a bug
    • style: Feature and updates related to styling
    • refactor: Refactoring a specific section of the codebase
    • test: Everything related to testing
    • docs: Everything related to documentation
    • chore: Code maintenance (you can also use emojis to represent commit types)

Examples:

  • feat: Speed up compiling with new technique
  • fix: Fix crash during launch on certain phones
  • refactor: Reformat code at File.java
  • ...

Thanks for contributing

Thanks, they help to keep Sketchware Pro alive. It's better to have multiple people work on a project, for more ideas, less bugs (sadly sometimes more), and generally quicker development. Each (helpful) contribution that gets thankfully accepted, gets noted down in the "About Modders" activity. We'll contact you how to note your contributions to Sketchware Pro.

Discord

Join our Discord Server: Sketchware Pro

Disclaimer

This mod was not meant for any harmful purposes, such as harming Sketchware; Quite the opposite actually. It was made to keep Sketchware alive by the community for the community. Please use it at your own discretion and buy the Sketchware Premium subscription every month to support the original Sketchware team, even if you don't use it.

We love Sketchware very much, and we are grateful to Sketchware's developers for making such an amazing app, but unfortunately, we haven't received updates for a long time. That's why we decided to keep Sketchware alive by making this mod, plus we don't demand any money, it's completely free. :)

Comments
  • feat: Add Kotlin support (Android 8+)

    feat: Add Kotlin support (Android 8+)

    This PR adds full Kotlin support (for Android 8+). Kotlin files can be called from Java and vice versa. kotlin-stdlib is added automatically if any Kotlin files are present in the project. .kt files can be added in Java(/Kotlin) Manager, or in the following dirs:

    /.sketchware/mysc/xxx/app/src/main/java /.sketchware/data/xxx/files/java

    All credits go to tyron for porting kotlinc to Android and making this possible 👍

    Please take your time to review & test this thoroughly before merging it, as there might be stuff that I've missed (although I did test it and it seems to be working well.)

    By the way I've already built an APK with this PR on top of the latest v6.4.0 beta 6 release, here you go if you want to build the newer versions on top of it: here


    If not, here are the exact steps to produce the APK above: (I use MT Manager but ApkTool can be used as well)

    1- Download https://github.com/MikeAndrson/kotlinc-android and open it in Android Studio, then Generate a Signed APK. (alternatively you can download https://github.com/tyron12233/CodeAssist/ and copy its build-logic & kotlinc modules to a new project then generate an APK)

    • Extract DEX files from the APK, delete ma.kotlinc_standalone package from the DEX files.

    2- Download the latest release from https://github.com/Sketchware-Pro/Sketchware-Pro/releases. (beta 6 as of writing this)

    3- Delete the kotlin package in classes8.dex in Sketchware Pro's APK from step 2.

    4- Copy all JAR resources from the APK in step 1 to Sketchware Pro's APK from step 2. (including META-INF/ & kotlinManifest.properties !)

    5- Copy the extracted DEX files from the APK in step 1 to Sketchware Pro's APK from step 2. (Remember to rename them first, as to not overwrite any DEX in the target APK)

    -> Below steps are usual stuff but adding them for completeness.

    6- Build Sketchware Pro from source and copy (& overwrite) the classes below to the Sketchware Pro APK in step 2.

    DesignActivity, Dp, ExportProjectActivity, ManageJavaActivity, SrcCodeEditor, yq, KotlinCompilerUtil, KotlinDescription, DiagnosticKt, DiagnosticCollectorKt, KotlinCompilerKt.

    7- Replace "Java" to "Java/Kotlin" & "Import Java files" to "Import Java/Kotlin files" in resources.arsc.

    8- Sign the final APK if you haven't already.

    help wanted feature good first contribution needs attention merged 
    opened by MikeAndrson 29
  • feat, refactor: Added Swipe to Refresh for Local Library Manager, optimizations

    feat, refactor: Added Swipe to Refresh for Local Library Manager, optimizations

    feat: Added Swipe To Refresh Library List feat: Added Alias for libraries as an alternative for naming library Users can add or remove custom Alias for each library. If the name is too big it'll marquee.

    Refactored A lot of code , specially For loops & Type Castings TODO: Look at Line 152. Either make it work or remove it. Also Merge This Reset Function To The changes.

    feature 
    opened by khaled-0 25
  • Weird Block Behavior

    Weird Block Behavior

    Cant really describe this but look at the screenshots

    app version: sorry dont remember i download it from actions tab

    but i have a download link form browser download history https://pipelines.actions.githubusercontent.com/serviceHosts/523ebe16-815d-4d58-b433-717bd98e7c9a/_apis/pipelines/1/runs/371/signedartifactscontent?artifactName=apk-minApi21-debug&urlExpires=2022-10-14T04%3A39%3A08.7236327Z&urlSigningMethod=HMACV2&urlSignature=qZAeNmcsA1uviXzhn%2F2o%2BfXgBeIEScp4%2Bnm%2Bk10bxEU%3D

    this bug also happen in 6.4.0 rc4

    sorry dont have enough storage to record a video

    Screenshot_20221014-144815 Screenshot_20221014-144823 Screenshot_20221014-144826 Screenshot_20221014-144832 Screenshot_20221014-144846 Screenshot_20221014-144910 Screenshot_20221014-144916

    bug fixed 
    opened by oong819 24
  • Dependencies are permanent

    Dependencies are permanent

    Why just lie to us that java command blocks will remove the unused libraries and yet when i run a full compile with App Compat enabled the apk size is 4Mibs. When fully removed classes the apk just retains its size to 4Mibs. The source code indicates the codes are removed but on a full run using apk decompiler I found the removed dependencies still inact.

    Maybe you work hard but I don't appreciate the way you handle this issue with lying.

    ^The app just contains nothing => {4Mibs} 😂

    opened by LilMpesa 22
  • error in Proguard

    error in Proguard

    I was using test build 01, when I updated to test build 04 it gave this error.

    Caused by: com.android.tools.r8.internal.Hc: Class content provided for type descriptor com.coclew.r actually defines class com.coclew.R

    Suppressed: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Hc: Class content provided for type descriptor com.coclew.r actually defines class com.coclew.R

    Caused by: java.util.concurrent.ExecutionException: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Hc: Class content provided for type descriptor com.coclew.r actually defines class com.coclew.R

    Caused by: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Dj: com.android.tools.r8.internal.Hc: Class content provided for type descriptor com.coclew.r actually defines class com.coclew.R

    [CIRCULAR REFERENCE:com.android.tools.r8.internal.Hc: Class content provided for type descriptor com.coclew.r actually defines class com.coclew.R]

    Screenshot_20220707-130152_Sketchware Pro Screenshot_20220707-130143_Sketchware Pro Screenshot_20220707-130131_Sketchware Pro Screenshot_20220707-130103_Sketchware Pro

    bug fixed ProGuard 
    opened by AdesonBezerra 20
  • Unknown bug

    Unknown bug

    Screenshot_۲۰۲۲۰۵۱۵-۲۲۴۰۰۰_Sketchware Pro I downloaded the latest action, and when I run the program, it always shows me a message to create a res folder in the local libraries, while in previous versions this message was never displayed to me.

    bug fixed built-in libraries 
    opened by Arashvscode 17
  • About

    About

    I was banned from the Discord server due to a bot that uploaded without my consent. Sorry. Please give me at least the current version of Sketchware pro.

    v6.4.0-rc04-minApi26

    unrelated 
    opened by Jetrom17 16
  • Having some problems in YouTube player😓🥺

    Having some problems in YouTube player😓🥺

    I am having a problem of YouTube player in sketchware from a long time.When I put the youtube player the complied app get crashed I don't know why This is happening but I if am making mistake then please help me to fix It.

    duplicate 
    opened by TechnicalStudioDevelopers 16
  • Add new doc link and update existing ones

    Add new doc link and update existing ones

    added a new doc for admob interstitial ads and updated existing links. All the links of domain docs.sketchware.io replaced with sketchware-docs.vercel.app

    fix 
    opened by NiceSapien 15
  • Unknown error, the norm of not executing the outputted programs

    Unknown error, the norm of not executing the outputted programs

    The result of the last test action, old projects compile well, but do not enter the program. It has been tested on several old projects, but the program does not run. Unknown error. Using in version Min api 26 https://github.com/Sketchware-Pro/Sketchware-Pro/suites/8457008997/artifacts/375345400

    pending question(s) 
    opened by Arashvscode 14
  • Crash during compiling/building apks

    Crash during compiling/building apks

    Dear modders and developers........... Issue while compiling and building any app (apk) on latest version of Sketchware pro v 6.4.0 test build 03. Detailed report: When 'Run' button is clicked, it apk is successfully compiled(java, dx, aligning already done successfully) but crashes as soon it is signing the apk.. Then Sketchware returns to Home Screen where projects are displayed. NO app is being able to be installed. NO ERROR LOG IS DISPLAYED . Please fix this bug ASAP.

    bug fixed 
    opened by 007Shreyas 14
  • feat: Go to moreblock

    feat: Go to moreblock

    this feature brings a fundamental problem to the table (discussed on discord) so I marked it as draft for now, at least till we figure out a reliable solution.

    image

    the icon I got from Flaticon does require attribution btw, like so:

    <a href="https://www.flaticon.com/free-icons/export" title="export icons">Export icons created by Pixel perfect - Flaticon</a>
    
    enhancement feature 
    opened by TotallyNotMike 4
  • Package install error

    Package install error

    I used to create app and sign it from sketchware but when v6.4.0rc-05 miniApi 26 my app is run good but it is not signing I am sketchware sign my apk but the apk is not installing. In old version(v6.4.0rc-04 miniApi 26) the apk is installing with no problem please guide me to fix it or if it is a bug please try to fix it.

    bug 
    opened by TechnicalStudioDevelopers 16
  • Github Snapshot Version - problem

    Github Snapshot Version - problem

    i have download a Snapshot version today..and i got one bugs that should be fixed. IMG_20221228_011656 See in this screenshot. if i select any view from desgin layout (i mean from mobile screen that is our desgin screen) its working fine and selected view got like blue color....its fine.

    but if i select any view from (i mentioned this in that screenshot named as 1) its not selected and even selected views color not changing....

    bug 
    opened by AndroXStudiO 1
Releases(v6.4.0-rc05)
  • v6.4.0-rc05(Nov 5, 2022)

    We've made a few changes to the Logic Editor. Please make sure to make a backup of your entire .sketchware folder before you try this beta out! There might be bugs in the editor, and they could corrupt your projects. Please check in the Issues section before you report any.

    Highlighted features

    • Java 1.9, 10, and 11 compile support! This only works in minApi26 builds though. Thanks to @PranavPurwar for the contribution! (#497)
    • Syntax highlighting for Kotlin and even XML files. (33fe07d38d670b3600b12fc4b96b1c05cdf2fe81)
    • When Sketchware Pro crashes, you can now send the error message to us. It's fully optional though, so please make sure to send them if you want to help us fix bugs! (#551)
    • New features using root access: Auto-installing of projects, and also launching of projects if auto-install is enabled and worked. (#511)
    • You can now use e.g. tools:replace="android:id" in a View's inject property to remove android:id from its XML code. This is a replacement for XML Command Blocks that change tiny things like these. (59fd54afe82f3c65a87dfafae41d664ccfcebb90)

    Other new features/improvements

    • New instructions on setting a custom return type when creating a new More Block. (a8e6ff00ea0d8671bf1e2d73d3cb5eb6051ca647)
    • Kotlinc updated to v1.7.10 (#512)
    • Improved confirmation dialog when about to delete all attributes of an Activity in AndroidManifest Manager. (6f37f36fce31da9162887fbe4991f24f1685742b)
    • Upgrades to r8 v3.3.75. (3d63454e7b4c803aa8926664a12d0e2f8d544fb6)
    • When using the force darken apps Developer setting, the Layout Editor preview won't be darkened too, as it changes how the app really looks. (fde24d6656c69855fe3e24cabd66cb198dc8b1ac)
    • Icons available in the Import Icon activity now get extracted to the cache dir, not /Internal storage/.sketchware/…. This improves performance on Android 11+ devices, and allows easily freeing up space taken by those temporary files. (8f1aec21e3f299ccb17c704f341eff53273878a8)
    • The FAB in the About Sketchware Pro screen got updated to match Discord's new style. (#548)
    • More build progress when exporting a project. (0b51ad5daca1a90be4eb2ece73a274fc2e62ce8b...491b11f838385cb902ca010e70dd7ff72c283277)
    • Kotlin files in Java/Kotlin Manager now have an icon. (29fa222eb3b159c3c58af1a61985e84f93bf070c)
    • Projects can now be exported and then signed using testkey. (7f51eeaafbf679dccae70d94b2db418a7f9a0a6b)
    • An easy way to restore defaults on corrupted parts, such as Custom Blocks. It looks like this, and works by just renaming the broken file:
      image
      This currently works for Custom Repositories in Local library Downloader, Custom Blocks and Palettes in Block Manager, and Block Selector Menu Manager.
    • Injections made in AppCompat Injection Manager are now cached to improve performance. (365c075b51931d364db942cb63666204db2ba050...2f79b56f0aa185409e98b7f27b26b2031886d733)
    • The default android.jar was upgraded to SDK version 33, r02 (Android 13) (6e4ecfa25a9efab0f55db9c73dea1aefbc034871)
    • The version name in Program information is now selectable. (81f9aabe93fe83b719bf1cdda11424ce979cb170)
    • Update to bundletool v1.11.3 (ea2dd4b474e4934e179b3dcc449e7644e7652830)
    • Update to sora-editor v0.17.2 (226c141b7196562c8f3ed95731a00c541ac04ef5)
    • Update of the built-in material library for projects to v1.6.1 (24a268ab8163c3472df75e1b272be8c0954713a6)
    • Update of Firebase Database to v19.3.1 (13ff5cb11f63ca2c7d554192b207546e3a379af4)

    Fixes

    • Projects using e.g. the Google Maps library work again. (71ff222fdfa2956523bd8aeff12ebedab40bfce0, 3b334d3b7bb5697e0b2814105dffbb11f6eb835c, 27a681b55a404fb0e5de4e04bbc9816462be3d5d)
    • Projects don't crash anymore due to SketchLogger if debug logging is enabled. (eca95dd307773b3971986328ba9697640733c1ba)
    • Sometimes even in release builds debug logs were enabled. That has been fixed. (80149e8d2469b1292718fd273d3ebe4bd82eecda)
    • Adding new AdMob ad unit IDs works again. (7a56d715fd3954c9f191e61929718464f71ea01b)
    • In the About Sketchware Pro screen only the latest version in Changelog is marked blue, like it always should have been. (19c48a77a93f85251833592f47519859be0fe023)
    • FragmentAdapter Components can be used in Fragment Activities too now. (637e2e984e1840f49686bacc42ad4e6e4de4ef37)
    • Having a very large compile error won't crash the app anymore. This is a bug even present in v6.3.0 fix1. (5b5616ecd6c796a3209d5a561e728de3d84f630c)
    • Switching apps while generating a source preview of a file in DesignActivity won't crash the app anymore. (427ea71bb5461a3e1f93c8e1c24436006c6db16a)
    • Some ProGuard classpath errors were fixed. (c719999c250e49d45a47c5f997c4c800674f992c, c8a6805d92ea734e1db8d93f37ef223636dc63b1)
    • The known ProGuard bug from v6.4.0-rc04 was fixed. (89f881099107764f6448277248da8aaadc38fa74)
    • The AndroidManifest.xml preview in AndroidManifest Manager contained XML Command Blocks applied more than once sometimes. Fixed now. (d26306356523406184173b1d2b847c34a80a38a4)
    • Some fixes to projects exported to Android Studio. (6badf3159a7e3e672eecc0d3e4b98b30cbad88bb...e30deb6897cf918bdddad124ab91872cfec2a71c)
    • Exporting an AAB won't fail with a StackOverflowException anymore. (1fce06f0f378a3ead5cd80ba129b55037fe2d931)
    • Activities which already have android:exported set by injections in AndroidManifest Manager won't get duplicate android:export properties when targeting SDK version 31 and higher anymore. (ab080ae0e3c00aa436b6bc7b71639d921c370088)
    • Using 1+ Dynamic Link Components and targeting SDK version 31 and higher won't add a duplicate property to AndroidManifest.xml anymore. (ac2c310994221a31c64a1f77cf07ff1f3394ef54)
    • (Internal change) Using a Gradle dependency for SpongyCastle instead of classes converted from DEX files, which fixes some signing issues. (32828fe1892630aa3c9d2676d05ce928c0876640)
    • Custom Components can share names with built-in types and get its imports too, back to how it used to be in v6.3.0 fix1 and earlier. (5b779628a91d9558c5d71ef2049226caeec3a772)
    • Fixes picking a Font sometimes corrupting it, and making the Font unusable in the app. (fe198928ec6c83c83257f11aaea3c3b2a52d02c1)
    • Picking a Sound in Sound Manager won't crash on some Android versions anymore. This is a bug even present in vanilla Sketchware. (cce5e0baca283ddf947d3cc47ecff44b271c7ad1, 74a971c4a899cdcf160f0306993a8e708b7f6891...24e9514fe1ee8a0becaf07c90d3a77616325763e)
    • The Import AdMob details from another project Button works now. This is also a vanilla Sketchware bug. (b09d1366bc99d586373949f36555cd5cf2f8409d)
    • When a Font can't be previewed in the Logic Editor, the app won't crash now. This is another vanilla Sketchware bug. (65d689baac0c9b5847d5ff4024547bc54390de7e)
    • The app won't crash on null Custom Events and Components anymore. (2db1b76b7ac5631b52e6ce15e801aa1a4063d856, 833da0d273674c5a0a0ee138c209b3ba28886690)
    • Component descriptions can be changed using strings.xml again. This is a regression even in v6.3.0 fix1. (0f7bd459140e57c7eb2f2e33bc298b6c790d7c04)
    • Some Custom Block Palette color parsing fixes in Block Manager. (41c399abd7f382358a147acd5b09c1e1a03b3be9)
    • Importing Custom Blocks into a Palette works again. (6bdda25da47ba37cffa35b18814b6567cfb463d3)
    • Hopefully a fix for some files being compressed in AABs even though they shouldn't be, for example sounds. (70e0a87b1c80bf4c0c62ae38735d0019918a13cd)
    • The default project backup filename format now contains two-digit months all the time. (de33fbc945cf20b9d7b9ebbf292f61d22f62ba94)
    • Local library Downloader extracts android.jar if needed automatically, without failing without telling why exactly. (077f93d6e129b0baf942196af946385fce41dd4a)
    • After creating a new Custom Listener, you don't have to restart the app anymore for it to be recognized by Sketchware Pro. (07948c0a5296fa70028ad917d481e1f23db5336f)
    • Disabling a Local library for a project should work in all cases now. (e965df5cf91ceae202cfec9d7c822c41103030d3)
    • The file /Internal storage/.sketchware/data/system/local_library won't be created anymore if opening Local library Manager from Developer Tools. (89225189fcb1eaa696f95f858e499843f020aa58)
    • Having e.g. @color/white as border color in a CircleImageView won't show up the false-positive invalid background color toast anymore. If the color really is invalid though, the app will also tell the CircleImageView's ID. A typo in the error message was also fixed. (28e6c5560b37c1789a82fe9a046f4e20dfabee5d...e380223628bd00a51f05f6d1348a7eff0328378f)
    • The orientation and weightSum property were not are applied in XML to RadioGroups and other Views, even though they were shown in the Properties of the View. This is a bug present even in v6.3.0 fix1, but has now been fixed. (3e9e8105cd85f4503aa29f480e617b98b652828d)
    • The Logcat Reader button in Developer Tools now actually works. (a093a4883d982dd975ab1aaaac18ff21c190f044)
    • SketchApplication.java is not generated anymore if a custom application class is in use. (059d168172b52a2d70aec2ed13397ed1394257ed)
    • SketchLogger.java automatically tries to use the custom application class now. The class needs a static method getContext() returning android.content.Context to work though. (059d168172b52a2d70aec2ed13397ed1394257ed)
    • ProGuard should work on API levels < 24 again. (9c54e2a08c449e7367bdb8040e5ccbfe0103e691)
    • Trying to get data from Firebase Database with ProGuard enabled didn't work out-of-the-box, it crashed at runtime. Now it works, by adding ProGuard rules to built-in library Gson. (96706a5626bc1c8e8fe3369ade2268093ee3f74d)
    • Importing a More Block with a custom return type from Collections won't break its return type anymore. Checking for duplicated names was fixed too. (3e470a51e434ca59d2d66e30cb499b43e7f9aa11...cebf29391a33604c2cb3fd8e580322b96e326e74)
    • Spaces in More Block names are disallowed again, as they cannot be compiled. (c415c26c357943162e223444dd6ee82cf0881997)

    Merged Pull requests

    • feat: Update gradle version to 7.5 by @MartLintz in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/509
    • Upgrade Kotlinc to v1.7.10 by @PranavPurwar in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/512
    • feat: Upgrade Gradle version to 7.5.1 by @ArjunaKumarMohanta in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/530
    • Update proguard to support java 11 by @PranavPurwar in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/516
    • feat: Improve the fab design in About Mod Activity. by @lahds14 in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/548
    • feat: sending crash logs to discord through webhooks by @PranavPurwar in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/551
    • Add new docs and update exisiting ones by @NiceSapien in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/557
    • FEAT: Added ROOT user features: AutoOpening, Slient Installing by @Maks-gaming in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/511
    • Fix some slight issues by @PranavPurwar in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/620

    New Contributors

    • @ArjunaKumarMohanta made their first contribution in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/530
    • @lahds14 made their first contribution in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/548
    • @NiceSapien made their first contribution in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/557
    • @Maks-gaming made their first contribution in https://github.com/Sketchware-Pro/Sketchware-Pro/pull/511

    Full Changelog: https://github.com/Sketchware-Pro/Sketchware-Pro/compare/v6.4.0-rc04...v6.4.0-rc05

    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0-rc05-minApi21.apk(84.48 MB)
    Sketchware.Pro.v6.4.0-rc05-minApi26.apk(113.67 MB)
  • v6.4.0-rc04(Jul 5, 2022)

    The most significant new feature of this release is Kotlin code support! PR #247 was finally merged into main. Compiling Kotlin code still needs an Android 8+ device though, so only the -minApi26 version supports Kotlin.

    Features

    • Reading debug logs from projects. A new activity for that, the Logcat Reader, was added, and to start seeing logs there, run your project and open the Logcat Reader in Sketchware Pro. (#257)
    • Symbol pair auto-completion in the code editor can now be turned off. (#402)
    • Upgrade to sora-editor v0.14.0.
    • Upgrade to Iyxan23/zipalign-java:96fd6b30c928015847264b27b0d2dd407f3e8895.
    • Some performance improvements to the DEX merging step. (0f4fc74e98e74595fdcee1423f0b578767038bea)
    • Using resource strings in the text and hint property of Views now works! Set e.g. @string/greeting as text or hint, and the View code will use the resource string, not escape the @. (0f27cac78263556793e4796ed77e19967b9ec336)
    • You can now tweak the filename of SWB backups. (#277)

    Fixes

    • Custom Variables are shown in the Variable Palette and can also be removed again.
    • The aligning APK step was entirely removed after pressing the Run button, as only exports to e.g. Google Play need alignment.
    • The crash after the Aligning APK… step was fixed.
    • Downloading Local libraries won't crash the app anymore. (299d341b1948866f15921fdcf5bc41b29c7a0be2)
    • Fonts added via the Font Manager now actually work at runtime. You'll have to remove old fonts and add them again though.
    • A Custom Block Palette having an invalid color won't crash the app anymore. (a332fcb6be1ae5e2ab3db8b8d2f05a8a397329ab)
    • RadioButtons' checked property now work. (27f874aeaf24811ecddc2b09d151bcc05a7371c2)
    • Built-in Menu Blocks work again! (bba8b3b9dcf2dcc9b0d3dc817fda9b179b3686fd)
    • Zooming in code in e.g. the source code preview, or in general, in dialogs where sora-editor is used will zoom into the code editor content, not the activity content. (c7336e96c2f1a6bae2eec980aa6ac6d38922c4cc)
    • Trying to remove a Variable or List used in another Event will show an error message again.

    New in version with Kotlin support

    • Java Manager was renamed to Java/Kotlin Manager. It can also create and import new Kotlin classes.
    • Obviously, Kotlin compiling!

    Known issues/bugs

    Before reporting any issues, please first check here if they're not already known, or already were reported in another Issue.

    • Java/Kotlin Manager has no icon for Kotlin source code files.
    • There's no Kotlin syntax highlighting available in the code editor.
    • Adding new AdMob units doesn't work. See issue #490 for details on that bug.
    • ProGuard somehow renaming R classes to r.

    Versions

    • If you need a version that supports Android 5 and higher, get v6.4.0-rc04-minApi21. It has no support for AAB output.
    • Otherwise, if you need one with Kotlin support, and also AAB output support, get v6.4.0-rc04-minApi26. As the name says, it only supports Android 8 and higher.
    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0-rc04-minApi21.apk(84.54 MB)
    Sketchware.Pro.v6.4.0-rc04-minApi26.apk(111.32 MB)
  • v6.4.0-rc03(May 16, 2022)

    This is just a quick bug fix release with some other minor improvements.

    Features

    • Importing google-services.json downloaded from Firebase Console directly instead of entering Firebase data manually. (a9561f53214ad6b334314150d8d51fdf1d0bf394...40c28f61355e16546dfcd09b87fe849084fe2a54, ab1eb98fb39267356dfc83d68759ef791acd6ccf)

    Fixes

    • Component fields getting duplicated was fixed. (#392, 2bb7b2a9cf355273ed5813670d2fe1fb8ae81274)
    • APK aligning failing due to dynamically linked zipalign binaries was fixed too! (#395, 45cc37f7150c37b7964651c04fa661f55991d7df)
    • Adding a RewardedVideoAd Component is not possible anymore when not having AdMob enabled. (5e898ae02daf26398e8e3ea43c32c17901e77d86)
    • Projects using OneSignal won't have to rely on e.g. XML Command Blocks to work (/ at least get installed) on Android 12 when also targeting that Android version. (661780f639219932035188b1257204e09a32ad28)
    • When exporting a signed AAB or APK, the file gets signed first, then zipaligned. Apparently that's what you should do now. (c7ff8ea131f47eb2288a40488c779653d99a3921)
    • The context menu in Java Manager or App Components shouldn't be weirdly dark with dark text anymore. (ef0b9d0290d98917fa147b27a686f9b395ff2fdf)
    • A typo in the onScrollChanged Event label was fixed at last. (60cdf9a4179caba48e89b397ad2fc444635e3737)
    • Projects using Glide should no longer crash at runtime. (9fb5aaf2b0e039a369e1899a6e22fead0c8cdace)
    • Clearing the app cache will no longer make compiling projects not work anymore until you clear the app's data. (6bc31f7e8d97a896bd1fcff0a0883864837e94d0)
    • Some other compiling assets that need to be extracted will also be extracted to the cache directory, just like e.g. built-in libraries' DEX files. (6bc31f7e8d97a896bd1fcff0a0883864837e94d0)
    • Built-in Extra Blocks can now be overridden using Custom Blocks again. (0929291412b1f6c07865d0af459d728b21a8468d)

    Major thanks

    We'd like to thank @Iyxan23 for implementing zipalign in Java, started by Sketchware Pro needing an alternative method to align ZIP archives. The library can be found here. Thank you for making v6.4.0-rc03's release that quickly possible!

    Full Changelog

    You can find it here: https://github.com/Sketchware-Pro/Sketchware-Pro/compare/v6.4.0-rc02...v6.4.0-rc03

    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0-rc03.with.AAB.support.apk(85.95 MB)
    Sketchware.Pro.v6.4.0-rc03.without.AAB.support.apk(83.67 MB)
  • v6.4.0-rc02(May 14, 2022)

    This is another long overdue release.

    Features

    • Built-in library upgrades, as well as finally changing their internal names to mention the actual library name in e.g. dexs.zip. (4030187aa7451baea2eac6cb947dc4934119863c...96298588b6f88d5cbbbe04485110d16b3b5e01eb, e280c1fc9be0ad73017635a38ca947a14a5e1804)
    • Views can now have an orientation of "none", which removes the property android:orientation="…" from Views' XML code entirely, all without any Command Blocks. (775e4d04d9fef873c65efcb91cb5568fe6952061)
    • APKs now get aligned using zipalign before getting signed. (f67c19537cef0da9bf636799ebc6283ba0b96a05)
    • Quick AndroidManifest.xml viewer in AndroidManifest Manager (81813a0541311daa0733ba341fad0deadb5049c3)
    • AndroidManifest Manager will now use the new code editor if not disabled in Mod Settings for App Components. (f1a26461869f7f036e2dc3fcd58915b7ce865ceb)
    • Upgrade of code editor library to upstream sora-editor v0.11.1
    • When exporting an APK / AAB, you can now also decide to not sign the APK / AAB. They will get a different output name, though. (de780e71ce247ad9517a97baf0b0be6a6cb8b188)
    • Sometimes directories or files needed for compiling get deleted. Sketchware Pro now detects and tells you about that. If it's directories, you can create them with a single click. (54f9706d6270cbfa38a6cca1f9f239c64caa3330)
    • The Source Code Viewer got improved. It now uses the new code editor library to show code, and launching it is instant. It generates the project's code asynchronized so that the UI doesn't hang anymore. (ae9e4980a4a0c15fe282d2b0a135b5d9a1ec3f0e)
    • ${applicationId} in AndroidManifest.xml will now automatically get replaced with the project's package name. (91eaff060194e8d7ef1ca68074aa131ca7cb56af)
    • R8 was updated to v3.3.28. (a7c2e4ff95bc70efe2f535c2d859d10b29045853)
    • A new barebones splash screen that only waits until the system's ready to open MainActivity. (390ed037c90c39c6b81b054b9fcb32ea2b4ac771)

    Fixes

    • App doesn't crash without access to storage anymore. (650b78fe28c5cd135868bfbe16b8c5a751065aae)
    • Resource Manager doesn't crash on older Android versions anymore. (f81de8f3e8ab4a78d9c7dbbdad2b07c5e8249f53)
    • BottomNavigationView's onNavigationItemSelected Event works again. (3a4e17e55076b019b0d1430249163e6a2bcd2e0a)
    • Showing a file's source quickly now works for XML files, including changes made via Command Blocks. (80201534b0973efb3fe0397f2077a3ce44a7be5a)
    • You can clear the saved last compile error again. (470074b40c4aed1bbbe5c24d9670a1043740ec88)
    • Projects can have the <queries> tag in AndroidManifest.xml again. (none, since this was caused by me having forgotten to update aapt2's binaries in the APK)
    • The blue "[ViewPager] setFragmentAdapter [FragmentAdapter] TabCount (number)" Block works again. (ef4c3a59f60fa8913804c0cbda2dc61f759d2d45)
    • If a wrong key store password was entered while signing an APK or AAB, you will now be told about that instead of getting an endless progress bar. (78a2a1a0680f4dba5eb2e9bde1030f09038d223c)
    • You can't add more DynamicLink Components if Firebase is not enabled. (0656216dcf80d9364ce890055f184749ddc403e6)
    • The InterstitialAd Block to show an ad doesn't crash projects at runtime anymore if used outside of the onAdLoaded Event / the ad hasn't been loaded yet. (9c95577b491b1b7049496711e8bc3afc4347f1d2)
    • While creating DEX files out of project files, d8 now knows about used libraries' JAR paths. That allows it to desugar default methods into code if targetting older Android versions, and makes for example the exoplayer library work when used. (875e010bcdedf13b9a69325da2b6331e59d817c1)
    • Adding fonts via Font Manager should now work on all Android versions again. Sound Manager following soon. (16b72aa81a53bd776bc816ae6bdaf0801945566d)
    • The built-in library localbroadcastmanager-1.0.0's DEX file now actually contains its classes. (e0bf549c5e953045a349f455d1b5aec1b301e6ea)
    • The RewardedVideoAd Component got updated to work with the updated AdMob built-in library version. You will have to migrate Events to new ones over. (too many, lol)

    Changes that aren't features or fixes

    • Resource Block Selector Menus have been deprecated / removed. Use the Code Editor option instead. (3de650c44b4d1d20b6a02b4f93f416321981a054)
    • The Language Settings menu from the main drawer has been removed as it's not working anymore. (7aee8ce896c47a7a4463317a98f4e2309a35935b)

    Update on Sketchware Pro's build system

    • We've migrated to Android Studio fully now. This means that it's even easier to contribute to Sketchware Pro!
    • Unfortunately, that also forces us to release two APKs from now on. We're releasing an APK with support for Android 5 and higher but without AAB output support, and one with support for only Android 8 and above devices, but because of that, with the AAB output feature. You can check the APK's minimum SDK version (21 for no AAB output support, 26 for with), or the version name to find out which version an APK is.

    Full Changelog

    You can find it here: https://github.com/Sketchware-Pro/Sketchware-Pro/compare/v6.4.0-rc01...v6.4.0-rc02

    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0-rc02.with.AAB.support.apk(86.21 MB)
    Sketchware.Pro.v6.4.0-rc02.without.AAB.support.apk(83.92 MB)
  • v6.4.0-rc01(Dec 24, 2021)

    What's new?

    • AdMob Interstitial Ads (yet again). This time, you can start using Events just like with v6.3.0 fix1 and vanilla Sketchware.
    • Quick Previews of XML files! This was surprisingly hard to implement, as far as I can remember. View commit
    • A much better "About Sketchware Pro" screen, containing expandable Sketchware Pro version changelogs, and a work-in-progress tab to view Major Changes made to Sketchware Pro since v6.3.0 fix1.
    • Generated AABs containing generated ProGuard mappings if those were enabled. Useful when uploading your AAB to Google Play. View commit
    • The screen staying turned on while exporting a project. You can now finally leave Sketchware Pro working while resting. View commit
    • Images imported in Resource Manager and Asset Manager show previews now! View commit
    • Improvements to the Compile Log screen: It now has a toolbar, and features display options. Also, the last compile error will open there too, now. View commit
    • Being able to restore multiple SWBs at once. Every backup has its own "restore embedded Local libraries?" dialog, by the way. View commit
    • Backing up projects now backs them up into a folder with the name of the project. Inside that folder, the backups of that project will be stored. View commit
    • An updated version of the built-in Material Design Components / part of AppCompat for projects, which allows your projects to have a Material You style! That is completely optional though, and to apply that, you need to currently mess around with Resource Manager. View commit
    • ProGuard v7.1.1 in Sketchware Pro. Major upgrade is it being able to process Java 11 Local libraries. View commit
    • A ScrollView in Mod Settings and the Tools screen. Some small-display devices will benefit from this. View changes

    What got fixed?

    • Custom Listeners not getting added to generated code. This explains the issues of v6.4.0 Beta 6 with many WebView-using projects, for example.
    • Exporting a project to Android Studio failing with "file not found" errors. What a difference simple "folder exists?" checks can make. View commit
    • Some devices having issues extracting built-in libraries, which explains the "…/res: No such file or directory." errors when projects are at AAPT2. View commit
    • Views, such as TextInputLayout, in Lists' Custom Views (e.g. RecyclerView), causing errors at runtime. This needed a patch to vanilla Sketchware's default generated Adapter code. View commit
    • AndroidManifest.xml injections after the default AppTheme not getting applied. View commit
    • Using multiple FragmentAdapter Components in a single Activity should be fine now, and its corresponding Block got changed too. Make sure to replace the current one with the updated one, or else no Adapter will be set. View commit
    • SearchView's onQueryText* Events should not throw compile errors anymore. View commit
    • AdMob AdViews not properly working. Note that now they show test ads when running your project, and only real ads when you export your project, just like Interstitial Ads!
    • Some AABs containing invalidly compressed files, most often videos or sounds in assets / res/raw-[config]. View commit
    • Exported AABs not containing non-class files from Local and built-in Libraries' JARs. Now they do. View commit

    What else got changed?

    • The app's icon is now Christmas-styled. 🎄
    • As announced, Direct Source Code Editor got removed. See this message for the announcement again: image View commit
    • /Internal storage/.sketchware/debug.txt now contains information about the used Sketchware Pro version. That'll probably be useful for saving time while investigating issues. View commit
    • DEX files don't get merged into just few ones anymore starting with this version when just running the project, not exporting it. That'll save some precious time of yours. View commit

    Full Changelog: https://github.com/Sketchware-Pro/Sketchware-Pro/compare/v6.4.0-beta.6...v6.4.0-rc01

    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0-rc01.apk(78.84 MB)
  • v6.4.0-beta.6(Sep 26, 2021)

    This is the first Sketchware Pro version released at its GitHub repository!

    What's new?

    • (Minor) The default generated FileUtil.java file now contains the method copyDir(String, String).
    • Cached Custom Components, which make Sketchware Pro work much smoother. From now on, you have to open Component manager to refresh Custom Components though.
    • More than a single decimal in project's version name, version name and extra is now a . (If using advanced version control dialog)
    • The green "add source directly" block is now available in the default Import Event if you open the Operator palette.
    • Some improvements to exporting a project to Android Studio: It now includes imported Java files, resources, assets, and native libraries.
    • Improvements to the Local library downloader, now you can have custom repositories it looks up. The default one will automatically get generated during the first time at /Internal storage/.sketchware/libs/repositories.json.
    • (Might be removed later) Adding tools:remove="orientation" into any View's inject attribute will remove the android:orientation attribute of it.
    • (WIP) Built-in AdMob fixes! You'll have to completely rework ads, but at least they kind of work now. You will need all 4 new blocks in exactly this order: h Support for onAdShown and onAdClosed is coming soon. There's still a catch: You need to use an XML Command Block in AndroidManifest.xml to set your correct app ID there. Click here for more details on what exactly to replace.

    What's been fixed?

    • The app complaining for no reason about any List in Logic Editor
    • Merging DEX files while building a project taking ages
    • Generated AABs not including Native libraries
    • General compiling failing on some devices due to the removal of the android:largeHeap="true" attribute in Sketchware Pro's AndroidManifest.xml
    Source code(tar.gz)
    Source code(zip)
    Sketchware.Pro.v6.4.0.Beta.6.apk(66.64 MB)
Owner
Javkhlan K.
Hi! I'm a hobby programmer and usually use Java or Kotlin on Android-related projects.
Javkhlan K.
An open source, modular alternative of sketchware. Create your own app in android using block programming like scratch!

OpenBlocks An open source, modular alternative of sketchware. Create your own app in android using block programming like scratch! What is OpenBlocks?

OpenBlocks 30 Dec 16, 2022
Modern Java - A Guide to Java 8

Modern Java - A Guide to Java 8 This article was originally posted on my blog. You should also read my Java 11 Tutorial (including new language and AP

Benjamin Winterberg 16.1k Jan 5, 2023
icecream-java is a Java port of the icecream library for Python.

icecream-java is a Java port of the icecream library for Python.

Akshay Thakare 20 Apr 7, 2022
JPassport works like Java Native Access (JNA) but uses the Foreign Linker API instead of JNI. Similar to JNA, you declare a Java interface that is bound to the external C library using method names.

JPassport works like Java Native Access (JNA) but uses the Foreign Linker API instead of JNI. Similar to JNA, you declare a Java interface t

null 28 Dec 30, 2022
There are two versions of assignments(Java or C++) for the CS143-Compiler course, this repo is my Java-version solution.

Intro There are two versions of assignments(Java or C++) for the CS143-Compiler course, this repo is my Java-version solution. Course resources: This

F4DE 3 Dec 15, 2022
From Java To Kotlin - Your Cheat Sheet For Java To Kotlin

From Java To Kotlin From Java To Kotlin - Your Cheat Sheet For Java To Kotlin 中文支持 Português Español Print to Console Java System.out.print("Amit Shek

MindOrks 5.8k Dec 29, 2022
Ultra-fast SQL-like queries on Java collections

CQEngine - Collection Query Engine CQEngine – Collection Query Engine – is a high-performance Java collection which can be searched with SQL-like quer

Niall Gallagher 1.6k Dec 30, 2022
Design patterns implemented in Java

Design patterns implemented in Java Read in different language : CN, KR, FR, TR, AR Introduction Design patterns are the best formalized practices a p

Ilkka Seppälä 79k Dec 31, 2022
Feature Flags for Java made easy

✨ ✨ ✨ FF4J - Feature Flipping for Java ✨ ✨ ✨ FF4j, is an implementation of the Feature Toggle pattern. ?? Features Feature Toggle: Enable. and disable

FF4j 1.1k Dec 25, 2022
A Java to iOS Objective-C translation tool and runtime.

J2ObjC: Java to Objective-C Translator and Runtime Project site: https://j2objc.org J2ObjC blog: https://j2objc.blogspot.com Questions and discussion:

Google 5.9k Dec 29, 2022
Make Slack and Facebook Bots in Java.

JBot Make bots in Java. JBot is a java framework (inspired by Howdyai's Botkit) to make Slack and Facebook bots in minutes. It provides all the boiler

Ram 1.2k Dec 18, 2022
An in-memory file system for Java 7+

Jimfs Jimfs is an in-memory file system for Java 7 and above, implementing the java.nio.file abstract file system APIs. Getting started The latest rel

Google 2.2k Jan 3, 2023
API gateway for REST and SOAP written in Java.

Membrane Service Proxy Reverse HTTP proxy (framework) written in Java, that can be used as an API gateway as a security proxy for HTTP based integrati

predic8 GmbH 389 Dec 31, 2022
A lightweight, simple FTP server. Pure Java, no dependencies.

MinimalFTP A lightweight, simple FTP server. Pure Java, no libraries. Features Although it's named "minimal", it supports a bunch of features: 100% Ja

Guilherme Chaguri 131 Jan 5, 2023
Detect uses of legacy Java APIs

Modernizer Maven Plugin Modernizer Maven Plugin detects uses of legacy APIs which modern Java versions supersede. These modern APIs are often more per

Andrew Gaul 325 Dec 12, 2022
A lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your Java awesome app.

PipelinR PipelinR is a lightweight command processing pipeline ❍ ⇢ ❍ ⇢ ❍ for your awesome Java app. PipelinR has been battle-proven on production, as

Eduards Sizovs 288 Jan 8, 2023
An extensible Java framework for building XML and non-XML streaming applications

Smooks Framework This is the Git source code repository for the Smooks Project. Build Status Building Pre-requisites JDK 8 Apache Maven 3.2.x Maven gi

Smooks Framework 353 Dec 1, 2022
Java XML library. A really cool one. Obviously.

XMLBeam This is a Java XML library with an extraordinary expressive API. By using XPath for read and write operations, many operations take only one l

Sven Ewald 70 Aug 25, 2022
The open-source Java obfuscation tool working with Ant and Gradle by yWorks - the diagramming experts

yGuard yGuard is an open-source Java obfuscation tool. With yGuard it is easy as pie ( ?? ) to configure obfuscation through an extensive ant task. yG

yWorks GmbH 265 Jan 2, 2023