• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[#Red] Red language group

DocKimbel
27-Jun-2013
[8784]
Hmm, can't avoid Java dependency...maybe I should be able to use 
the preinstalled JRE on Windows platforms, but not sure...
Pekr
27-Jun-2013
[8785]
Nevermind, in any case, some description of how to proceed, is going 
to be needed. But it is a pity, as it pushes us to the different 
land, where no more the claim of sel-contained dev environment is 
true. Now we are in a lend of - do regular Android JAVA development 
and use Red DLL, when handy ...
Arnold
27-Jun-2013
[8786]
issue #492 added on https://github.com/dockimbel/Red/issues?state=open
DocKimbel
27-Jun-2013
[8787x2]
Ok build script pushed. You need to have JDK (correctly) installed 
currently for the script to work.
The jarsigner tool needs to access the Java runtime...we'll remove 
that dependency partially or fully in the future.
Pekr
27-Jun-2013
[8789]
Holly crap! That works!
DocKimbel
27-Jun-2013
[8790]
Haha :)
Pekr
27-Jun-2013
[8791]
Just generated APK, it downloaded some tools (not sure it is cross-platform, 
but on Windows it works), then I thought it hanged, but there was 
a dialog requesting ability to write to dics, then lots of output 
in console, now uploaded apk to my server, and tried on my HTC Sensation! 
Nice dark theme!
DocKimbel
27-Jun-2013
[8792x2]
Just wrote it in a hurry, I need to take a bus in about an hour...
Will work on the slides from this afternoon until Sunday.
Pekr
27-Jun-2013
[8794]
That has to be facebooked!
DocKimbel
27-Jun-2013
[8795x3]
Yeah, see the commit log, only Windows for now. Will add other platforms 
support tonight.
Outputs in console: you can disable it by setting verbose to false 
in the build script. I've left the verbose mode to make it easier 
for first testers to report errors.
Go facebook it, it should already be PRISM-ed anyway. ;-)
Pekr
27-Jun-2013
[8798]
what was the site for the emulators online?
DocKimbel
27-Jun-2013
[8799x3]
The first time the scripts runs, it download copies of binaries from 
the Android SDK, so it can take some seconds depending on your connection.
https://www.manymo.com
But that won't work with the apk you've buit, that online emulator 
requires x86 code.
Pekr
27-Jun-2013
[8802]
btw - observed some delay, when app starts. dunno if for the first 
time, but few secs before prompt and button appears ...
DocKimbel
27-Jun-2013
[8803]
You need to change a few things in the build script to generate x86 
apk.
Pekr
27-Jun-2013
[8804]
ah, ok ...
DocKimbel
27-Jun-2013
[8805x3]
Delay: yes, I need to optimize the starting process, it can be a 
bit slow on older devices.
For building an x86 system compatible apk, the following changes 
are required in the build script:


make-dir/deep bin-dir/lib/armeabi => make-dir/deep bin-dir/lib/x86
-t Android
 => "-t Android-x86"
/libRed
 => "Red"
Erratum: this change is not required: "/libRed" => "Red"
Pekr
27-Jun-2013
[8808]
HTC Sensation is not a slow device, everything runs fast :-)
DocKimbel
27-Jun-2013
[8809]
I have a Cortex A9 device (USB stick form factor) where the starting 
delay is not noticeable. Anyway, I just need to rearrange the bridge 
low-level code to make it much faster, not a problem.
Pekr
27-Jun-2013
[8810x3]
hm, thought that app is going to be named after the apk name, but 
apparently not - eval.apk -> Red on Android
I uninstalled older coppies, now it seems to start in cca 1 sec. 
Good enough ...
OK, you made my day, so - donated 50EUR ;-)
DocKimbel
27-Jun-2013
[8813x3]
Ah thanks! Good initiative! :-)
No, naming happens at several levels...Also Window title <> app name. 
:-)
We'll step by step abstract all those little details, so you'll be 
able to specify your whole app parameters from Red only without having 
to touch any Android XML file.
Pekr
27-Jun-2013
[8816x5]
we could use a Rebol header format for that somehow maybe, so that 
it could be part of the program, no need of special config file?
x86 version generation worked well, but the .apk does not work. I 
can see x86 dir, which is empty though. Shouldn't it contain a DLL?
hmm, renamed apk to zip, I can see x86 is not incluede in the package, 
just armeabi dir containing .so library ... needs some other tweaks 
....
Managed to produce an apk, which contains x86 + arm version of demo, 
and it works on both targets!
In order to be able to generate x86 target, do the following:

- copy %build.r into %build-x86.r


- change make-dir/deep bin-dir/lib/armeabi => make-dir/deep bin-dir/lib/x86

- change "-t Android" => "-t Android-x86"


- change "rejoin [%../red/bridges/android/ bin-dir/lib/armeabi" => 
"rejoin [%../red/bridges/android/ bin-dir/lib/x86"


- run %build-x86.r - generates an apk and if you ran arm version 
previously, will pack both versions into one .apk
Kaj
27-Jun-2013
[8821x13]
Bo, the above suggestions are all good. Your code looks OK until 
you start generating the third result image
img3: as-binary size1
is not the way to allocate an image. as-binary is just a type cast, 
like as-integer, not a declaration
So you're pointing img3 to a semi-random memory area that happens 
to have an address equal to the size of the first image. That will 
crash the first time you try to access the image
The correct way to allocate space would be
img3: allocate size1
and then you would have to check for a possible NULL result. Look 
inside the code of read-file-binary to see how that works
You also need to check the return values of read-file-binary and 
write-file-binary, as Arnold already mentioned
After you're done with img3, you should FREE the allocated memory. 
The same for img1 and img2 because the memory was allocated for you 
by read-file-binary
Alternatively, you could reuse either img1 or img2 to produce the 
result image if you don't need them afterwards. That would save the 
allocation and freeing of the third image
To make the algorithm foolproof, you could also check that size1 
and size2 are equal
Apart from the use of as-binary, everything should work. :-) I guess 
you were thrown by the initialisations:
img1: as-binary 0