Problem with ÙŽmake apk for Android with Monkey0506 guide

Started by Mehrdad, Mon 26/06/2017 07:47:44

Previous topic - Next topic

Mehrdad

Hi
Regarding to this links by monkey0506 :

https://bitbucket.org/monkey0506/ags/downloads/?tab=downloads
https://github.com/monkey0506/AGS.Plugin.AndroidBuilder

I used this plugin and got an apk . But when I test it on devices I have a black screen without any error . I test it on Android 4 and 5 .
Where is my wrong?
My official site: http://www.pershaland.com/

monkey0506

1) What is the total file size of the game assets? (file size of the Compiled/Data folder)
2) Are you using the OBB file that the plugin builds, or are you building the OBB file yourself?
3) Are you trying to embed the OBB file into the APK (e.g., RSA public key is blank), or load it from external storage (RSA public key is filled in)?
3a) If loading the OBB from external storage, are you certain that you've placed the OBB file in the correct location?
4) Do both of the console windows that pop-up during the Android build process show that their respective processes were successful?

Mehrdad

1) size of assets is 3MB
2) I used your plugin OBB
3) RSA public key is empty . So OBB will be embed to apk . right?
4) Yes

When I open project in Android studio it embed an OBB to project automatic.
My official site: http://www.pershaland.com/

Crimson Wizard

Maybe try enabling log in the acsetup.cfg and see if there is something useful?
Log is enabled as "log=1" under "[misc]" group.
I am not sure where the log file will appear. When I tested Android port on emulator, it appeared in "ags" folder on sdcard, but since you are creating a standalone APK with your game, it may be written to game location, or somewhere else around (I do not know Android rules for this).

Also I think you need to clarify which version of AGS this Android creator plugin supports, and which version is your game made for.

Mehrdad

Maybe I'm wrong but it doesn't make any log.

p.s :  I use demo game of AGS 3.4 (Final version)
My official site: http://www.pershaland.com/

monkey0506

APK files are just ZIP archives. Could you open the APK with a ZIP archive tool (7-zip, etc.) and provide a list of the contents of the APK itself? Also, what is the size of the OBB file?

Quote from: Crimson Wizard on Mon 26/06/2017 16:04:07Also I think you need to clarify which version of AGS this Android creator plugin supports

The AndroidBuilder plugin itself requires the AGS editor version 3.4.1 (has a dependency on #354), but it should be agnostic of the actual engine version. The plugin includes prebuilt native libraries from September 2016 (when the last plugin version was published), which were from the latest 3.4.1 dev branch at that time...




I was looking over the plugin source to try and figure out what might be the problem, and I think I've figured it out. Are you using AGS 3.4 to build the APK, or do you just mean that you took the demo game project from 3.4? Despite the 3.4.1 dependency, I don't see that the plugin would actually report an error if using an earlier version. I don't recall if the AGS version was actually updated to 3.4.1 at the time, but the plugin's "RequiredAGSVersion" attribute is set to 3.4.0, and the build process itself doesn't detect if the "Compiled/Data" directory doesn't exist. Therefore, I believe the problem is simply that you're using the wrong AGS version and the plugin isn't detecting that, so you're getting an empty OBB file.

monkey0506

The AndroidBuilder plugin was last updated in September 2016 and depends on features of AGS 3.4.1, however, the AGS version was not increased to 3.4.1 until October 2016, so the plugin (at the time it was last updated) did not have a way to detect the proper minimum AGS version. However, it could also be updated to have a formal dependency on the game data file itself (e.g., Compiled/Data/GameName.ags), which it currently doesn't have. I will push an update to the plugin, but please make sure you are using AGS 3.4.1 (or later, for you future readers!).

P.S. The dependency on 3.4.1 is mentioned in the plugin's README Prerequisites section. :=

Crimson Wizard

I do not know if that is safe to use AGS 3.4.1 engine (port) right away, because after the changes I made to OpenGL there is no guarantee it will work on mobile ports yet. This requires additional work to test and get it working.

For the instance, recently I added shaders for sprite tinting/light support in OpenGL, which was missing in earlier. For this I used a new group of functions, and I cannot even tell whether that will build and run properly on Android without including more headers or doing some modifications first.

Also, I do not build Android APK myself, and the build server has stopped working a while ago, because Nick Sonneveld did not have time to update it. So unless someone provides new APK, game built with 3.4.1 editor won't even run on Android. Games built with 3.4.0 even might have some issues if APK was made last September, because last 3.4.0 update happened in March this year.

To summ up, one would need a 3.4.1-compatible APK and OpenGL needs testing and fixing for mobile ports.

monkey0506

I think there may be some misunderstanding as to how the AndroidBuilder plugin is working. The APK it provides depends on prebuilt native libraries (including the engine, of course), and does not do anything in the way of pulling those libraries from the editor directory... That is, WindowsBuildTarget grabs acwin.exe and LinuxBuildTarget tries to pull the Linux native engine files from the editor directory, but the AndroidBuilder plugin does not. The plugin's native libraries are packaged inside of the "template.zip" which contains a template from which an Android Studio project is created. The native libraries are contained in the libs folder inside template.zip. The end-user may later replace the extracted native libraries in the "Compiled/Android/Studio/libs" folder, but that goes beyond the plugin's scope of control.

Further, the AndroidBuilder plugin does not use the "AGS game launcher" APK in any way, so that project is unrelated.

The native libraries that are currently packaged with the AndroidBuilder plugin are from September of last year, well before you started any work on OpenGL.

Finally, the AndroidBuilder plugin is experimental and is explicitly designated as not fit for regular production releases. However, it absolutely depends on the 3.4.1 editor to work properly.

That said, a future "stable" release of the plugin would expect to be able to read prebuilt native libraries from the editor directory, but the plugin is not that far developed yet.

Crimson Wizard

Hm, so is it possible to run this plugin from 3.4.1 Editor to package a game compiled in 3.4.0 Editor without changing game data itself? If something like that could be done, then it might be a workaround for now.

monkey0506

3.4.1 and the plugin itself are both currently in "unstable" status. If something doesn't work properly then that isn't actually much of a surprise, is it? That's the whole reason for not calling it stable. And the status of the plugin itself isn't really the concern of the AGS dev team proper, but just myself (the sole author/maintainer of the plugin). Really, this thread doesn't even belong in this forum, and should probably be merged with the plugin's thread.

P.S. I do understand the concerns about basing work off of an unstable release of AGS, don't get me wrong, but the plugin itself is still considered to be in "alpha" stage. The whole process is still very messy and potentially error prone (e.g., creating an APK with no game files if wrong AGS version is used, no compile error if building OBB or APK fails, etc.). However, there are technical reasons why 3.4.1 is needed...

Spoiler
The "OBB" (Opaque Binary Blob) file used by the APK is required to be formatted as a FAT16 virtual drive, into which the game files are mounted. This is done by a modified version of the Android SDK's "jobb" (Java OBB) tool. The jobb tool recurses an entire directory and adds its contents to the FAT partition that it creates, thus the game's data files being moved into the Compiled/Data folder was necessary to avoid further modifying the jobb tool. Which isn't to say that that's the only reason why the files are in the Compiled/Data subdirectory -- that change does make sense in its own right and should have been done from the start, an error on my part. I just mean that since 3.4.1 is the earliest version to have the data files built into its own directory, that is the lowest supported version the plugin can use.

Regarding the modifications to the jobb tool:  The jobb tool distributed with the Android SDK is bugged in that it uses a FAT library's function to determine (from file size) which FAT partition type to use (incorrectly, I might add! It returns FAT32 for anything over 511 MB...) despite the fact that Android API's "mountObb" function requires a FAT16 partition type. The modified jobb tool that the plugin uses correctly selects a FAT16 partition type for anything under 2 GB, which is the upper limit of a FAT16 partition and also the upper limit on the expansion file (the OBB file) uploaded to the Google Play Store alongside an APK. Games over 2 GB would require an alternative approach to supplying the game assets to the end-user and cannot use the GPS expansion file.
[close]

Mehrdad

My official site: http://www.pershaland.com/

monkey0506

Right, for some reason I forgot that the engine can't load any game files from a newer AGS than itself... even though CW mentioned it above. :-[

The plugin's native libraries are out of date. I'll rebuild them and upload them somewhere, but be advised of the things CW stated above that 3.4.1 is unstable and may not work as expected.

Mehrdad

Can you make it for last stable version (3.4.0.16) ? New version is still on beta and I'm afraid doesn't work as CW said.
My official site: http://www.pershaland.com/

monkey0506

Did you actually build 3.4.1 and test it on Android, or you're just saying things that you don't know what they mean? The plugin depends on editor features of 3.4.1, the actual build process does not. I've explained this to you before. However, since the build server is out of date and sonneveld has completely broken the ability to build the Android libraries from Windows, there's not really much that can be done in the way of building the native libraries.

Mehrdad

Yes I build with 3.4.1 and test it on my cellphone . I put my test apk too . There is not any reason that I want say lie to you :-\
My official site: http://www.pershaland.com/

monkey0506

Quote from: Mehrdad on Wed 28/06/2017 06:38:12Yes I build with 3.4.1

No. That's not what I asked. The 3.4.1 release you installed does not include any Android port of the engine. The plugin does. The engine that the plugin contains is out-of-date. This leaves you with two options:


1) Rebuild the Android port of 3.4.1 OR
2) Use the custom 3.4.0 editor from the plugin's downloads page (select "AndroidBuilder-Plugin.Editor.rar")

