我将一个库作为.jar文件添加到项目中。
我在proGuard中添加了条目:
# TweenEnginesLibrary
-libraryjars ../core/libs/tween-engine-api.jar
-keep class aurelienribon.tweenengine.** { *; }
-dontwarn aurelienribon.tweenengine.**
-keep class (...).flappy_dragon.TweenAccessors
-keep class (...).flappy_dragon.TweenAccessors.SpriteAccessor
这是我的SpriteAccessor类:
package (...).flappy_dragon.TweenAccessors;
import com.badlogic.gdx.graphics.g2d.Sprite;
import aurelienribon.tweenengine.TweenAccessor;
public class SpriteAccessor implements TweenAccessor<Sprite> {
public static final int ALPHA = 1;
@Override
public int getValues(Sprite target, int tweenType, float[] returnValues) {
switch (tweenType) {
case ALPHA:
returnValues[0] = target.getColor().a;
return 1;
default:
return 0;
}
}
@Override
public void setValues(Sprite target, int tweenType, float[] newValues) {
switch (tweenType) {
case ALPHA:
target.setColor(1, 1, 1, newValues[0]);
break;
}
}
}
我仍然收到错误
java.lang.NoClassDefFoundError: (...).flappy_dragon.TweenAccessors.SpriteAccessor
任何人都可以帮助我吗?
答案 0 :(得分:2)
java.lang.NoClassDefFoundError
是由jar文件在编译时出现但在运行时丢失引起的。您添加到项目中的罐子取决于还需要导入项目的其他罐子。
您应该比较构建路径和运行时类路径。在Eclipse中,您可以在Project -> Properties -> Java build Path
中找到前者,在Run -> Run Configurations... -> Classpath
答案 1 :(得分:0)
是不是这样,你的应用程序在调试版本中工作正常,而不是在发布版本中工作(coz proguard仅在发布版本中出现)?
如果是,则在Proguard中提供设置时会出现问题。
如果否,则添加库时会出现问题。在Eclipse中,右键单击.jar文件并转到选项&#39; Add to Build Path&#39;。在Android Studio中,检查以下代码存在的build.gradle。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
答案 2 :(得分:0)
# TweenEnginesLibrary
-libraryjars ../core/libs/tween-engine-api.jar
-keep class aurelienribon.tweenengine.** { *; }
-dontwarn aurelienribon.tweenengine.**
-keep class (...).flappy_dragon { *; }
-keep interface (...).flappy_dragon { *; }
你能试试吗?
此外,您应该发布完整的错误日志。因为它可能会对转换的类名说。所以我们可以更好地应用proguard。