= RubyMotion 3.3 = * Added the `app.features' variable that can accept an Array of String objects that will be used to generate `' elements in the project's manifest file. The default is an empty array. * Added the `app.services' variable that can accept an Array of String objects that will be used to generate the `' elements under the ` element of the project's manifest file. Values can be either class names (ex. ".MyService") or full package paths (ex. "com.yourcompany.Hello.MyService"). * Improved the build system to let users extend classes defined in Ruby files in Java. In order to do so, a .java file has to be created in a directory where Ruby files reside (ex. `app'). The basename of the .java file should be the name of the class to extend, and its content will be copied inside the class definition. (ex. `public int foo() { return 42; }'). The basename can also use the underscore-based notation, and the build system will then translate it to the actual class name (ex. `my_service.rb' -> `MyService'). * Added Array#{*, count, pop, shift, reverse, reverse!}. * Fixed Array#{first, last} in order to take an argument. * Fixed a bug in the runtime when calling ambiguous Java methods where a `nil' argument would not be considered acceptable for a Java reference. * Fixed a bug in the compiler where defining the `onActivityResult' method on an activity class would cause the build to fail, because the compiler would try to conform to a Java interface that has a wrong method type. * Fixed a bug in the build system where the `classes.dex' file would always be re-generated even if it was not needed. = RubyMotion 3.2 = * Added support for Android 5.0 (API 21). * Added support for the latest Android NDK (r10c). The runtimes have also been recompiled with the new NDK toolchain. * Added support for class variables. * Added support for the `alias' language keyword. * Added support for the `defined?' language keyword (should work on all expressions except global variables and messages/super). * Added the following Module methods: alias_method, public/private/protected (empty for now). * Improved the build system to better detect the NDK toolchain. * Fixed a crash in the REPL when accessing constant paths (ex. Foo::Bar). * Fixed the runtime to properly catch Java exceptions raised by Android APIs with the `rescue => Exception' expression. * Fixed the `rake clean' task to delete the .bridgesupport files that have been generated for vendored projects. * Fixed a bug in the method dispatcher where the optional Hash syntax was not properly recognized (ex: `foo(1, x:2, y:3, z:4)' to send `foo(1, { :x => 2, :y => 3, :z => 4 })'). * Fixed the build system to fail with a proper error message in case the Android SDK does not support the default API version. * Fixed a crash in the compiler when compiling `case/when' blocks that create local references. * Fixed a bug in the build system where the compilation of the main activity class would fail due to a missing import of the `java.lang.System' class. * Fixed the build system to print a better message in case it cannot retrieve the Android API version of the USB-connected device. * Fixed the build system to generate better names for the init functions of the Ruby source files. * Fixed the runtime to properly define non-Java classes. * Fixed a bug where defining a method with the `def' keyword on a module would not expose the method to classes that include such module. * Fixed the build system to compile the main app file with a proper exception handler, in case an exception is triggered from the main scope of a Ruby source file. * Fixed a bug in the compiler where we would be emitting invalid constant names for newer versions of the NDK assembler. = RubyMotion 3.1 = * Added the RUBYMOTION_VERSION and RUBYMOTION_ENV constants, which have the same values as RubyMotion for iOS / OS X. * Added support for the Android R class. Thanks to Mark Villacampa for the patch. * Added the `app.application_class' setting, which can be used to specify the name of a custom Android::App::Application subclass that should be used by the application. By default, the variable has a nil value, which means a default class will be used. * Improved app versioning. `app.api_version' will now map to the `minSdkVersion' manifest attribute. Added `app.target_api_version' which will map to `targetSdkVersion'. Both settings will have the latest API version as the default value, except for 20 (L). We recommend that you leave `app.target_api_version' intact and only modify `app.api_version'. * Improved the REPL so that "self" now always points to the current app activity. (Only works for API 14 or above.) * Added support for `&foo' constructs (which should dispatch #to_proc). * Added Symbol#to_proc. * Fixed a bug where `app.vendor_project' would generate a .bridgesupport file containing illegal XML characters (such as '<' or '>') inside attributes. Thanks to Mark Villacampa for the patch. * Fixed a bug where the dispatch of an overloaded Java method without arguments would fail. The runtime will now return the first method of the list (since we can't match any argument). * Fixed the `rake {emulator,device}' tasks to terminate the application in case the user leaves the REPL session. * Fixed a bug when dispatching certain methods using reflection (REPL) that return java.lang.Object. * Fixed a bug in the compiler where a crash would happen when trying to override a Java method accepting a Java array as argument. * Fixed a bug in the dispatcher when yielding certain runtime-generated blocks (ex. enumerators) where the return value would be destroyed. = RubyMotion 3.0 = * First public beta with Android support. Make sure to read the "Getting Started" guide on the Developer Center in order to properly set up the environment. You also recommend that you read the "Runtime" and "Project Management" guides.