Few cents about my commits

Framework target: EXC_BAD_ACCESS on NPE in try-catch block

|

Application with RoboVM target crashes with EXC_BAD_ACCESS, investigation shows that this happens on null pointer exception (NPE) that enclosed in corresponding try-catch block and shall not break away? Already covered in Tutorial: Crash Reporters and java exceptions.
Root case is same – signals.
Solution is same – use Signals.installSignals.
Post bellow describes how to deal with it and introduces changes into framework template.

iOS 11.4 bindings

|

bugfix: breakpoints were not working in Kotlin code

|

Previous debugger maintenance allowed to build kotlin code for debug and attach debugger for it. It was even possible to step-in into kotlin code. Absence of any kotlin experience didn’t allow to test it deeper. As it kept failing on simplest case, setting of breakpoint, with following message:

No executable code found at line XX in class YYYY

Root case of this – debug plugin and debugger considered JVM code as compiled from Java file and returned .java file extension everywhere.
The fix is bellow:

bugfix #295 debugger case: crash due Kotlin data classes and broken Java classes

|

bro-gen: fixing enum typedef

|

Today bug-fix/maintenance delivers following problem, following such obj-c code:

typedef enum LogLevelValues
{
    IS_LOG_NONE = -1,
    IS_LOG_INTERNAL = 0,
    IS_LOG_INFO = 1,
    IS_LOG_WARNING = 2,
    IS_LOG_ERROR = 3,
    IS_LOG_CRITICAL = 4,

} LogLevel;

- (void)sendLog:(NSString * )log level:(LogLevel)level tag:(LogTag)tag;

is being converted into following broken Java one:

Fix for Stickers AppExtensions: fails to complete Apple Store validation

|

Event after fixing signature case apple keeps rejecting applications with Stickers app extension with message:

Invalid iMessage App - Your iMessage app contains an invalid sticker pack. The app may have been built or signed with non-compliant or prerelease tools. For more information, go to developer.apple.com.

user @sofroma investigated case and has found that Xcode additionally copies support files into Apple store package. The package was missing following files:

  • MessagesApplicationExtensionSupport/MessagesApplicationExtensionStub
  • MessagesApplicationSupport/MessagesApplicationStub

These files are part of iPhoneOS platform and available as part of Xcode at following location: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Application Support

The fix is to copy these file during packing ipa, check this commit for details.
Sadly these files are part of XCode and can’t be used on Windows/Linux in corresponding RoboVM port

Maintenance: bugs in AppExtensions, Auto signature/profile selection and bro-gen

|

Today bug-fix/maintenance delivers following:

  1. Fixed automatic profile/signature selection as it was picking first random signature with iPhone Developer|iOS Development prefix;
  2. Improved app-extension support: apple was rejecting binaries due missing provisioning profile and entitlements.
  3. Small improvements to bro-gen that can now pick string macro into constants

Details:

RoboVM gradle plugin maintenance

|

RoboVM gradle plugin maintenance PR292, in it:

  1. added dependency to build task to force java compilation for every RoboVM tasks. Otherwise commands like launchIOSDevice will fail as java classes are not generated.
  2. added description to tasks:
    > gradle tasks
    MobiVM tasks
    ------------
    createIPA - Creates .ipa file. This is an alias for the robovmArchive task
    launchConsole - Runs a console app
    launchIOSDevice - Runs your iOS app on a connected iOS device.
    launchIPadSimulator - Runs your iOS app in the iPad simulator
    launchIPhoneSimulator - Runs your iOS app in the iPhone simulator
    robovmArchive - Compiles a binary, archives it in a format suitable for distribution and saves it to build/robovm/
    robovmInstall - Compiles a binary and installs it to build/robovm/
    
  3. added logic not extracting same file on every launch and do clear cache when new files extracted just to avoid bug cases when incompatible data stays in cache, check post by @dthommes. Similar as it was done for Idea plugin.
  4. added support for launching debugger, similar as @dukescript did for ‘maven plugin’:
    .. start with
    > gradle --no-daemon -i -Probovm.debug=true -Probovm.debugPort=7778 -Probovm.arch=x86_64 "-Probovm.device.name=iPhone SE" launchIPhoneSimulator
    .. attach with
    > jdb -attach 7778
    

Intellij Idea/Android Studio: never ending battle with annoying 'android-gradle'

|

bugfix #286, #285 and clear cache on new snapshot logic

|