I'm using Intellij. Everything was working fine, and the APK is deployed in my Android but it just stays black screen and return to home saying that "'the game' stopped:
1023-1051/? E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 1591
Process: net.mygdx.game.android, PID: 1023
com.badlogic.gdx.utils.ax: Error reading file: jsonSkin.json
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at net.mygdx.game.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: com.badlogic.gdx.utils.ax: Error reading file: skins/jsonSkin.json
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at org.mygdx.gam.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: com.badlogic.gdx.utils.ax:
at com.badlogic.gdx.e.a.a.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.b(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.j.a(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at net.mygdx.game.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: com.badlogic.gdx.utils.b.e: Class not found: com.badlogic.gdx.graphics.g2d.BitmapFont
at com.badlogic.gdx.utils.b.b.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.b(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.j.a(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at net.mygdx.game.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.graphics.g2d.BitmapFont
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at java.lang.Class.forName(Class.java:216)
at com.badlogic.gdx.utils.b.b.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.b(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.j.a(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at net.mygdx.game.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: java.lang.NoClassDefFoundError: com/badlogic/gdx/graphics/g2d/BitmapFont
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at java.lang.Class.forName(Class.java:216)
at com.badlogic.gdx.utils.b.b.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.b(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.j.a(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at org.mygdx.gam.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.badlogic.gdx.graphics.g2d.BitmapFont" on path: DexPathList[[zip file "/data/app/org.mygdx.gam.android-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.mygdx.gam.android-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at java.lang.Class.forName(Class.java:216)
at com.badlogic.gdx.utils.b.b.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.k.b(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.j.a(Unknown Source)
at com.badlogic.gdx.utils.k.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.a(Unknown Source)
at com.badlogic.gdx.e.a.a.i.<init>(Unknown Source)
at org.mygdx.gam.a.a(Unknown Source)
at com.badlogic.gdx.backends.android.i.onSurfaceChanged(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1520)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
This on is my .json file;
{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } },
com.badlogic.gdx.graphics.Color: {
green: { a: 1, b: 0, g: 1, r: 0 },
white: { a: 1, b: 1, g: 1, r: 1 },
red: { a: 1, b: 0, g: 0, r: 1 },
black: { a: 1, b: 0, g: 0, r: 0 },
},
com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } },
},
com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: {
default: { down: default-round-down, up: default-round },
toggle: { down: default-round-down, checked: default-round-down, up: default-round }
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: { down: default-round-down, up: default-round, font: default-font, fontColor: white },
toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red }
},
com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: {
default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: {
default: {
font: default-font, fontColor: white, background: default-select,
scrollStyle: default,
listStyle: { font: default-font, selection: default-select-selection }
}
},
com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: {
default-vertical: { handle: default-splitpane-vertical },
default-horizontal: { handle: default-splitpane }
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: { titleFont: default-font, background: default-window, titleFontColor: white },
dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
},
com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: {
default-horizontal: { background: default-slider, knob: default-slider-knob },
default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
default: { font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor }
},
com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: {
default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: {
default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font }
},
com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: {
default: { background: default-pane, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: {
default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection }
},
com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
default: {
label: { font: default-font, fontColor: white },
background: default-pane, wrapWidth: 150
}
},
}
And these lines are the ones who are weird because if I get rid of them the program works just fine except from the button that Obviously doesn't appear;
skin = new Skin(Gdx.files.internal("jsonSkin.json"));
TextButton btnStart = new TextButton("Start!!", skin);
btnStart.setPosition(50f,400f);
btnStart.setSize(260f,60f);
mainMenu.addActor(btnStart);
Put this in your config:
-keep class com.badlogic.**{
**[] $VALUES;
*;
}
It'll fix this issue, and issues with reflection.
Above is the top level rule that disables all of ProGuard's
goodness on particular package. No shrinking, no obfuscation; not for classes, not for members.
Proguard
obfuscate classes that we're using in our skin file, Skin
loads classes by reflection, so we must not allow Proguard
to change the names of those classes.
Problem is json serializer needs exact field name to do its job.
Abhishek is correct but I just need to ignore shrinking only for scene2d package, so I put this on proguard-rules.pro file
-keep class com.badlogic.gdx.scenes.scene2d.ui.**{
**[] $VALUES;
*;
}
It will optimize all the other code except for skin loader and its components.
Also you need to put something similar if you are doing json de/serializing with your own classes.
-keep class com.your.game.data.**{
**[] $VALUES;
*;
}
Here is a screenshot to find the proguard-rules.pro file on Android Studio for beginners
Put this in your proguard rules
-keep class com.badlogic.gdx.graphics.g2d.BitmapFont
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.