Table of Contents

[hemmerling] Google Android 6/7 - App Protoyping

MIT App Inventor ( for Android )

The Project

IDE, implemented as Online Service

IDE, implemented as Android App

The "Runtime" implemented as Android App

Online Cloud Services for Storage

General

Google Fusion Tables

TinyDB & The App Inventor Online Demo Service ( based on TinyDB )

  • App Inventor for Android: Tiny WebDB Service - “This service is only a demo. The database will store at most 250 entries; adding entries beyond that will cause the oldest entries to be deleted. Also, individual data values are limited to at most 500 characters”.
  • Your tags are visible to all other global users, so you have to define tags with unique application-specific name for your own application. I.e. don´t use “demo”, “test”,.. :-).
  • Derek Walter, Mark Sherman: “Any data tha you put in a TinyWebDB - even if you create your own service - can possibly be read by anyone... Additionally anyone can cal the erase command in TinyWebDB bcause that comamnd doues not require a passwod, either”.

Resources

The legacy discontinued App Inventor 1 for Windows, Linux and MacOSX

App Inventor 2 Setup on Windows, Linux and MacOSX

Literature about "App Inventor 1"

Literature about "App Inventor 2"

The Language

The App Inventor 2 Language

The App Inventor 2 Runtime

  • Typechecking is performed at runtime. If you try to do the arithmetic ”+” operation with a list and a numeric operator, you get the runtime error
    Runtime Error. The operation + cannot accept the arguments: [()][1]
    

