eclipse TargetApi не работает с layoutInDisplayCutoutMode - PullRequest
0 голосов
/ 10 января 2020

У меня есть старый android игровой проект со следующей версией ndk / sdk:

AndroidManifest.xml
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="26"/>


project.properties
target=android-19

Чтобы поддержать экран выреза, я попытался первым способом:

  1. добавить строку в AndroidManifest. xml

<meta-data android:name="android.max_aspect" android:value="2.4" />

изменить цель = android -19 на цель = android -28

изменить android: targetSdkVersion = "26" на android: targetSdkVersion = "28"

добавить код в onCreate

if (Build.VERSION.SDK_INT >= 28) {
    WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
    getWindow().setAttributes(lp);
    final View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}

Сгенерированный apk отлично работает на телефоне с вырезанным экраном, но позже я обнаружил, что apk будет взламывать sh на любом устройстве android 6.0 со следующей ошибкой:

java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memclr4" referenced by "libcocos2djs.so"

Я нашел решение для Google для этого бу, и все напрасно.

Итак, я попробовал второй способ:

Сохранить android: targetSdkVersion 26 и target = android -19 и попытаться использовать @TargetApi для решения проблемы.

Но в результате я получаю сообщение об ошибке при создании apk:

[javac] AppActivity.java:65: error: can not find symbol
[javac]         lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
[javac]           ^
[javac]   symbol: layoutInDisplayCutoutMode
[javac]   pos: LayoutParams lp
[javac] AppActivity.java:65: error: can not find symbol
[javac]         lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
[javac]                                                                  ^
[javac]   symbol: LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
[javac]   pos: class LayoutParams

Кажется, что @TargetApi не работает, и я также попытался @SuppressLint("NewApi"), который также не работает.

Будем благодарны за любые предложения по этому вопросу, спасибо:)

...