Java app";不幸的是,我停了下来;当触摸间隙广告时
我使用的是cocos2d-x3.2,我想在用户触摸屏幕时显示间隙广告。 但当我触摸屏幕时,我收到了“不幸停止”的信息。 这是我的密码: 爪哇: C++: 我在logcat中发现了这个错误: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
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();
}
}
<>因为它是代码> SigSeGv
HelloWorld::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);
}