Closed dri-richard closed 1 month ago
Adding Ad Quality SDK later than 7.15.0 will result in a runtime crash when calling IronSourceAdQuality.getInstance()
:
W java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[], int, int)' on a null object reference
W at com.ironsource.adqualitysdk.sdk.i.e.<clinit>(Unknown Source:3000)
W at com.ironsource.adqualitysdk.sdk.i.aw.a(:195)
W at com.ironsource.adqualitysdk.sdk.i.aw.<init>(:13)
W at com.ironsource.adqualitysdk.sdk.i.z.<init>(:73)
W at com.ironsource.adqualitysdk.sdk.i.z.ﻛ(:67)
W at com.ironsource.adqualitysdk.sdk.IronSourceAdQuality.getInstance(:23)
One change between 7.15.0 and 7.16.0+ is that the sdk contains shared objects:
The extender server is sending these back to the client:
And bob will include them in the .aab:
My assumption now is that the .so files are compressed and the manifest doesn't specify to unpack them using android:extractNativeLibs
. It is however recommended to not compress the shared objects and not extract them.
https://developer.android.com/guide/topics/manifest/application-element#extractNativeLibs
The bundletool accepts a config json file which can specify a glob pattern for files that should not be compressed:
@britzl for now we create it in code, but we can move it into a file similar to what we have for AndroidManifest.xml
: https://github.com/defold/defold/blob/582fd1c9c139ccd0a324842b6247dfdc9131c152/com.dynamo.cr/com.dynamo.cr.bob/src/com/dynamo/bob/bundle/AndroidBundler.java#L690-L692
Ah, we already do this. Hmm, yeah, we need to think about if we want to have extractNativeLibs
as a game.project option and inject it into the AndroidManifest.xml, and if set to false, we add a glob pattern for .so files in AndroidBundler.java
Adding Ad Quality SDK later than 7.15.0 will result in a runtime crash when calling
IronSourceAdQuality.getInstance()
:W java.lang.RuntimeException: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.io.InputStream.read(byte[], int, int)' on a null object reference W at com.ironsource.adqualitysdk.sdk.i.e.<clinit>(Unknown Source:3000) W at com.ironsource.adqualitysdk.sdk.i.aw.a(:195) W at com.ironsource.adqualitysdk.sdk.i.aw.<init>(:13) W at com.ironsource.adqualitysdk.sdk.i.z.<init>(:73) W at com.ironsource.adqualitysdk.sdk.i.z.ﻛ(:67) W at com.ironsource.adqualitysdk.sdk.IronSourceAdQuality.getInstance(:23)
One change between 7.15.0 and 7.16.0+ is that the sdk contains shared objects:
The extender server is sending these back to the client:
And bob will include them in the .aab:
![]()
My assumption now is that the .so files are compressed and the manifest doesn't specify to unpack them using
android:extractNativeLibs
. It is however recommended to not compress the shared objects and not extract them.https://developer.android.com/guide/topics/manifest/application-element#extractNativeLibs
The bundletool accepts a config json file which can specify a glob pattern for files that should not be compressed:
It should be easy to test, I think, by manual apk repacking. Just to make sure it helps