eclipse TargetApi не работает с layoutInDisplayCutoutMode
У меня есть старый проект игры для Android со следующей версией ndk/sdk:
AndroidManifest.xml
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="26"/>
project.properties
target=android-19
Чтобы поддержать вырез экрана, я первым делом попробовал:
- добавить строку в AndroidManifest.xml
<meta-data android:name="android.max_aspect" android:value="2.4" />
измените target=android-19 на target=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 вылетит на любом устройстве 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")
который тоже не работает.
Мы будем благодарны за любые предложения по этой проблеме, спасибо:)