Приложение LibGDX Android нарушает правила использования API - PullRequest
0 голосов
/ 10 марта 2020

После отправки моего Android приложения, созданного с помощью LibGDX 1.9.10, я начал получать множество сбоев.

После некоторых исследований я обнаружил, что сбои происходят с устройств с Android 9 и выше (уровень API 28). Он отлично работает на более низких версиях Android.

Дальнейшее расследование показывает, что обнаруженные ошибки указывают на то, что ошибки вызваны тем, что Android модуль запуска LibGDX нарушает политики использования API, действовавшие с Android 9:

https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces

"Начиная с Android 9 (уровень API 28), платформа ограничивает интерфейсы, не относящиеся к SDK, которые может использовать ваше приложение."

Ошибки, которые я вижу, выглядят следующим образом:

03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/NIOAccess;->getBasePointer(Ljava/nio/Buffer;)J
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object;
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/Buffer;->position:I
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/Buffer;->limit:I
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
03-10 06:25:33.602: D/StrictMode(27425): StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Ljava/nio/Buffer;->_elementSizeShift:I
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.StrictMode.lambda$static$1(StrictMode.java:428)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGL20.init(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:86)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.init(Unknown Source:30)
03-10 06:25:33.602: D/StrictMode(27425):    at com.badlogic.gdx.backends.android.AndroidApplication.initialize(Unknown Source:1)
03-10 06:25:33.602: D/StrictMode(27425):    at my-libgdx-app.AndroidLauncher.onCreate(Unknown Source:97)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7327)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Activity.performCreate(Activity.java:7318)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
03-10 06:25:33.602: D/StrictMode(27425):    at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:187)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3087)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3250)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1947)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Handler.dispatchMessage(Handler.java:106)
03-10 06:25:33.602: D/StrictMode(27425):    at android.os.Looper.loop(Looper.java:214)
03-10 06:25:33.602: D/StrictMode(27425):    at android.app.ActivityThread.main(ActivityThread.java:7032)
03-10 06:25:33.602: D/StrictMode(27425):    at java.lang.reflect.Method.invoke(Native Method)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
03-10 06:25:33.602: D/StrictMode(27425):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

Приведенный выше журнал взят из Firebase Test Lab, но я уверен, что он представляет ту же ошибку, которую я получаю от реальных устройств в сети .

Что я могу сделать? Моя статистика sh набирает обороты, и рейтинги обязательно последуют: (

1 Ответ

0 голосов
/ 10 марта 2020

Я только что обнаружил, что на самом деле создаю приложение Android с Libgdx 1.9.9 (а не 1.9.10, как указано в вопросе). 1.9.10 должно иметь исправление для проблемы, поэтому я подтверждаю это прямо сейчас, помечается как отвеченное при подтверждении.

...