2015-06-24 2 views
0

Приложение аварийно завершает работу при запуске. Вот трассировка стека. Приложение прекрасно работает с настройкой «консервативный», но я бы определенно хотел, чтобы это заняло меньше места.NoSuchMethodError в Box2D после использования <treeShaker> agressive в RoboVM

Версии: gdxVersion = '1.6.1' roboVMVersion = '1.4.0'

Это в зависимости в рамках проекта (": КСН")

compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios" 

Это в зависимости под проект (": ядро")

compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" 

Исключение:

java.lang.NoSuchMethodError: beginContact 
    at com.badlogic.gdx.physics.box2d.World.newWorld(Native Method) 
    at com.badlogic.gdx.physics.box2d.World.<init>(World.java) 
    at com.cereal.stackking.worlds.GameWorld.<init>(GameWorld.java) 
    at com.cereal.stackking.worlds.ArcadeWorld.<init>(ArcadeWorld.java) 
    at com.cereal.stackking.screens.ArcadeScreen.startNewWorld(ArcadeScreen.java) 
    at com.cereal.stackking.screens.ArcadeScreen.<init>(ArcadeScreen.java) 
    at com.cereal.stackking.screens.MainMenuScreen.populateTable(MainMenuScreen.java) 
    at com.cereal.stackking.screens.MainMenuScreen.<init>(MainMenuScreen.java) 
    at com.cereal.stackking.Staq.load(Staq.java) 
    at com.cereal.stackking.screens.SplashScreen.render(SplashScreen.java) 
    at com.badlogic.gdx.Game.render(Game.java) 
    at com.cereal.stackking.Staq.render(Staq.java) 
    at com.badlogic.gdx.backends.iosrobovm.IOSGraphics.draw(IOSGraphics.java) 
    at com.badlogic.gdx.backends.iosrobovm.IOSGraphics$1.draw(IOSGraphics.java) 
    at com.badlogic.gdx.backends.iosrobovm.IOSGraphics$1.$cb$drawRect$(IOSGraphics.java) 
    at org.robovm.apple.uikit.UIApplication.main(Native Method) 
    at org.robovm.apple.uikit.UIApplication.main(UIApplication.java) 
    at com.cereal.stackking.IOSLauncher.main(IOSLauncher.java) 

ответ

0

Box2D использует отражение в собственном коде, чтобы получить доступ к java-методам для вызова контактных слушателей. Есть ли у RoboVM какой-либо метод, с помощью которого вы можете сказать шейкеру дерева о сохранении определенных классов/методов (a la proguard)? Если нет, вам, вероятно, придется придерживаться консервативного режима (и, возможно, файл запроса функции с RoboVM).

+0

Да, есть способ принудительно связать код Box2D. После того, как я добавил, это сработало. Спасибо за вашу помощь. – crewisforyou

+0

@crewisforyou, как вы заставили шейкер дерева сохранить этот метод? – george

+1

@george https://github.com/robovm/robovm/issues/1035#issuecomment-115045750 – noone

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