У меня есть старый 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" />
изменить цель = 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")
, который также не работает.
Будем благодарны за любые предложения по этому вопросу, спасибо:)