My personal Experience with the App Inventor 2 Platform - Limits and Specials

  • The project name can´t contain spaces, but just underscores. However, the name of the app, as visible in the appstore, is defined in the settings of “Screen 1” at “AppName”. This app name may contain spaces.
  • According to my personal experience, what's missing with “App Inventor 2” or what can't be implemented?
    • “ActionBar” :-(.
    • Dynamic loading of images in a GUI List component.
    • Creating of Notifications which can be viewed by the status bar :-(.
      • With the discontinued “MIT Inventor 1”, it was possible to create Notifications, which can be viewed by pulling down the status bar. See MIT "AlertMe: Texting in the background, when app is not running".
      • With “MIT Inventor 2”, you may just create Notifications, which are displayed immediately by modale windows :-(. The alarm notification even only works on the screen where the notification is implemented. Exiting the app cancels the alarms :-(.
  • The “MIT Inventor 2” offers to build apps with “List View” only.
    • Mostly there is some space put automatically between GUI components, both in the IDE and later at runtime.
    • In opposite, with most GUI builders ( i.e. Visual Studio, QT Designer / QT Creator, Borland JBuilder, GUI builders for Python with Tkinter,.. ), you may create space-free GUI design. I.e. you must put a GUI label between 2 GUI components if you want to separate them by space.
  • By the “Build” option, you may create executable Apps.
    • The name of the App later in the App launcher & desktop is defined by the project name of “Android Inventor 2”, which can´t contain spaces. You need to apply the “AppToMarket” desktop application to transform the project name into a wanted name ( e.g. with campitalized letters and/or space (” ”) between parts of the name.
    • However, the Android emulator is shipped with the “MIT Android Inventor 2” is running “Android 2.2” ( API Level: 8 ).
    • I was told by experts, that for Google Play submission the “Version” must be a number higher than the previous APK.
    • For preparing the publication of such generated Apps by Google Play Developer Console.
      • There is the optimisation tip, marked red-crossed “Your Production APK needs to meet the following criteria “The minimum Android version and target Android version need to support tablets (check targetSdkVersion and minSdkVersion)”
          • “8. Target Android Versions Properly. To ensure the broadest possible distribution to tablets, make sure that your app properly targets the Android versions that support tablets. Initial support for tablets was added in Android 3.0 (API level 11). Unified UI framework support for tablets, phones, and other devices was introduced in Android 4.0”.
          • “At a minimum, check the <uses-sdk> element to make sure that:
            • “targetSdkVersion is declared with value 11 or higher (14 or higher is recommended), OR”.
            • “minSdkVersion is declared with value 11 or higher”.
          • “I've had a user complain that privacy settings are an issue in my app, and it generally is a result of default settings on android:minSdkVersion = 1.0 if not specified by the .apk file. I need to set minSdkVersion to 4 in order to avoid the privacy issue I am seeing”.
        • Suggestions #1 to get listet as tablet-ready app at “Google Play” and to be compatible with Google AdMob:
          • minSDK = 9 ( AdMob ).
          • targetSDK = 11 ( tablet ).
        • Suggestions #1 to get listet as tablet-ready app at “Google Play”:
          • minSDK = 11 ( tablet & AdMob).
          • targetSDK = 0 ( legacy setting for compatibility, according to “AppToMarket” ).
    • There is the optimisation tip, marked red-crossed “Your APK should support common tablet screen sizes (LARGE and XLARGE)”.
        • “Google Play will still not see your apps as being tablet ready until you use fragments to build the UI. App Inventor doesn't currently support them”.
        • “I did make some headway on this. I was able to publish my app yesterday to both Google Play and to Amazon and SUPPORT tablets. I have included a copy of the manifest to show how I did it”. “After adding the xLargeScreens, bumping the minSdkVersion to 9, I also needed to add the android uses-feature to enable tablets” → So it is important to disable non-existing features on tablets by ”<use-feature>” to convince Google Play that an app is tablet-ready :-)
            <uses-feature android:name="android.hardware.telephony" android:required="false" />
            <uses-feature android:name="android.hardware.wifi" android:required="false" />
            <uses-feature android:name="android.hardware.location" android:required="false" />
            <uses-feature android:name="android.hardware.location.network" android:required="false" />
            <uses-feature android:name="android.hardware.location.gps" android:required="false" />
            <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="false" />
          
    • There is the optimisation tip, marked red-crossed “Your APK should include customised drawable assets for common tablet screen densities”.
  • Where to store developer keys ( e.g. Twitter developer key and password “Consumer Key”, “Consumer Secret” )?
    • You shouldn´t store it in the “Android Inventor 2” project as visible data :-(, when you update the project by the “Gallery Update” function.
      • You might have work during development with 2 copies of the software, one with development key and one without?
    • You might offer an app compiled of a “Android Inventor 2” project, with or without encryption :-(.
      • You might store the developer key in a file of the file system :-(.
      • You might store the developer key in a TinyDB database :-(.
      • You might get the key from your own remote server, like toe communications service Twillo.
        • But of course you must identify yourself at the server... e.g. by your phone number, or the user must register at the website so that this username & password is stored at runtime on your smartphone ( in the TInyDB database, in a file, or temporary in a global list / global variable ).
        • And the developer key communication than runs by the server, not by the smartphone app...

The App Inventor 1 Language

Live Development, Testing and Debugging

MIT App Inventor 1

    • “Watching variables: If you click Do It on a block that shows the value of a variable, you'll get a result balloon showing that value of the variable at the time you clicked. But sometimes, especially in debugging, what you really want to see is how the value changes as your program runs. Clicking “Watch” opens a baloon whose result constantly monitors the value of the variable, so you can see if your program is changing it as anticipated”.

MIT App Inventor 2

Projects

Gallery

Gallery for "MIT App Inventor 1"
Gallery for "MIT App Inventor 2"

Stories

Tutorials

Tutorials for "MIT App Inventor 1"
Tutorials for "MIT App Inventor 2"

Android Apps with Tutorials

  • Google Play "App Inventor ActivityStarter" - “This app is for all developers who are developing a app using App Inventor and want to learn more about the activity starter component. App Inventor ActivityStarter lets you play with intent activities and has more than 150 example demo activities. This app is actually a kind of Activity Starter component. You can make your own activity with all the fields you have in the Activity Starter component in App Inventor and execute the activity”.

Resources

Android Inventor 1 only

General & Android Inventor 2

App Inventor 2 Ultimate, based on MIT App Inventor

The Tool

The local Web Servers

Resources

Apk Modder ( formerly: TabletSolution )

The just-commercial but affordable Tool

Resources

  • Setup
    • You must load the keystore file created by “Android Inventor 2” or “AppToMarket”, naming the key alias ( “Certificate Alias” ) and the password.
      • “WARNING! On the first use, after you selected your keystore file, you better verify if the .ks file has been copied under the installation path (default 'C:\Program Files (x86)\G-Way Android Apps\Apk Modder'). If the file there isn't just manually copy it in there”.
    • You have to create and name 3 directories:
      • Decompile dir.
      • Apk output dir.
      • Manifest Backup dir.
  • “APK options”
    • ”[x] This APK was made with AI v. nb149 or greater”.
    • You may change the default package name given by “MIT Android Inventor 2” to your own name, e.g. “mycompanydomain.com”.
  • “APK Modder” requires a license to generated a modifed APK. It isn't Shareware nor Crippleware: “Apk Modder requires a lot of effort and time spend on programming it... To help me improving and focussing on this project, please consider to donate something to the cause. Anything will do... but: you will receive the activation key with a minimum donation of 5EUR/$”.
  • Google Groups messages:

AppyBuilder / aiLive / AiLiveComplete!, based on MIT App Inventor 2

The Project

IDE, implemented as Online Service

Offline Tools ( IDE, AppToMarket ) & "Runtime" implemented as Android App

AiLiveComplete!

AppToMarket

The Tool
Keystore file
  • The default “Keystore file” filepath of “AppToMarket v4.1” is set to “C:\tools\AppToMarket_v32\myKeystores\myks.ks”, even if the software is installed at a different place ( e.g. C:\Program Files\AppToMarket\” ).
  • You may set the filepath to a keystore file exported from “Android Inventor 2”, though it has a different file extension, e.g. “C:\tools\AppToMarket_v32\myKeystores\android.keystore”
Key Alias & Keystore Password
  • At “1> Certificate Details”, set:
    • Key Size: “2048”.
    • Alias: “androidkey”.
    • Key pwd: “android”.
  • If you fail, you get the error message:
    BUTTON CLICKED: 4> Sign
    Signing the application...
    jarsigner error: java.lang.RuntimeException: keystore load: Keystore was tampered with, or password was incorrect
    ERROR: There was error in signing your app
  • Resources:

The Language

    • New components:
      • AdMob.
      • AdAmazon.
      • SQL Lite.
      • Near Field Communication (NFC).
      • File Manager.
      • Gallery View.
      • Spinner Picker (drop-down).
      • Toggle Button.
      • Light Sensor.
      • Pressure Sensor.
      • Temperature Sensor.
      • Proximity Sensor.
      • Pedometer.
      • Date Picker.
      • Time Picker.
      • Chronometer.
      • PhoneStatus.
      • Pedometer.
      • XY Chart.
      • Kitchen Sink - adhoc utility blocks (e.g. KeepScreenOn, Hide/Show notification bar, check to see if device has network signal or is a GPS enabled device).
      • @ Dynamic Custom Menus.
  • Hmmm... Experts claim that the software is a 1:1 copy of the MIT version without additional features?!

FTC App Inventor, based on MIT App Inventor 2

MIT Punya, based on MIT App Inventor 2

The Project

IDE, implemented as Online Service

The Language

  • Punya Tutorials - “We have extended the MIT App Inventor framework to enable rapid mobile application development in the humanitarian domain using Linked Data Technologies”.

Projects

Resources

The Mad Robots, based on MIT App Inventor 2

The Project

IDE, implemented as Online Service

  • The free online service Mad Robots AI 0.2 alpha - “If you have any projects you want to keep please make sure you download them by 25th July 2015 as a change not in my control means they may be deleted. Just be aware Mad Robots AI is still in development and can be used but may change without warning causing previously made project not to load. Please note: At the moment you can't build a final APK”.

Resources

Thunkable, based on MIT App Inventor 2 ( for Android, soon for iOS too )

The Project

    • “Drag and Drop to Create Native, Fast, Reliable Apps. Anyone can build powerful native apps with Thunkable. Simple to design. Simple to code”.
    • “iOS (Coming Soon) We're working hard to support iOS (including iPhones and iPads). Start building for Android today, and migrate when Thunkable for iOS launches”.

IDE, implemented as Online Service

Resources

Some other Tools

Resources

Activity Starter

Google Maps

Common Intents

GPS

Java Console for AI2 Application Debugging

Projects

Sprites

Tips & Tricks

  • Sometimes during editing with MIT Inventor e.g. at the block “When <Screen1> .initialize”, there is an error message. Solution: Reload the HTML page of the MIT Android Inventor IDE ( by pressing the browser's reload button) :-):
    Error from Companion: java.lang.RuntimeException: invalid syntax in eval form:<string>:1:142: call to 'set-and-coerce-property!' has too few arguments (3; must be 4)
    
  • Though the “MIT Inventor 2” is a simple web page to be loaded by an Internet browser, and though the “MIT AI2 Companion” properly installs and runs on Win-32bit systems, the whole system just works properly on Win64-bit :-(.
    • On Win-32bit with 2GB RAM, there is no display of the visualisation of the app prototype. On Win-32bit with 3GB RAM, the visualisation of the app prototype is displayed properly.
    • On Win-32bit with 2GB RAM, there are often error messages by the browser about time delays. On Win-32bit with 3GB RAM this doesn´t happen.
    • With “App Inventor 2 Ultimate” on Win-32bit with 2GB RAM, there is even the Windows error message
      Error message:
      Close programs to prevent information loss.
      Your computer is low on memory. Save your files and close these programs:
      Java(TM) Platform SE binary
      
    • But even on On Win-32bit with 3GB RAM, where the Android device simulator properly loads, the Android device simulator and especially the transfer process of the created app, is too slow for practical work :-(. I even didn´t manage to transfer and start a simple Android app :-(, even after accepting many time delays.

Webservices, URI & URL

General

AI2 on 32-bit Windows

2GB RAM

Android Inventor 2 ( online )

1. Modale window
Warning: Unresponsive script.
A script on this page may be busy, or it may have stopped responding. You can stop the script now, open the script in the debugger, or let the script continue.

Script: http://ai2.appinventor.mit.edu/:99
2. Modale window
An internal error has occurred. Report a bug?
3. Popup window

http://ai2.appinventor.mit.edu/ode/feedback.

Ooops! We tripped on a Bug!

Please help us by telling us what you were doing at the time this happend. We have already included some technical data with this report. If you do not submit this report, nothing will be reported to us. If you do submit a report, your comments along with the technical data will be sent to us.

Thank you for your help in making MIT App Inventor better!

Technical Data to be Submitted:

notes = Browser: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0
foundIn = nb149
faultData = com.google.gwt.core.client.JavaScriptException: (TypeError) : a is null
projectId = -1

AiLiveComplete!

1. Modale window
Warning: Unresponsive script.
A script on this page may be busy, or it may have stopped responding. You can stop the script now, open the script in the debugger, or let the script continue.
Script: http://localhost:8888/ode/F43EF693BA67AA296555432EDEB184F3.cache.js:3444
2. Modale window
An internal error has occurred. Report a bug?
3. Popup window

http://localhost:8888/ode/feedback.

Ooops! We tripped on a Bug!
Please help us by telling us what you were doing at the time this happend. We have already included some technical data with this report. If you do not submit this report, nothing will be reported to us. If you do submit a report, your comments along with the technical data will be sent to us.
Thank you for your help in making MIT App Inventor better!
Technical Data to be Submitted:
notes = Browser: Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0
foundIn = nls-883-g581d9c9
faultData = com.google.gwt.core.client.JavaScriptException: (TypeError) : this$static is null
projectId = -1

3GB RAM

Forums, Newsgroups


When this document changes ! Site Navigation ( My Business ! My Topics ! Imprint / Contact ! Privacy Policy ! Keyword Index ! ! Google+ Publisher "hemmerling" )

 
en/android06.html.txt · Last modified: 2017/12/11 17:52 (external edit) · []
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki