Java app";不幸的是,我停了下来;当触摸间隙广告时

Java app";不幸的是,我停了下来;当触摸间隙广告时,java,android,c++,admob,cocos2d-x,Java,Android,C++,Admob,Cocos2d X,我使用的是cocos2d-x3.2,我想在用户触摸屏幕时显示间隙广告。 但当我触摸屏幕时,我收到了“不幸停止”的信息。 这是我的密码: 爪哇: C++: 我在logcat中发现了这个错误: A/libc(6628): Fatal signal 11 (SIGSEGV) at 0x00020004 (code=1), thread 6643 (Thread-553) 有人能帮忙吗?(对不起,英文:)你必须先加载广告,然后再显示: private boolean adIsLoaded = fals

我使用的是cocos2d-x3.2,我想在用户触摸屏幕时显示间隙广告。 但当我触摸屏幕时,我收到了“不幸停止”的信息。 这是我的密码:

爪哇:

C++:

我在logcat中发现了这个错误:

A/libc(6628): Fatal signal 11 (SIGSEGV) at 0x00020004 (code=1), thread 6643 (Thread-553)

有人能帮忙吗?(对不起,英文:)

你必须先加载广告,然后再显示:

private boolean adIsLoaded = false;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    final String ADMOB_ID = "ca-app-pub-0000000000000000/0000000000";
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId(ADMOB_ID);

    AdRequest.Builder builder = new AdRequest.Builder();
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("3A34952B128D8DC19CCB75CA752ED31B").build();
    interstitial.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            adIsLoaded=true;
        }
    });

    interstitial.loadAd(adRequest);

}

public void showad() { 
    if (adIsLoaded)
            interstitial.show();
    }
}

<>因为它是代码> SigSeGvHelloWorld::show(),在每行之间打印日志,以找出哪一行导致了崩溃。这听起来很愚蠢,但很有效


顺便说一句,您必须分析崩溃点附近的整个日志,而不是崩溃时的行。

尝试使用getStaticMethodInfo()和CallStaticVoidMethod()。还将showad()设为静态函数

这对我很有效。但是,当我将getMethodInfo()和CallVoidMethod()与非静态java函数一起使用时,代码既不工作也不会崩溃。它根本不起任何作用


还没弄明白原因

我是这样修复的:

    private static AppActivity _appActiviy;
       @Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    final String ADMOB_ID = "ca-app-pub-0000000000000000/0000000000";
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId(ADMOB_ID);

    AdRequest.Builder builder = new AdRequest.Builder();
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("3A34952B128D8DC19CCB75CA752ED31B").build();

    interstitial.loadAd(adRequest);
    }

    public static void showAd(){
    _appActiviy.runOnUiThread(new Runnable()
    {

    @Override
     public void run(){ 
         if (_appActiviy.interstitial.isLoaded())
            {_appActiviy.interstitial.show();}

};
});}
c++


我的应用程序仍然崩溃。
private boolean adIsLoaded = false;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    final String ADMOB_ID = "ca-app-pub-0000000000000000/0000000000";
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId(ADMOB_ID);

    AdRequest.Builder builder = new AdRequest.Builder();
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("3A34952B128D8DC19CCB75CA752ED31B").build();
    interstitial.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            adIsLoaded=true;
        }
    });

    interstitial.loadAd(adRequest);

}

public void showad() { 
    if (adIsLoaded)
            interstitial.show();
    }
}
    private static AppActivity _appActiviy;
       @Override
    protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    final String ADMOB_ID = "ca-app-pub-0000000000000000/0000000000";
    interstitial = new InterstitialAd(this);
    interstitial.setAdUnitId(ADMOB_ID);

    AdRequest.Builder builder = new AdRequest.Builder();
    AdRequest adRequest = new AdRequest.Builder().addTestDevice("3A34952B128D8DC19CCB75CA752ED31B").build();

    interstitial.loadAd(adRequest);
    }

    public static void showAd(){
    _appActiviy.runOnUiThread(new Runnable()
    {

    @Override
     public void run(){ 
         if (_appActiviy.interstitial.isLoaded())
            {_appActiviy.interstitial.show();}

};
});}
bool HelloWorld::onTouchBegan(cocos2d::Touch *touch , cocos2d::Event *event){

    show();
}

void HelloWorld::show(){
       cocos2d::JniMethodInfo methodInfo;

        if (! cocos2d::JniHelper::getStaticMethodInfo(methodInfo, "org/cocos2dx/cpp/AppActivity", "showAd", "()V")) {
            return;
        }

        methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID);
        methodInfo.env->DeleteLocalRef(methodInfo.classID);
}