2016-12-12 1 views
1
를 사용하는 경우 응용 프로그램이 충돌 bulletwrapper

내 libgdx/I가 활성화 난독 화 빌드 릴리스 APK 실행하려고 다음과 같은 예외와 총알 응용 프로그램 충돌 :Libgdx 난독

 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); 
} 

어떻게 해결할 수 있습니까? 나는 프로 가드가 총알 전화를 난독 화하는 것을 막을 필요가 있다고 생각하지만 어떻게해야 하는지를 알아낼 수는 없다.

답변

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

출처 : this gradle file.

나는 너무 많은 것을 꺼려 할 것이다. -dontwarn s. 위의 내용을 적용한 후 제거 할 수 있는지 확인하십시오. -dontwarn은 실제로 문제가 아니며 경고를 수정하는 다른 방법을 다 써버 렸습니다. 덕분에 그 덕을 보았습니다.

+0

'-dontwarn'은 libgdx에 의해 생성 된 초기 파일에 있었지만, 제가 제거 할 수 있는지 알아보기 위해 노력할 것입니다. – nradk

+0

충분하다. – weston

+0

매우 이상한 libgdx가 파일을 생성했지만 가장 중요한 행을 생략했다. – weston