eclipse TargetApi не работает с layoutInDisplayCutoutMode

У меня есть старый проект игры для 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" />

  1. измените target=android-19 на target=android-28

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

  3. добавить код в 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 вылетит на любом устройстве Android 6.0 со следующей ошибкой:

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

Погуглил решение этой бу в итоге напрасно.

Поэтому я попробовал второй способ:

Сохраните 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") который тоже не работает.

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

0 ответов

Другие вопросы по тегам