2017-01-31 6 views
2

Я пытаюсь запустить образец проекта Javafxports Kokos, поскольку я хочу использовать компоненты JavaFX в приложении, построенном в Android Studio, но не могу заставить его правильно строить, я могу собрать все остальные образцы, но это смешанный подход не работает.Как я могу использовать активность JavaFX в проекте Android? (Пример проекта Kokos)

Когда я строю, я просто получаю черный экран и ошибку «java.lang.ClassNotFoundException: не нашел класс« org.javafxports.kokos.Main »на пути: DexPathList [[zip-файл]/data/app /org.javafxports.kokos-2/base.apk "]"

Насколько я могу судить, ни один из классов kokos фактически не встроен в apk, поэтому он не может их найти, но я могу " и почему это единственный образец, который я могу найти в этом подходе.

Может ли кто-нибудь успешно построить и запустить образец Kokos, и если да, потребовалось ли какое-либо изменение?

В качестве альтернативы есть другой пример использования компонентов JavaFX в проекте Android, подобном этому, который я мог бы использовать в качестве основы? Я просто хочу иметь приложение, состоящее из собственных действий Android, но с возможностью запуска в активность JavaFX.


Сообщение об ошибке получили в жизни:

02-01 21:43:16.406 17575-17575/org.javafxports.kokos V/DalvikLauncher: Launch JavaFX application on DALVIK vm. 
02-01 21:43:16.409 17575-17575/org.javafxports.kokos V/DalvikLauncher: We have JavaFX on our current (base) classpath, registered exit listener 
02-01 21:43:16.410 17575-17575/org.javafxports.kokos E/DalvikLauncher: Launch failed with exception. 
                     java.lang.ClassNotFoundException: Didn't find class "org.javafxports.kokos.Main" on path: DexPathList[[zip file "/data/app/org.javafxports.kokos-1/base.apk"],nativeLibraryDirectories=[/data/app/org.javafxports.kokos-1/lib/arm, /data/app/org.javafxports.kokos-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]] 
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
                      at javafxports.android.DalvikLauncher.resolveApplicationClass(DalvikLauncher.java:262) 
                      at javafxports.android.DalvikLauncher.launchApp(DalvikLauncher.java:164) 
                      at javafxports.android.FXDalvikEntity.getLauncherAndLaunchApplication(FXDalvikEntity.java:162) 
                      at javafxports.android.FXDalvikEntity.surfaceCreated(FXDalvikEntity.java:304) 
                      at android.view.SurfaceView.updateWindow(SurfaceView.java:583) 
                      at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177) 
                      at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944) 
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2063) 
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115) 
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023) 
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                      at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                      at android.view.Choreographer.doFrame(Choreographer.java:606) 
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:5461) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                      at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102) 
                     Suppressed: java.lang.ClassNotFoundException: Didn't find class "org.javafxports.kokos.Main" on path: DexPathList[[dex file "/data/dalvik-cache/xposed_XResourcesSuperClass.dex"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
                       ... 23 more 
                      Suppressed: java.lang.ClassNotFoundException: org.javafxports.kokos.Main 
                      at java.lang.Class.classForName(Native Method) 
                      at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
                      at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
                        ... 24 more 
                     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 
02-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface changed [1080, 1848], format 4 
02-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXActivity native: [JVDBG] SURFACE created native android window at 0xa47cd508, surface = 0xff9d0f60 
02-01 21:43:16.412 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed 
02-01 21:43:16.423 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed 
02-01 21:43:16.441 1378-1536/system_process I/ActivityManager: Displayed org.javafxports.kokos/javafxports.android.FXActivity: +330ms 

Вот мой файл приложения/build.gradle, я попытался обновить зависимости, но все-таки у меня возникают вопросы, есть ли что-нибудь, очевидно, неправильно?


