簡體   English   中英

Libgdx庫集成在本機android項目中

[英]Libgdx library integrate in native android project

我正在開發一個Android應用程序,其中包含一個小型3D游戲。 在這里,我使用Libgdx框架(用於gdx-setup.jar)來開發3D模型。 由於它使用本機android功能,因此我需要將libgdx用作android應用程序中的庫。 我遵循libgdx / wiki的說明

所以,我下載libgdx-nightly-latest.zip來自: http://libgdx.badlogicgames.com/nightlies/

並將gdx.jar,gdx-backend-android.jar,gdx-natives.jar,armeabi和armeabi-v7a文件夾放置在libs文件夾中。 然后我將它們添加為庫。

我的Gradle依賴項:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile files('libs/gdx-backend-android.jar')
compile files('libs/gdx.jar')
compile files('libs/x86.jar')
compile files('libs/gdx-natives.jar')
}

MainActivity類

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPlay = (Button) findViewById(R.id.button);

btnPlay.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(v.getContext(), GameActivity.class);
        startActivity(intent);
    }
});
}

GameActivity類

public class GameActivity extends AndroidApplication {

GdxGame gdxGame;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    gdxGame = new GdxGame();
    AndroidApplicationConfiguration config = new      AndroidApplicationConfiguration();
    initializeForView(gdxGame, config);
}
}

GdxGame是我的ApplicationListener類。 當我運行此代碼時,應用程序因以下錯誤而崩潰:

java.lang.ExceptionInInitializerError
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1606)
at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at   com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load shared   library 'gdx' for target: Linux, 32-bit
at com.badlogic.gdx.utils.SharedLibraryLoader.load(SharedLibraryLoader.java:124)
at com.badlogic.gdx.utils.GdxNativesLoader.load(GdxNativesLoader.java:33)
at com.badlogic.gdx.backends.android.AndroidApplication.<clinit>(AndroidApplication.java:63)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1606)
at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)

誰能解決這個問題? 我想念什么嗎? 謝謝。

項目庫的結構和gradle

您僅添加.jar文件作為依賴項。 有一些.so文件用於不同的處理器體系結構,例如arm64-v8aarmeabiarmeabi-v7ax86x86_64 您需要添加它們。 將所有.so文件保留在libs文件夾中。

jniLibs.srcDirs = ['libs']添加jniLibs.srcDirs = ['libs']

Android所需的庫

armeabi/libgdx.so
armeabi-v7a/libgdx.so
x86/libgdx.so
gdx-backend-android.jar
gdx-backend-android-sources.jar

像這樣編譯:

  compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
  natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM