cc2.x 接SDK遇到的一些问题总结

1 您上传的APK或Android App Bundle内含活动、活动别名、服务或广播接收器,这些项目有intent过滤器,但没有"androidexported"届性设置。此文件无法在Android 12或更高版本上安装。详情请参阅:developer.android.com/about/versions/12/behavior-changes-12#exported



官网解释

解决办法:

    <activity
        android:name="org.cocos2dx.javascript.AppActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:launchMode="singleTask"
        android:taskAffinity=""
        android:exported="true"
        >

2 This project uses AndroidX dependencies, but the ‘android.useAndroidX’ property is not enabled. Set this property to true in the gradle.properties file and retry.
解决办法:


加上:
android.useAndroidX=true
android.enableJetifier=true

3 this release is not compliant with the google play 64-bit requirement


解决方案:
微信图片_20220328113852
有的SDK需要换成64位的。

4 图片插屏广告 InterstitialImage 需要放在UI线程中

private void showInterstitialInUIThread() {
    new Thread(new Runnable() {
        @Override
        public void run() {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                  //图片插屏广告显示
                    mUnifiedInterstitialADImg.showAd();
                }
            });
        }
    }).start();

5 app:transformClassesAndResourcesWithProguardFor
在混淆文件中添加以下内容

-ignorewarnings

6 banner 广告顶部移动到底部

    ...
    int width = ViewGroup.LayoutParams.MATCH_PARENT;
    ViewGroup rootView = findViewById(android.R.id.content);
    rootView.addView(adView);

这种banner广告一般是在顶部
要移动到底部只需要加上

 adView.setTranslationY(rootView.getHeight() - heightPx);

7 广告填充失败延迟加载

        long delayMillis = TimeUnit.SECONDS.toMillis((long) 2);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
               loadAd();
            }
        }, delayMillis);

8 android 调用cocos

javaCallCocos("RewardADFinishCallback()")
...
private void javaCallCocos(final String param) {
    runOnGLThread(new Runnable() {
        @Override
        public void run() {
            Cocos2dxJavascriptJavaBridge.evalString(param);
        }
    });
}

9 游戏加震动

AndroidManifest.xml 中添加
<uses-permission android:name="android.permission.VIBRATE"/>    

private Vibrator vibrator = null;
...
public static void CallVibrate() {
    if (AppActivity.instance != null) {
        if (AppActivity.instance.vibrator.hasVibrator()) {
            AppActivity.instance.vibrator.vibrate(300);
        }
    }
}

cocos creator 中调用

  /**手机震动 */
    public static PhoneVibrator() {
            let className = "org/cocos2dx/javascript/AppActivity";
            let methodName = "CallVibrate"
            let param = "()V";
            jsb.reflection.callStaticMethod(className, methodName, param);
    }
2赞