2016-12-12 4 views
1

Моего libgdx/пуле приложение падает со следующим исключением, когда я пытаюсь запустить релиз APK, построенный с ProGuard поддержкой:Libgdx bulletwrapper приложения аварий при использовании ProGuard

 Process: com.my.app, PID: 14042 
    java.lang.NoSuchMethodError: no static method "Lcom/badlogic/gdx/physics/bullet/linearmath/LinearMathJNI;.SwigDirector_btIDebugDraw_getDefaultColors(Lcom/badlogic/gdx/physics/bullet/linearmath/btIDebugDraw;)J" 
     at com.badlogic.gdx.physics.bullet.linearmath.LinearMathJNI.swig_module_init(Native Method) 
     at com.badlogic.gdx.physics.bullet.linearmath.LinearMathJNI.<clinit>(Unknown Source) 
     at com.badlogic.gdx.physics.bullet.linearmath.LinearMathJNI.btGetVersion(Native Method) 
     at com.badlogic.gdx.physics.bullet.linearmath.a.a(Unknown Source) 
     at com.badlogic.gdx.physics.bullet.a.a(Unknown Source) 
     at com.my.app.i.<init>(Unknown Source) 
     at com.my.app.h$1.a(Unknown Source) 
     at com.badlogic.gdx.f.a.b.b.a(Unknown Source) 
     at com.badlogic.gdx.f.a.b.a(Unknown Source) 
     at com.badlogic.gdx.f.a.b.a(Unknown Source) 
     at com.badlogic.gdx.f.a.a.a.a(Unknown Source) 
     at com.badlogic.gdx.f.a.a.a$1.a(Unknown Source) 
     at com.badlogic.gdx.f.a.b.c.a(Unknown Source) 
     at com.badlogic.gdx.f.a.g.a(Unknown Source) 
     at com.badlogic.gdx.f.a.h.b(Unknown Source) 
     at com.badlogic.gdx.backends.android.i.onDrawFrame(Unknown Source) 
     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1548) 
     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1259) 

Моим приложением является игрой и авария происходит только при запуске игрового экрана, а не в начальных экранах меню. Это мой proguard-project.txt файл:

-verbose 

-dontwarn android.support.** 
-dontwarn com.badlogic.gdx.backends.android.AndroidFragmentApplication 
-dontwarn com.badlogic.gdx.utils.GdxBuild 
-dontwarn com.badlogic.gdx.physics.box2d.utils.Box2DBuild 
-dontwarn com.badlogic.gdx.jnigen.BuildTarget* 
-dontwarn com.badlogic.gdx.graphics.g2d.freetype.FreetypeBuild 
-dontwarn com.badlogic.gdx.jnigen.* 

-keep class com.badlogic.gdx.controllers.android.AndroidControllers 

-keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* { 
    <init>(com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration); 
} 

-keepclassmembers class com.badlogic.gdx.physics.box2d.World { 
    boolean contactFilter(long, long); 
    void beginContact(long); 
    void endContact(long); 
    void preSolve(long, long); 
    void postSolve(long, long); 
    boolean reportFixture(long); 
    float reportRayFixture(long, float, float, float, float, float); 
} 

как мне решить эту проблему? Я предполагаю, что мне нужно, чтобы proguard не запутывал вызовы пули, но не может понять, как это сделать.

ответ

1
-keep class com.badlogic.** { *; } 
-keep enum com.badlogic.** { *; } 

Источник: this gradle file.

Также я был бы неохотно иметь так много -dontwarn s. После применения вышеуказанного см., Если вы можете удалить их. Только -dontwarn, когда вы знаете, что это действительно не проблема, и исчерпали другие способы исправить предупреждение.

+0

спасибо, что сработало. '-dontwarn' были в исходном файле, созданном libgdx, хотя я попытаюсь посмотреть, смогу ли я удалить их. – nradk

+0

Это справедливо – weston

+0

Очень странный libgdx сгенерировал файл, но пропустил самые важные строки. – weston

 Смежные вопросы

  • Нет связанных вопросов^_^