There are known issues to either approach:

1) Rebuilding the Android port is currently only possible from Linux AFAICT. The 3.4.1 branch is unstable and the Android port may not run (this has not been confirmed). If you rebuild the 3.4.1 Android port, you may encounter issues which already exist in 3.4.0, or you may encounter entirely new issues.
2) The custom 3.4.0 editor is not the same as the current 3.4.0 release (patch 4), and the two are not compatible. The custom editor is out-of-date with the 3.4.0 patch 4 release, and contains source code modifications which have been adopted into 3.4.1 (some, not all of the source code changes of 3.4.1). The Android engine port the plugin contains is from the same out-of-date version of 3.4.0, and may not be compatible with 3.4.0 patch 4. Additionally, the plugin itself is unstable, which means there may be unknown/unforeseen issues.




What you have is an APK with a game data file reporting AGS version 3.4.1 and an engine reporting AGS version 3.4.0. The engine is not able to load the game data file, which is why you get only a black screen. The error is not properly detected by the plugin nor the Android engine port (or, in the case of the latter, is not reported to the user). Even if the 3.4.0 patch 4 Android port were rebuilt, the plugin still depends on those changes from 3.4.1.

The plugin depends on the jobb tool, which recurses a directory and adds its entire contents to the OBB file. This tool cannot simply be given a list of files to add without major changes to the source of the tool, they must reside in their own, separate directory (e.g., "Compiled/Data" and not "Compiled"). Therefore there is no simple way to solve this problem at the present time. You must either use a custom build of the editor, or else you must rebuild the 3.4.1 Android port. I do not have any plans to fix the plugin to work with 3.4.0, for the reasons described here. I am actively working to try and rebuild the 3.4.1 Android port, and that is the approach that I suggest be taken moving forward, despite 3.4.1's current unstable status.

Crimson Wizard

Quote from: monkey0506 on Tue 27/06/2017 18:06:16
Did you actually build 3.4.1 and test it on Android, or you're just saying things that you don't know what they mean?
Quote from: Mehrdad on Wed 28/06/2017 06:38:12
Yes I build with 3.4.1 and test it on my cellphone . I put my test apk too . There is not any reason that I want say lie to you :-\
Quote from: monkey0506 on Wed 28/06/2017 07:43:53
Quote from: Mehrdad on Wed 28/06/2017 06:38:12Yes I build with 3.4.1

No. That's not what I asked.


I can honestly say that I also did not understand the meaning of your question until now. Even though I know the situation about various version differences, but most people around here do not know such details (and probably should not). I think explaining these only makes them more confused.

I believe that a regular user simply needs a short and clear answer on two questions:
- is it possible to port a 3.4.0 game with your plugin without rebuilding it (using stable and 3.4.0-compatible engine).
- if not, is it possible to rebuild and port 3.4.1 game with your plugin, and will it work properly with 3.4.1 engine.

From what I gathered, answers to both questions is currently NO. Basically, this is where a person should stop trying and wait for further updates.

monkey0506

I would have to go back and investigate the plugin sources to be certain, but I think that it only extracts the prebuilt native libraries (e.g., the Android engine) if those files don't exist. So, in theory it would be entirely possible to just replace those native libraries in the "Compiled/Android/Studio" project folder and rebuild a working APK.

Part of my frustration in this comes from the fact that I've explained the entire process several times to Mehrdad, though I understand that those unseen interactions leave me sounding like a right arse in all this. The plugin itself is just one (minuscule) step further abstracted away from the osd-scourgeoftheunderworld-as Android Studio project, which explains the entirely simple deployment process. The plugin is released as version 0.0, tagged as alpha, and was last updated between build versions of AGS. "Basically, this is where a person should stop trying and wait for further updates" is pretty much the understatement of the year. The process is simple, but with building the Android port from Windows being currently impossible the barrier really falls well beyond the scope of the plugin.

Crimson Wizard

So, the biggest problem is building those native libraries for Android port?
Unfortunately I do not know much about whole process. I emailed Sonneveld, as I mentioned in PM, hopefully he can come and discuss these matters.
Those libraries is probably something that should not be rebuilt every time. Would it be a viable solution if Nick could upload precompiled libraries?

SMF spam blocked by CleanTalk