[Ohrrpgce] Android port

Seth Hetu seth.hetu at gmail.com
Fri Jun 7 07:16:29 PDT 2013


Having a build server would certainly be helpful; ADK+NDK+FB+ohr/sdl
is not the easiest toolchain to install. You might want to consider
three options for signing:
    * Server signs with the Debug ADK key. (Good for just "trying it out")
    * Server signs with the "OHRRPGCE.COM" key. (Something you guys maintain).
    * Server provides an unsigned APK, and you guys provide a small
utility for developers to sign unsigned APKs (with their own keys).

-->Seth

On Fri, Jun 7, 2013 at 5:52 AM, Ralph Versteegen <teeemcee at gmail.com> wrote:
> On 7 June 2013 04:18, Simon Bradley <neworiginal at gmail.com> wrote:
>> On Thu, Jun 6, 2013 at 4:44 PM, James Paige <Bob at hamsterrepublic.com> wrote:
>>>
>>> On Thu, Jun 06, 2013 at 04:16:32PM +0100, Simon Bradley wrote:
>>> >    On Thu, Jun 6, 2013 at 3:22 PM, James Paige <Bob at hamsterrepublic.com>
>>> >    wrote:
>>> >
>>> >      On Thu, Jun 06, 2013 at 01:28:10PM +1200, Ralph Versteegen wrote:
>>> >      > On 6 June 2013 02:19, James Paige <Bob at hamsterrepublic.com>
>>> > wrote:
>>> >      >
>>> >      > > For people who don't have their own domain name, we can provide
>>> > a
>>> >      > > namespace like com.hamsterrepublic.ohrrpgce.games.gamename but
>>> > I
>>> >      would
>>> >      > > also like to allow people to specify their own namespaces, so
>>> > for
>>> >      your
>>> >      > > own game, tmc, you might choose to use
>>> >      > > com.castleparadox.tmc.foresttemple or maybe Mogri would want to
>>> > use
>>> >      > > com.slimesalad.phantomtactics or Harlock might use
>>> >      > > org.crithit.spellshard
>>> >      >
>>> >      > Is there any point to allowing customisation of namespace? I
>>> > think it
>>> >      > just has to be unique, eg a com.hamsterrepublic.ohrrpgce.games.
>>> >      > prefix.
>>> >      > I see that the Android documentation says "To avoid conflicts
>>> > with
>>> >      > other developers, you should use Internet domain ownership as the
>>> >      > basis for your package names (in reverse)."
>>> >
>>> >      Well, from a making-things-work perspective, no, there is no point
>>> > to
>>> >      allowing people to specify their own namespaces, but from the
>>> >      perspective of people signing their own games and uploading them to
>>> > the
>>> >      google play store, I would like to give people that option,
>>> > especially
>>> >      for people who are going to sell their games rather than post them
>>> > as
>>> >      free apps.
>>> >
>>> >      Someone can still sell their game with a name in the
>>> >      com.hamsterrepublic.ohrrpgce.games.* namespace, but by doing so the
>>> > are
>>> >      trusting me as the owner of that domain to behave honorably about
>>> > it :)
>>> >
>>> >    The simplest way would presumably be to make the ohrrpgce a library
>>> >    project and wrap it with the new namespace, I think:
>>> >
>>> >    package com.newnamespace.myrpg;
>>> >
>>> >    public class MainActivity extends com.ohrrpgce.games.OHRActivity
>>> >
>>> >    etc.
>>> >
>>> >    I believe that would work. That seems to be how these examples I am
>>> >    looking at are set up.
>>> >
>>> >    (I am actually working on an Android project right now for my day
>>> > job, but
>>> >    it's been a while and I'm a bit rusty. And someone else has already
>>> >    written it; I'm just changing it.)
>>> >
>>> >    Cheers,
>>> >    Simon
>>>
>>> Hmm... If that is the only way to change the namespace, then it sounds
>>> like having the Android SDK installed and recompiling the project would
>>> be required. Maybe it isn't worth it if it is that much trouble?
>>>
>>> Even though I want people to be able to customize the namespace of their
>>> game, I guess that should be a low-priority goal :)
>
> Don't forget that while allowing the user to select the namespace is
> low-priority, packaged .apks still need to have unique namespaces,
> otherwise Android will consider them all as the same program.
>
>> Ah, yes. Maybe not ideal. It might be possible to change it with something
>> like proguard instead, in the compiled version.
>
> There's an additional problem. It turns out that in addition to all
> the Java code, lots of the C code in the SDL port requires the
> namespace to be compiled in too. I have no idea how JNI works, but it
> appears that Java code like...
>
> package com.hamsterrepublic.ohrrpgce.game;
> class AudioThread
> {
>     private native int nativeAudioInitJavaCallbacks();
>
> requires an implemention provided by a C function named
> Java_com_hamsterrepublic_ohrrpgce_game_AudioThread_nativeAudioInitJavaCallbacks!
>
> However perhaps by using Simon's library suggestion we can use a
> separate namespace for all of the code compiled into the .so files,
> leaving just the xml metadata and compiled Java files to worry about.
>
> In order to edit the namespace in compiled Java code we would have to
> modify .dex files (targetting .class files instead would mean still
> having to convert them to .dex and requiring the NDK). Looking around
> a bit I see there are a couple projects like smali/baksmali
> (https://code.google.com/p/smali) for disassembling/reassembling a dex
> file.  It sounds a whole lot simpler to just set up a web server which
> compiles the required java source files with desired on request :)
>
> Unless creating a single trivial java module which includes everything
> else is enough; in that case smali/baksmali could be practical, or
> even a small edit to the right offset in the file...
> _______________________________________________
> Ohrrpgce mailing list
> ohrrpgce at lists.motherhamster.org
> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org



More information about the Ohrrpgce mailing list