0% found this document useful (0 votes)
101 views

MIT APP Inventor Extension

This document provides an overview of App Inventor extensions, which allow developers to create new reusable components. It describes how to import, use, and share extensions in App Inventor projects. Anyone can create an extension by programming it in Java and packaging it as an .aix file. Extensions appear alongside built-in components and can be used the same way. The document provides examples of existing extensions and best practices for naming and updating extensions over time.

Uploaded by

Arnold M. Narte
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
101 views

MIT APP Inventor Extension

This document provides an overview of App Inventor extensions, which allow developers to create new reusable components. It describes how to import, use, and share extensions in App Inventor projects. Anyone can create an extension by programming it in Java and packaging it as an .aix file. Extensions appear alongside built-in components and can be used the same way. The document provides examples of existing extensions and best practices for naming and updating extensions over time.

Uploaded by

Arnold M. Narte
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

MIT APP Inventor Extension

1. Overview of App Inventor extension components

App Inventor apps are built using components. Components let the apps use the
built-in features of the mobile device (like Camera or LocationSensor) or services on the
Web (like Twitter or FusionTables). App Inventor includes a large collection of
components, and the App Inventor development team adds new capabilities to the
system by implementing new components.

App Inventor Extensions let anyone create Extension Components. Extension


components can be used in building projects, just like other components. The difference
is that extension components can be distributed on the Web and loaded into App Inventor
dynamically: they do not have to be built into the App Inventor system, and they can be
imported into projects as needed. With extensions, the range of App Inventor apps can
be virtually unlimited.

One use of extensions, for example, is for educators and educational software
developers to provide extension components tailored to specific lessons and activities that
students can use in building apps. Examples might be simulations or data analysis
tools. Those apps might be unfeasible to create directly with the built-in App Inventor
blocks, either because of processing speed or programming complexity. But those same
apps might be readily programmable in the App Inventor framework, using extension
components that perform the necessary processing.

Anyone can create extension components. This requires gaining familiarity with
the App Inventor source code (located on Github) and programming the extension in
Java. Extension components are packaged as aix files. Once you create an extension
component, anyone can use it in their App Inventor projects. Extension component aix
files can be housed anywhere on the Web. The aix files need not be stored at MIT or
any other particular place, although MIT hosts a repository where people can make aix
files available for sharing and public use.

Note: One limitation of the current extension component implementation is that it creates
non-visible components only (i.e., components that do not show on the designer
screen). MIT plans to remove this restriction in future versions of the extension
component system.

1|Adding Exten s ions A.M. Narte


2. How to use extension components
You use an App Inventor extension component just as you would use an ordinary
built-in component, except that you’ll first need to import the extension into your project.

2.1 Importing extension components


Before you can import an extension component, you must have a project
open. Start a new project or open an existing one. To import an extension, look in the
components palette at the left of the screen under Extensions and click the “Import
extension” link as in the figure below. This will bring up a window that lets you specify
an extension to import. Extensions are defined by aix files. You can import an extension
from an aix file on your computer or you can specify a URL to import from the Web.

Figure 1: Importing an extension

2|Adding Exten s ions A.M. Narte


When you import an extension, App Inventor will give you the opportunity to
rename it, as shown in the figure.

Figure 2: Renaming an extension when you import it.

You’ll generally want to keep the default name. See the section below
on naming for cases where you might want to choose a different name.
Once you import an extension, it will appear in the components palette under the
extensions category as shown in the figure below.
After importing an extension, make sure to restart the companion app, else an
error may occur.

3|Adding Exten s ions A.M. Narte


Figure 3: An imported extension shown in components palette

2.2 Some sample extensions to try


Here are some sample extension components to experiment with. You can find these
in the MIT App Inventor Extensions repository at MIT App Inventor Extensions. MIT
will be adding more examples to this collection and would like to evolve it into a site for
people to share extensions. You can import the extensions using the URL indicated, or
you can download the aix files to your local computer and import the files from there.
• VectorArithmetic created by Ethan Hon. Takes in two vectors and can add them
to return a result vector.
• ImageProcessor created by Justus Raju. ImageProcessor can do a weighted
combine of two images, return the grayscale of an image.

4|Adding Exten s ions A.M. Narte


• SoundAnalysis created by Mouhamadou Oumar Sall. Multimedia component that
analyzes the pitch of a sound through the microphone and returns it. It can be
used as an input to different situations, for instance to control some components
with a specific sound whistle (pitch > 500Hz) or clap(pitch > 2000Hz).
• ScaleDetector created by Hal Abelson. This component adds a pinch detector
capability to a Canvas.

2.3 Building projects with extension components


Once you have imported an extension component into a project, it will appear in
the component palette under the Extensions section. You use the extension component
just like any other component by dragging it from the palette to the designer screen,
where it will appear under the designer screen as an non-visible component. (Currently,
all extension components are non-visible components.) You’ll also see it in the Blocks
Editor, together with blocks for its methods, properties and events. The figures below
illustrate how an imported ImageProcessor extension would appear in the Blocks Editor.

Figure 4: Blocks for an imported ImageProcessor component

5|Adding Exten s ions A.M. Narte


2.4 Deleting extension components
To delete an extension from the project, click the X beside the extension. This will
remove all uses of the extension and its blocks from the project and you will not see it
in Extensions palette panel anymore.

Figure 5: Click the X to delete an imported extension.

2.5 Sharing projects that use extension components


You export and import projects that use extension components just like other App
Inventor projects, as aia files. You need not do anything different in publishing the
project than in publishing other App Inventor projects. If someone imports a project
(aia file) that uses an extension, they do not have to import the extension (aix file)
separately: When they open the project, the extension will appear in the components
palette (under Extensions) together with the project’s other components.

2.6 Extension component repositories


Extensions can be downloaded from any URL (provided you have access to
it). Anyone who creates extensions can make the aix files available however they
choose. It might also be convenient to create collections of extensions, called extension
component repositories for private or shared use. For instance, an educator might
create a repository of extension components for use in a course.

6|Adding Exten s ions A.M. Narte


2.7 Naming extension components
Extensions are created by different people working independently. So it’s likely
that different extensions might have the same name. For example, there might be two
different extensions called ImageProcessor, and you’d like to import them both. There’s
no problem using the two extensions if you use them in different projects (other than
that you might get confused). But you can’t import two extension with the same name
into a single project. When you import and extension to a project, App Inventor will
give you the opportunity to rename it, as shown in Figure 2. This will let you keep the
extension names unique and also (should you prefer) choose names for the extensions
that are more convenient for you than the original names.

`
(warning when you give the extension a name that already exists in the project)
If you are developing extensions (not just using them) you can choose extension package
names to help minimize name conflicts.

2.8 Updating projects that use extensions


We have not addressed the issue of what happens when extensions are updated
and how people using the extension can be notified about this. There are two scenarios
to consider:
1. The extension developer creates a new version of the extension, but the old
version still works.
2. The App Inventor system is updated so that the extension no longer works.

In either case, people importing the extension will need to look to extension developer
to provide information about updating projects that import the extension

Warning: The extensions system is still experimental and the internal format of
extensions is changing. If you create a project (aia file) that imports an extension, it is
possible that the extension (and the project) will stop working when the extension system
is upgraded. You’ll have to rely on the extension developer to provide an updated
extension.

7|Adding Exten s ions A.M. Narte

You might also like