[Ohrrpgce] Plan for Android 8.0 target

Ralph Versteegen teeemcee at gmail.com
Sat Sep 29 06:11:44 PDT 2018


OK, I fixed the compile errors by cherry-picking some commits from
upstream. See the ohrrpgce branch in my github repo. It runs OK on Android
4.2... most of the other AVDs I have refuse to run :(
Actually, I did notice that there's no splash/unzipping screen (it skips
right past), but I assume that's because there are no data files to unzip,
as it's just ohrrpgce-game, not a packaged game.

Needs proper testing.
I think you should be able to use any NDK (I was using r12) and also even
keep the minimal Android set to 1.6 (although I certainly no longer care
about versions that old).

I merged in nearly all changes to DataDownloader.java in order to avoid a
mess of conflicts, excepting a couple to ask for runtime permissions to
access the sdcard (that might be quite important actually), and to support
compressing the game data files using liblzma instead of zip - the .apk
size reduction would be nice, but it won't compress audio any further, and
I would rather store the .rpgdir directly in the .apk so that it can be
read without unlumping or decompressing on first run at all. So that
removes a dependency.
So as a bonus, supposedly we now have the ability to download .obb
expansion packs from the Play Store.

On Sat, 29 Sep 2018 at 14:54, Ralph Versteegen <teeemcee at gmail.com> wrote:

> Ah, I discovered that you also have to change 'target' in
> project/project.properties
> Although that file has the header "This file is automatically generated by
> Android Tools. Do not modify this file -- YOUR CHANGES WILL BE ERASED!",
> that is false, it seems it hasn't been regenerated since it was checked
> into git in 2011.
>
> OK, it looks like that property does actually affect the Java compiler, as
> I now get a bunch of compile errors about org.apache.http being missing.
> I'm trying to merge the fix from that from upstream, but it's a mess
> because there are divergent changes...
>
> On Sat, 29 Sep 2018 at 05:21, James Paige <Bob at hamsterrepublic.com> wrote:
>
>> Ah, so that means you can't fudge the target number, huh? So sounds like
>> switching to r15 is still the easiest route?
>>
>> On Fri, Sep 28, 2018 at 10:53 AM Ralph Versteegen <teeemcee at gmail.com>
>> wrote:
>>
>>> Oh, although the resulting .apk has a targetSdkVersion of 26 in its
>>> AndroidManifest.xml, if I grep the output of build.sh I see:
>>> Setting project property: target -> android-17
>>> [gettarget] Project Target:   Android 4.2.2
>>> [gettarget] API level:        17
>>> etc
>>> android-17 is actually the oldest "SDK platform" (as called in the
>>> Android SDK Manage) which I have installed (as can also be seen by looking
>>> in /opt/android-sdk-linux/platforms/). Although that never stopped the
>>> .apks from running on my Android 2.2 phone.
>>>
>>> On Sat, 29 Sep 2018 at 02:38, Ralph Versteegen <teeemcee at gmail.com>
>>> wrote:
>>>
>>>> Well the even simpler solution is to just increase targetSdkVersion to
>>>> 26 in project/AndroidManifestTemplate.xml, without changing anything else,
>>>> and see whether it works. I've done so, using NDK r12 (which I already had
>>>> installed) and the latest SDK. It compiles and runs fine in an Android
>>>> 4.2.2 emulator. I can't get Android 8.0 to run in an emulator. Maybe
>>>> because only Atom system images are available, not ARM.
>>>> As far as I can tell, targetSdkVersion is an SDK version number, it
>>>> might have no effect at all on the NDK build tools. As I said, it changes
>>>> runtime behaviour, wguke minSdkVersion is what is compiled against.
>>>> The only information that I've managed to find about the requirement
>>>> for increasing it is "minSdkVersion <= targetSdkVersion <=
>>>> compileSdkVersion", where compileSdkVersion is the SDK version you have
>>>> installed and seems to be a setting specific to other Android build tools;
>>>> that string doesn't actually appear anywhere in the commandergenius tree.
>>>>
>>>> Which NDK version are you using, still the one I originally linked from
>>>> the wiki Compiling for Android page (r9)?
>>>>
>>>> Oh, and Android nightly builds never did upload - it kept failing to
>>>> connect to motherhamster.org. But now all nightly builds are down
>>>> again anyway :P
>>>>
>>>>
>>>> On Fri, 28 Sep 2018 at 23:51, James Paige <Bob at hamsterrepublic.com>
>>>> wrote:
>>>>
>>>>> Ah, so compiling with NDK r15 does sound like a better short term fix.
>>>>> That might be easier, and could buy us time.
>>>>>
>>>>> I also really like the idea of moving our modifications to sdl_android
>>>>> into Java files in the ohrrpgce code.
>>>>>
>>>>> On Thursday, September 27, 2018, Ralph Versteegen <teeemcee at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Changing the target SDK changes system behaviour.
>>>>>> According to
>>>>>> https://developer.android.com/distribute/best-practices/develop/target-sdk#prenougat,
>>>>>> setting the target to API 24+ (Android 7.0+) might break our function to
>>>>>> email files. I'm not really sure, because the code calls
>>>>>> "FileProvider.getUriForFile"... does that count as using FileProvider
>>>>>> (required), or does that count as using a file:// URI (not allowed)? I
>>>>>> think it's probably OK, but will need testing.
>>>>>>
>>>>>> On Fri, 28 Sep 2018 at 15:48, Ralph Versteegen <teeemcee at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I found something else in a roadmap:
>>>>>>> "2019 onwards: Each year the targetSdkVersion requirement will
>>>>>>> advance. Within one year following each Android dessert release, new apps
>>>>>>> and app updates will need to target the corresponding API level or higher."
>>>>>>>
>>>>>>> On Fri, 28 Sep 2018 at 15:17, Ralph Versteegen <teeemcee at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> It drives me crazy that Android and its SDK and NDK use so many
>>>>>>>> different version numbers and names, which don't match up in any way!
>>>>>>>>
>>>>>>>> A week ago there was this commit to pelya's port:
>>>>>>>> "SDL: support for NDK r18, set minimum API level to 16 (Android
>>>>>>>> 4.1), which is the minimum level NDK r18 supports"
>>>>>>>> Switching to r18 is a big change because it gets rid of GCC and
>>>>>>>> libstdc++. That's why so a bunch of work has been required in the SDL port.
>>>>>>>> But if we can continue to use an older NDK then we don't need all these
>>>>>>>> upstream changes from the SDL port.
>>>>>>>>
>>>>>>>> NDK r18+ supports Android 4.1+ (API 16+)
>>>>>>>> NDK r15-17 support Android 4.0.0+ (API 14+)
>>>>>>>> NDK r12-14 support Android 2.3+ (API 9+)
>>>>>>>> Also, NDK r17 removed ARMv5 (armeabi) support, which is what we
>>>>>>>> build for by default. Various deprecations as well.
>>>>>>>> NDK r15 *(July 2017) *added Android 8.0 native APIs.
>>>>>>>>
>>>>>>>> So clearly NDK r15 can be used with Android 8.0 as the target, and
>>>>>>>> it might even be possible to target Android 8.0 with earlier NDKs and SDKs.
>>>>>>>> So I recommend we try to build with r15.
>>>>>>>>
>>>>>>>> Of course it would be nice to not be stuck on a years-old fork of
>>>>>>>> pelya's port.
>>>>>>>> Many of our additions to pelya's SDL 1.2 port should be moved to
>>>>>>>> .java files contained in the OHRRPGCE source code rather than mixed in with
>>>>>>>> unrelated code in project/java/Video.java
>>>>>>>>
>>>>>>>> Oh, also I just found this:
>>>>>>>> "The Play Store will require 64-bit support when uploading an APK
>>>>>>>> beginning in August 2019" "*32-bit support is not going away. Apps
>>>>>>>> that include a 32-bit library just need to have a 64-bit version too"*
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, 28 Sep 2018 at 12:43, James Paige <Bob at hamsterrepublic.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Oh, and I forgot to mention.
>>>>>>>>>
>>>>>>>>> Android 8.0 is the "target" but the apk files will still run on
>>>>>>>>> older versions of android too.
>>>>>>>>> The current "minimum" version supported by pelya's commadergenius
>>>>>>>>> sdl_android is Android version 4.1
>>>>>>>>>
>>>>>>>>> (I looked up statistics, and apparently the percentage of android
>>>>>>>>> devices running versions older than 4.1 is something like half of 1%)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Sep 27, 2018 at 8:31 PM James Paige <
>>>>>>>>> Bob at hamsterrepublic.com> wrote:
>>>>>>>>>
>>>>>>>>>> So starting pretty soon, only android apks that target Android
>>>>>>>>>> version 8.0 will be allowed in Google play.
>>>>>>>>>>
>>>>>>>>>> I have done a little research, and I learned that pelya has done
>>>>>>>>>> a lot of recent work on updating the commandergenius sdl for android port
>>>>>>>>>> to work with the latest Android NDK.
>>>>>>>>>>
>>>>>>>>>> So here is my current plan:
>>>>>>>>>> * I will clone a new fork of pelya's source
>>>>>>>>>> * I will patch in or re-implement all the modifications that the
>>>>>>>>>> ohrrpgce needs (this is mostly gamepad stuff and a few platform-detection
>>>>>>>>>> functions. The ouya store purchase stuff can be removed completely)
>>>>>>>>>> * I should be able to re-build the games that I have already
>>>>>>>>>> packaged as apks
>>>>>>>>>>
>>>>>>>>>> I am glad I have a plan now, I was worried about that part-- but
>>>>>>>>>> the bad news is that this plan is a lot of work, and my current free time
>>>>>>>>>> is very limited right now.
>>>>>>>>>>
>>>>>>>>>> I am budgeting my time and so one hour each Thursday evening is
>>>>>>>>>> "OHRRPGCE time" for the foreseeable future.
>>>>>>>>>>
>>>>>>>>>> Persons wondering how they can help without knowing how to comb
>>>>>>>>>> through git commits and patch them onto a newer tree can help by sending me
>>>>>>>>>> kind words and encouragement via e-mail on Thursday mornings to get me
>>>>>>>>>> hyped up ;)
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Ohrrpgce mailing list
>>>>>>>>> ohrrpgce at lists.motherhamster.org
>>>>>>>>>
>>>>>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>> Ohrrpgce mailing list
>>>>> ohrrpgce at lists.motherhamster.org
>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>>
>>>> _______________________________________________
>>> Ohrrpgce mailing list
>>> ohrrpgce at lists.motherhamster.org
>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>
>> _______________________________________________
>> Ohrrpgce mailing list
>> ohrrpgce at lists.motherhamster.org
>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20180930/261b08f3/attachment-0001.html>


More information about the Ohrrpgce mailing list