Ruboto

General

Category
Free
Tag
Toolkits For Other PL
License
N/A
Registered
Jul 5, 2014
Favorites
0
Link
https://github.com/ruboto/ruboto
See also
Go mobile
Neko
JavaCPP
python-for-android
Pindah

Additional

Language
Ruby
Version
v0.0.3 (Dec 19, 2010)
Created
Jun 18, 2010
Updated
Dec 20, 2021
Owner
Ruboto (ruboto)
Contributors
bootstraponline
Jan Berkel (jberkel)
Daniel Passos (danielpassos)
Anup Cowkur (anupcowkur)
Wei Zhang (saga64)
Adam Parrott (AtomicPair)
Scott Moyer (rscottm)
Charles Oliver Nutter (headius)
Daniel Jackoway (jackowayed)
Bruno Antunes (sardaukar)
Maddi Joyce (maddijoyce)
Andrew (mcandre)
Raúl Gutiérrez Segalés (rgs1)
Li Rongxi (Nyangawa)
Robert Rowe (CaptainJet)
Uwe Kubosch (donv)
Paritosh Piplewar (passion8)
Ben Turner (phantomwhale)
Show all (33)33
Activity
Badge
Generate
Download
Source code

Advertising

Ruboto 2

Ruboto 2 is a redesign based on an Android Studio workflow. This means that the JRuby and Ruboto components will integrate into the standard gradle tooling used by regular Android Studio projects.

Starting a new Ruboto project

  • Download and install Android studio.

  • Choose "Create New Project" in the startup screen.

    • Choose "Phone and Tablet" and "No Activity" for the project template.
    • Choose "Java" for your language and "Minimum SDK" should be "API 27" or higher.
    • "Use legacy android.support libraries" ? "No", for now.
  • Add the these dependencies to your app/build.gradle file:

      implementation fileTree(dir: 'libs', include: ['*.jar'])
      implementation 'com.linkedin.dexmaker:dexmaker:2.19.1'
      implementation 'me.qmx.jitescript:jitescript:0.4.1'
      implementation 'com.jakewharton.android.repackaged:dalvik-dx:7.1.0_r7'
  • Install app gems:

    jruby -S gem install ruboto-2.0.0.dev.gem rake bundle
    

    NOTE: this is not the Rubygems version, ruboto2 must be generated by cloning this repo and runing rake in the cloned directory root with no arguments

  • Initialize Ruboto:

    bundle exec ruboto init
    

    This will copy the core files to your project.

  • Add app/gems.rb

    source 'https://rubygems.org/'
    
    gem 'activerecord', '~>5.2'
    gem 'activerecord-jdbc-adapter', '~>52.6'
    gem 'sqldroid', '~>1.0'
  • Add app/update_jruby_jar.sh:

    #!/usr/bin/env bash
    set +e
    
    VERSION="9.2.9.0"
     FULL_VERSION="${VERSION}"
    # FULL_VERSION="${VERSION}-SNAPSHOT" # Uncomment to use a local snapshot
    # FULL_VERSION="${VERSION}-20190822.050313-17" # Uncomment to use a remote snapshot
    JAR_FILE="jruby-complete-${FULL_VERSION}.jar"
    DOWNLOAD_DIR="$HOME/Downloads"
    DOWNLOADED_JAR="${DOWNLOAD_DIR}/${JAR_FILE}"
    
    [ ! -d $HOME/Downloads ] && mkdir $HOME/Downloads  # Create the directory if we don't find it
    [ ! -d ./libs ] && mkdir ./libs                    # Create the directory if we don't find it
    
    cd libs
    rm -f bcpkix-jdk15on-*.jar bcprov-jdk15on-*.jar bctls-jdk15on-*.jar cparse-jruby.jar generator.jar jline-*.jar jopenssl.jar jruby-complete-*.jar parser.jar psych.jar readline.jar snakeyaml-*.jar
    
    if test -f "${DOWNLOADED_JAR}"; then
      echo "Found downloaded JAR"
    else
      echo No "${DOWNLOADED_JAR}" - Downloading.
      curl "https://oss.sonatype.org/service/local/repositories/releases/content/org/jruby/jruby-complete/${VERSION}/jruby-complete-${VERSION}.jar" -o "${DOWNLOADED_JAR}"
    fi
    cp ${DOWNLOADED_JAR} .
    
    unzip -j ${JAR_FILE} '*.jar'
    
    # FIXME(uwe): Why do we delete these files?
    zip generator.jar -d json/ext/ByteListTranscoder.class
    zip generator.jar -d json/ext/OptionsReader.class
    zip generator.jar -d json/ext/Utils.class
    zip generator.jar -d json/ext/RuntimeInfo.class
    
    cd - >/dev/null
    
    cd src/main/java
    find * -type f | grep "org/jruby/" | sed -e 's/\.java//g' | sort > ../../../overridden_classes.txt
    cd - >/dev/null
    
    while read p; do
      unzip -Z1 libs/${JAR_FILE} | grep "$p\\.class" > classes.txt
      unzip -Z1 libs/${JAR_FILE} | egrep "$p(\\\$[^$]+)*\\.class" >> classes.txt
      if [[ -s classes.txt ]] ; then
        zip -d -@ libs/${JAR_FILE} <classes.txt
        if [[ ! "$?" == "0" ]] ; then
          zip -d libs/${JAR_FILE} "$p\\.class"
        fi
      fi
      rm classes.txt
    done < overridden_classes.txt
    
    rm overridden_classes.txt
  • Make app/update_jruby_jar.sh executable:

    chmod u+x app/update_jruby_jar.sh
    
  • Generate jruby.jar:

    cd app
    ./update_jruby_jar.sh
    
  • Generate the startup activity:

    cd ..
    bundle exec ruboto gen class Activity --name StartupActivity
    
  • Add the startup activity intent filter to the new activity tag:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <action android:name="android.intent.action.VIEW" />
    </intent-filter>
  • Declare the SplashActivity in app/src/main/AndroidManifest.xml

    <activity
        android:name='org.ruboto.SplashActivity'
        android:configChanges='orientation|screenSize'
        android:exported='false'
        android:noHistory='true' />
  • What next?

Adding Ruboto to an existing Android Studio project

HOWTO missing. Pull requests welcome!

Ruboto 1.x

Looking for Ruboto 1.x? Switch to the ruboto_1.x branch.