pokemon-go-xposed-mitm icon indicating copy to clipboard operation
pokemon-go-xposed-mitm copied to clipboard

Ruboto+JRuby - almost got it

Open ELynx opened this issue 8 years ago • 8 comments

To set up application with ruboto use JRuby version 1.7.24. Exactly, later versions seem to fail miserably. With that in mind, and latest commits, it is possible to start JRuby. But script file is not found by engine:

D/RUBOTO: EntryPointActivity onCreate:
I/System.out: RubotoActivity onCreate(): com.elynx.pogoxmitm.ScriptTestActivity, finishing: false
D/RUBOTO: Looking for Ruby class: ScriptTestActivity
D/RUBOTO: Found: null
D/RUBOTO: Checking path: /storage/emulated/0/Android/data/com.elynx.pogoxmitm/files/scripts/script_test_activity.rb
D/RUBOTO: Checking path: scripts/script_test_activity.rb
D/RUBOTO: Classpath resource: null
E/RUBOTO: Missing script and class.  Either script or predefined class must be present.

So, help wanted - where to place script_test_activity.rb in project so JRuby will see it?

ELynx avatar Aug 31 '16 00:08 ELynx

@ELynx I don't think we should be using EntryPointActivity. I was able to run arbitrary Ruby scripts with this commit. The only caveat is that you must have the Ruboto Core installed on your phone.

There is a way to include full JRuby with the app (an extra 21.3 MB) but I haven't been able to get that working yet. Currently working on that.

When I ran it with EntryPointActivity, I got the same error. The error is because Ruboto expects the scripts to be in project-root/src, which is the old Android project structure. Install the Ruboto core on your phone and try running that commit.

griest024 avatar Aug 31 '16 01:08 griest024

Better yet, checkout the jruby branch and try to run that.

griest024 avatar Aug 31 '16 01:08 griest024

@griest024 I think they have later version on github... I saw a tutorial to include everything from Core to APK also. But I thought that "everything" is JRuby and JRuby std lib. Apparently, there is more to that.

ELynx avatar Aug 31 '16 05:08 ELynx

I did try ruboto core. From app log - they seem to use pretty old versions of everything

09-04 16:56:55.229 18679-18679/com.elynx.pogoxmitm I/System.out: Found JRuby in platform APK
09-04 16:56:55.239 18679-18679/com.elynx.pogoxmitm I/System.out: JRuby version: 1.7.19
09-04 16:56:55.239 18679-18679/com.elynx.pogoxmitm I/RUBOTO: Setting JRUBY_HOME: file:/data/app/org.ruboto.core-1.apk!/jruby.home
09-04 16:56:55.249 18679-18679/com.elynx.pogoxmitm I/System.out: Ruby version: RUBY1_9

Looks like *,jar files are not needed, they are not added tp APK if they are in root/libs

Play store core 1.0.5 confirms this

  • Updated to JRuby 1.7.19
  • Updated to Ruboto 1.3.0
  • Updated to ActiveRecord 4.1.10

So, I am looking at ruboto-core releases. I will try to clone at tag 1.0.5 and get some resources from there. Then get binary release of JRuby 1.7.19, and from there will try to get gem Ruboto with version 1.3.0. And with that ruboto to make an application. Whew...

ELynx avatar Sep 04 '16 14:09 ELynx

Even better idea. May be put built-in ruboto aside for some time... With Ruboto-core scripting seem to work, and for development, who cares? Even if they come from outer space, better focus on ruby-ing. I will try just that I think.

ELynx avatar Sep 04 '16 14:09 ELynx

Yeah for now, I think we should use Ruboto core. Its not that much of a hassle to install compared to rooting a phone and installing xposed framework. It would be nice to get built in JRuby (lots of great new features), but it may be more trouble than its worth. Lets write some hacks.

griest024 avatar Sep 06 '16 04:09 griest024

@ELynx So we are able to pass some data to a ruby script. I think this is really the last thing we needed before we can write some functional hacks, in ruby.

griest024 avatar Sep 06 '16 05:09 griest024

I think I will try to make a "test environment" for this setup #17 . Make a thread pool, and call JRubyAdapter.* from there. So testing will be faster, and without PoGo actually running.

For this we need a hack framework #18 and POGOProtos this or another way #19

ELynx avatar Sep 06 '16 08:09 ELynx