bro-gen: whats new after ios12 binding
12 Dec 2018 | bro-gen whatsnew bindingbro-gen received several updates and new features during handling iOS12 bindings, mostly fixes but there are new ones. All changes are pushed to github.
Whats new:
bro-gen received several updates and new features during handling iOS12 bindings, mostly fixes but there are new ones. All changes are pushed to github.
Whats new:
User pjwj
reported problem when he was trying to use ARKit (first one?):
Values in this matrix are not as I expect them to be, as translation components are very small (for example x*10^-35). Therefore virtual objects I’m adding to the AR scene are always positioned close to the origin.
Quick investigation shown that RoboVM is not able to handle vector data types such as simd_float4x4
(mapped to MatrixFloat4x4
in RoboVM) at compiler level. As result all vector data is passed incorrectly.
Investigation and fix is bellow.
This tutorial mostly copies old one, please refer to it for more details.
It cover quick binding of LGSideMenuController.
While testing binding of Network.framework
there were several discoveries:
copy
when binding function. It will crash during compilation.Details and workarounds bellow.
Follow up to issue #336: Could not find Java class corresponding to Objective-C class: WKNSURLAuthenticationChallenge.
Short story
WKWebView passes instance of internal/unexposed class WKNSURLAuthenticationChallenge
as parameter instead of expected NSURLAuthenticationChallenge
, and WKNSURLAuthenticationChallenge
doesn’t extends from expected type.
Why it works? Because WKNSURLAuthenticationChallenge
is NSProxy.
Long story
iOS 12.0 + 12.1 bindings have arrived as PR. These was massive API update as part of iOS12 release which includes new frameworks:
Also this release delivers lot of API changes to existing framework which, bright highlights are:
Beside updating API itself cocoatouch
receives lot of patches as result of improvement of bro-gen script.
(TODO: There will be detailed post about this)
Following was improved:
WithXX
was generated were mostly located and correctly renamed (this probably might be a breaking change);It is to be tested for other breaking changes but I hope it will be merged back in week or two.
As continue of previous post here is a workaround:
Solution is to keep static linking to Enhance
class from libconnector.a
. To achieve result lets introduce objc class that extends(and as result statically links) from Enhance
:
User OceanBreezeGames reported following issue on Gitter channel that was interesting to investigate:
Enhanced ipa fails with:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[Enhance isInterstitialReady]: unrecognized selector sent to class 0x103343eb8'
Tried enhancing the app several time and it sometimes worked and sometimes not. For start how it expected to work:
Today maintenance PR326 delivers following:
[issue](https://gitter.im/MobiVM/robovm?at=5b98e2c4f3c26b08f6664e07) when using v4 and
implementation` as dependency command. This was happening due using outdated configuration name in dependency path resolution:// configure the runtime classpath
Set<File> classpathEntries = project.getConfigurations().getByName("runtime").getFiles();
while
// The name of the "runtime" configuration. This configuration is deprecated and doesn't represent a correct view of
// the runtime dependencies of a component.
As stated in #325 it doesn’t work. The reason for this is that okhttp3
detects RoboVM as Android (as there are corresponding providers classes present). And crashes while tries to access Android’s Build
class, which is not found:
java.lang.NoClassDefFoundError: android/os/Build$VERSION
at okhttp3.internal.platform.AndroidPlatform.getSSLContext(AndroidPlatform.java:434)
at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:282)
Dirty and fast solution is just to add Build
class to your class path:
package android.os;
public final class Build {
public final static class VERSION {
public final static int SDK_INT = 16; // android 4.1
}
}
Long term solution would be updating to OpenJDK10.