Моего первоначальный приложение/build.gradle файл:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.5.0' 
     classpath 'com.android.tools.build:gradle:2.2.3' 
    } 
} 
repositories { 
    jcenter() 
} 
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    // minSdkVersion 16 
    buildToolsVersion "23.0.2" 
    dexOptions { 
     preDexLibraries = false 
    } 
    defaultConfig { 
     applicationId "lodgon.org.kokos" 
     minSdkVersion 16 
     targetSdkVersion 16 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    sourceSets { 
     main { 
      jniLibs.srcDir file("/opt/dalvik-sdk/rt/lib") 
      assets.srcDirs = ['assets'] 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile fileTree(include: ['*.jar'], dir: '/opt/dalvik-sdk/rt/lib/ext') 
} 


project.tasks.withType(com.android.build.gradle.tasks.Dex) { 
    additionalParameters=['--core-library'] 
} 

отредактированного приложение/build.gradle

я применил некоторые предлагаемые исправления, и изменил applicationID и dalvik-sdk, но я все еще имею ту же проблему, файл теперь выглядит примерно так:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.5.0' 
     classpath 'com.android.tools.build:gradle:2.2.3' 
    } 
} 
repositories { 
    jcenter() 
} 
apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    // minSdkVersion 16 
    buildToolsVersion "23.0.2" 
    dexOptions { 
     preDexLibraries = false 
    } 
    defaultConfig { 
     applicationId "javafxports.org.kokos" 
     minSdkVersion 16 
     targetSdkVersion 16 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true 
    } 
    sourceSets { 
     main { 
      jniLibs.srcDir file("C:\\Users\\AdamL\\.gradle\\caches\\modules-2\\files-2.1\\org.javafxports\\dalvik-sdk\\8.60.8\\6630ec66e4703c910ac3fd6151a8494c8b59186b\\unpacked\\dalvik-sdk\\rt\\lib") 
      assets.srcDirs = ['assets'] 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile fileTree(include: ['*.jar'], dir: 'C:\\Users\\AdamL\\.gradle\\caches\\modules-2\\files-2.1\\org.javafxports\\dalvik-sdk\\8.60.8\\6630ec66e4703c910ac3fd6151a8494c8b59186b\\unpacked\\dalvik-sdk\\rt\\lib\\ext') 
} 


project.tasks.withType(com.android.build.gradle.tasks.Dex) { 
    additionalParameters=['--core-library'] 
} 

Android явить

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="javafxports.org.kokos" > 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="javafxports.org.kokos.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Theseare эти изменения, которые я сделал из загруженного проекта образца

  • JavaFXPorts плагин чан ged до версии 1.32
  • Изменены ссылки плагина android-gradle к версии 2.2.3
  • Изменена версия версии retrolamba до 3.5.0
  • Изменено ApplicationID исправить один
  • Изменено расположение Dalvik-SDK, чтобы исправить один

Билд бежится из содержащих образцы проектов, как: gradlew: Кокос: androidInstall

+0

Приложение Kokos работает для меня после обновления некоторых зависимостей до последних версий. Можете ли вы разместить файл 'app/build.gradle'? –

+0

Я обновил сообщение с моим файлом app/build.gradle –

+0

Какая ваша ОС? Каково название и пакет основного класса? Каково имя пакета в AndroidManifest? –

ответ

1

В случае, если это полезно кому-либо еще, я узнал, что было не так в моем случае.

Образец файла readme файла образцов предполагает, что вы должны иметь возможность запускать проект из проекта корневых образцов, как и другие проекты, используя «gradlew: Kokos: androidInstall» или, по крайней мере, он не требует иного. Это NOT как я добился успеха в проекте.

Чтобы запустить этот проект, открытый только проект Кокоса и использовать gradlew installDebug

Кроме того, я обновил свою зависимость, Давик SDK местоположение (как это было предложен Хосе Перед) и изменил способ флага ядра-библиотеки был установлен в Gradle для замените старый способ:

dexOptions { 
    ... 
    additionalParameters=[ '--core-library'] 
    ... 
} 
1

Есть несколько проблемы на вашем файле build.gradle.

Идентификатор приложения не так, вы должны использовать имя пакета:

defaultConfig { 
    applicationId "javafxports.org.kokos" 
    ... 
} 

Dalvik-путь SDK является некорректным. Тот, который у вас есть (/opt/dalvik-sdk), основан на Linux.

Если вы пробовали другие JavaFXPorts samples, вы уже скачали последнюю версию dalvik-sdk, и она будет установлена ​​в репозитории .gradle.

Вы найдете его в разделе:

C:\Users\<user>\.gradle\caches\modules-2\files-2.1\org.javafxports\dalvik-sdk\8.60.8\<id>\unpacked\dalvik-sdk 

Найти правильный путь и заменить его в обоих sourceSets (jniLibs.srcDir) и зависимостей.

+0

Большое спасибо, я внедрил эти изменения, к сожалению, у меня все еще есть одна и та же проблема, хотя и изо всех сил пытаюсь понять, что происходит. Я собрал список всего, что я отредактировал из загруженного образца битбакет в случае, если это полезно –

+0

Если у вас все еще есть проблемы, найдите исключение с 'adb' и опубликуйте его. –

+0

Теперь я включил полное исключение, возникшее при попытке запустить приложение. –

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

  • Нет связанных вопросов^_^