Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not support multi process #136

Closed
NiaNingXue opened this issue Feb 5, 2022 · 17 comments
Closed

Not support multi process #136

NiaNingXue opened this issue Feb 5, 2022 · 17 comments
Assignees

Comments

@NiaNingXue
Copy link

NiaNingXue commented Feb 5, 2022

My app have three process, the AppLovinSdk can initialize in the main process, in other process, it can initialize , but when I use MaxNativeAdLoader to load ad, it throws the NPE.

the sdk I am using:
implementation 'com.applovin:applovin-sdk:11.1.0'
implementation 'com.facebook.android:audience-network-sdk:6.8.0'
implementation 'com.applovin.mediation:facebook-adapter:6.8.0.8'

the full stack:
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity com.applovin.impl.sdk.a.a()' on a null object reference
W/System.err: at com.applovin.impl.sdk.m.ao(Unknown Source:4)
W/System.err: at com.applovin.impl.sdk.o.C(Unknown Source:10)
W/System.err: at com.applovin.impl.sdk.o.a(Unknown Source:181)
W/System.err: at com.applovin.impl.sdk.o.s(Unknown Source:394)
W/System.err: at com.applovin.impl.sdk.o.(Unknown Source:33)
W/System.err: at com.applovin.impl.sdk.m.a(Unknown Source:148)
W/System.err: at com.applovin.sdk.AppLovinSdk.a(Unknown Source:153)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:0)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:14)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:5)
W/System.err: at com.applovin.mediation.nativeAds.MaxNativeAdLoader.(Unknown Source:0)
W/System.err: at com.demo.app.ad.max.MaxAdCacheManager.createAndLoadNativeAd(MaxAdCacheManager.java:79)
W/System.err: at com.demo.app.ad.max.MaxAdCacheManager.getNativeAd(MaxAdCacheManager.java:71)
W/System.err: at com.demo.app.ui.HomeActivity.onResume(VaultHomeActivity.java:212)
W/System.err: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
W/System.err: at android.app.Activity.performResume(Activity.java:8135)
W/System.err: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
W/System.err: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
W/System.err: at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
W/System.err: at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err: at android.os.Looper.loop(Looper.java:223)
W/System.err: at com.demo.app.Application$5.run(LockApp.java:199)
W/System.err: at android.os.Handler.handleCallback(Handler.java:938)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err: at android.os.Looper.loop(Looper.java:223)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7656)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

@chauduyphanvu
Copy link

@NiaNingXue, could you try using this MaxNativeAdLoader constructor and passing in your instance of our SDK from the other process?

MaxNativeAdLoader(final String adUnitId, final AppLovinSdk sdk, final Context context)

Vu Chau
AppLovin Team

@chauduyphanvu chauduyphanvu self-assigned this Feb 7, 2022
@NiaNingXue
Copy link
Author

Do I need to call the initializeSdk in every process? when I do this, it crash

        if (getPackageName().equals(getCurrentProcessName())) {// main process
            // Initialize the AppLovin SDK
            AppLovinSdk.getInstance( this ).setMediationProvider( AppLovinMediationProvider.MAX );
            AppLovinSdk.getInstance( this ).initializeSdk( config -> {
                Log.i(TAG, "AppLovinSdk initialized");
            } );
        } else if ("com.alpha.demo:one".equals(getCurrentProcessName())) { // another process
            // Initialize the AppLovin SDK
            AppLovinSdk.getInstance(this).setMediationProvider(AppLovinMediationProvider.MAX);
            AppLovinSdk.getInstance(this).initializeSdk(config -> {
                Log.i(TAG, "AppLovinSdk initialized");
            });
        }

the crash stack in process "com.alpha.demo:one" :

	java.lang.RuntimeException: Unable to create application com.alpha.demo.LockApp: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity com.applovin.impl.sdk.a.a()' on a null object reference
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6717)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity com.applovin.impl.sdk.a.a()' on a null object reference
        at com.applovin.impl.sdk.m.ao(Unknown Source:4)
        at com.applovin.impl.sdk.o.C(Unknown Source:10)
        at com.applovin.impl.sdk.o.a(Unknown Source:181)
        at com.applovin.impl.sdk.o.s(Unknown Source:394)
        at com.applovin.impl.sdk.o.<init>(Unknown Source:33)
        at com.applovin.impl.sdk.m.a(Unknown Source:148)
        at com.applovin.sdk.AppLovinSdk.a(Unknown Source:153)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:0)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:14)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:5)
        at com.alpha.demo.LockApp.onCreate(LockApp.java:161)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1192)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6712)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

@chauduyphanvu
Copy link

@NiaNingXue, you should not have to initialize us in every process. You should be able to pass the SDK instance around. Let us know if there are any issues doing that.

@NiaNingXue
Copy link
Author

NiaNingXue commented Feb 9, 2022

I test the constructor but it has the same error and crash stack.

