Talk: AIA Tools, a Python library for analyzing App Inventor projects

Hello everyone,

If you’re interested, I’ll be giving a talk in about an hour on a library that I’ve been working on to support App Inventor research. Details below.


Topic: AIA Tools Talk
Time: Mar 31, 2020 03:00 PM Eastern Time (US and Canada)

Join Zoom Meeting

One tap mobile
+16465588656,199507157# US (New York)
+16699006833,199507157# US (San Jose)

Meeting ID: 199 507 157

US : +1 646 558 8656 or +1 669 900 6833

International Numbers:

Join by SIP

Join by Skype for Business


Hi Evan,

Would it be possible to record it, and share the link of the recording later?


1 Like

Should be interesting.
I have mooched off of Unchive too much.


Yes, I will be recording the talk.


Hi all,

The talk is now online here:

Also attached is a copy of the buffer from the live coding session at the end of the presentation.

Thanks to everyone who tuned in to listen!


aiatools-buffer.txt (16.5 KB)


I have watched the video of the talk, and aiatools is amazing, congrats!

While watching it, two questions/suggestions/comments came to my mind:

  1. Around minute 20 IIRC, you said that with aiatools you can make “queries”. And the examples you showed later were impressive, it is a really powerful tool.
    However, I think an option to export that data could be pretty useful. For example, if it were possible to export all the data into SQL tables, a full database could be created, and SQL queries can be made into such data (I am thinking about a hypothetical web version of the tool). Or even export that data as a CSV file.

  2. A kinda cool usage of that tool is the possibility of generating documentation for App Inventor projects. Currently, you are parsing the main attributes of the blocks, but I could not see anything related to blocks comments:
    Maybe, in the future, the tool could also parse those comments. And, with some other modifications in the Python code, it could create something like a ReadTheDocs formatted documentation generated from the parsed AIA file.
    I see this could be useful for higher education, where papers related to App inventor appear. Researchers could comment blocks (like we currently comment code), and then a documentation site gets generated and could be linked in the paper.


I'm not convinced that SQL would be the right tool for the job here. It works well for relations between entities, but doesn't do all that great when entities mainly refer to items of the same type, which both blocks and components do through their parent/child/sibling relations. If you're just storing summary stats, that'd be fine. For web projects, dumping the data to JSON so that it can be easily manipulated in the browser is another option. For server-side storage you could use a nosql approach like Mongo.

The Block type does have a comment field. I don't have an attribute defined to access it though. You can declare one as follows:

from aiatools import NamedAttribute
comment = NamedAttribute('comment')

and then use comment like any of the other examples in the slides or live demo. I can plan to put that into the next release.