MaxNativeAdLoader(final String adUnitId, final AppLovinSdk sdk, final Context context)
the full stack:
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity com.applovin.impl.sdk.a.a()' on a null object reference
W/System.err: at com.applovin.impl.sdk.m.ao(Unknown Source:4)
W/System.err: at com.applovin.impl.sdk.o.C(Unknown Source:10)
W/System.err: at com.applovin.impl.sdk.o.a(Unknown Source:181)
W/System.err: at com.applovin.impl.sdk.o.s(Unknown Source:394)
W/System.err: at com.applovin.impl.sdk.o.(Unknown Source:33)
W/System.err: at com.applovin.impl.sdk.m.a(Unknown Source:148)
W/System.err: at com.applovin.sdk.AppLovinSdk.a(Unknown Source:153)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:0)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:14)
W/System.err: at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:5)
W/System.err: at com.applovin.mediation.nativeAds.MaxNativeAdLoader.(Unknown Source:0)
W/System.err: at com.demo.app.ad.max.MaxAdCacheManager.createAndLoadNativeAd(MaxAdCacheManager.java:79)
W/System.err: at com.demo.app.ad.max.MaxAdCacheManager.getNativeAd(MaxAdCacheManager.java:71)
W/System.err: at com.demo.app.ui.HomeActivity.onResume(VaultHomeActivity.java:212)
W/System.err: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1456)
W/System.err: at android.app.Activity.performResume(Activity.java:8135)
W/System.err: at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4434)
W/System.err: at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4476)
W/System.err: at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
W/System.err: at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
W/System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err: at android.os.Looper.loop(Looper.java:223)
W/System.err: at com.demo.app.Application$5.run(LockApp.java:199)
W/System.err: at android.os.Handler.handleCallback(Handler.java:938)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err: at android.os.Looper.loop(Looper.java:223)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7656)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

From the stack it shows that you make a activity weakReference, and the weakReference is null?

@thomasmso
Copy link
Member

Hi @NiaNingXue - The crash will be resolved in the next SDK release, I'll notify this thread when that happens. Is there anyway you can pass in an Activity to your MaxNativeAdLoader call?

@NiaNingXue
Copy link
Author

NiaNingXue commented Feb 9, 2022

@thomasmso I think it is better not to pass a activity when loading a ad, because it may lead to memory leak

@thomasmso
Copy link
Member

We will only hold a WeakReference to it.

@NiaNingXue
Copy link
Author

I am used to cache the loaded MaxAd, I don`t know if it affects something

@NiaNingXue
Copy link
Author

@thomasmso Hi, I also test the MaxInterstitialAd in multi process, it will crash too

new MaxInterstitialAd (adId, AppLovinSdk.getInstance(context),context)

The full stack:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Activity com.applovin.impl.sdk.a.a()' on a null object reference
        at com.applovin.impl.sdk.m.ao(Unknown Source:4)
        at com.applovin.impl.sdk.o.C(Unknown Source:10)
        at com.applovin.impl.sdk.o.a(Unknown Source:181)
        at com.applovin.impl.sdk.o.s(Unknown Source:394)
        at com.applovin.impl.sdk.o.<init>(Unknown Source:33)
        at com.applovin.impl.sdk.m.a(Unknown Source:148)
        at com.applovin.sdk.AppLovinSdk.a(Unknown Source:153)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:0)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:14)
        at com.applovin.sdk.AppLovinSdk.getInstance(Unknown Source:5)
        at com.alpha.demo.ad.max.MaxInterstitialManager.load(MaxInterstitialManager.java:65)
        at com.alpha.demo.ui.HomeActivity.onCreate(VaultHomeActivity.java:201)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at com.alpha.demo.LockApp$5.run(LockApp.java:198) 
        at android.os.Handler.handleCallback(Handler.java:938) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

@thomasmso
Copy link
Member

^We just released v11.1.1 with the fix, thanks once again for the valuable feedback!

@NiaNingXue
Copy link
Author

NiaNingXue commented Feb 11, 2022

Hi, just test the version 11.1.1 and the MaxNativeAdLoader now works. but MaxInterstitialAd still has a problem. MaxInterstitialAd can load , but when I call showAd(), it only show a black screen, please confirm @thomasmso

@thomasmso
Copy link
Member

Can you send over a video recording of the issue, and our SDK's verbose logs?

@NiaNingXue
Copy link
Author

Do you have an email for receiving video?

@pavelupward
Copy link

@NiaNingXue just curious) what is your use case? Am I right, that in case AppLovin crash, you main app still working?

@chauduyphanvu
Copy link

@NiaNingXue, one way to determine if that is related to the multi-process use case you were trying to achieve is to request that ad from our sample app and see if you get a similar issue (black screen). This is because such issues tend to be due to specific ads and not necessarily because of your architecture.

Another way is to check how consistently you get that issue. If you always get a black screen in your multi-process architecture and never get it otherwise, then it can help us narrow down on the causes. Thank you.

@NiaNingXue
Copy link
Author

Thanks @chauduyphanvu , I am sure it is because of the multi-process. I fix it by adding the "multiprocess="true""

        <activity
            android:name="com.applovin.adview.AppLovinFullscreenActivity"
            android:configChanges="keyboard|keyboardHidden|locale|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
            android:exported="false"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:multiprocess="true"
            android:screenOrientation="behind" />

@chauduyphanvu
Copy link

@NiaNingXue - ah, that's great news. Thanks for the update!

@thomasmso thomasmso pinned this issue Feb 15, 2022
@NanaAmoah NanaAmoah unpinned this issue Feb 16, 2022
@NanaAmoah NanaAmoah pinned this issue Feb 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants