0

I am trying to compile a JavaFx app and install it on my phone using the process described by JavaFXPorts.

I have had to wrap gradle in version 4.1 for compatibility reasons.

I connect my Android device, which is running Android 8.0.0, and have enabled USB debugging. My USB connection options are set as 'file transfer via USB'.

To install the app on my phone, I run ./gradlew androidInstall. This gets to 100%, but the build fails stating "device offline".

Full trace:

   > Task :androidInstall
Unable to install D:\Projects\MealPlanner\build\javafxports\android\MealPlanner.apk
com.android.ddmlib.InstallException: device offline
        at com.android.ddmlib.Device.installPackage(Device.java:848)
        at com.android.ddmlib.Device.installPackages(Device.java:866)
        at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:105)
        at com.android.builder.testing.ConnectedDevice$installPackages$1.call(Unknown Source)
        at org.javafxports.jfxmobile.plugin.android.task.Install.install(Install.groovy:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:731)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:705)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: com.android.ddmlib.AdbCommandRejectedException: device offline
        at com.android.ddmlib.AdbHelper.setDevice(AdbHelper.java:857)
        at com.android.ddmlib.SyncService.openSync(SyncService.java:168)
        at com.android.ddmlib.Device.getSyncService(Device.java:481)
        at com.android.ddmlib.Device.syncPackageToDevice(Device.java:1051)
        at com.android.ddmlib.Device.installPackage(Device.java:841)
        ... 44 more


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':androidInstall'.
> com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: device offline

However, an app is created on my phone called 'MealPlanner' - but when I open it, I just get a black screen.

I have tried turning debugging on and off, but to no avail.

Other questions have been asked of the same error, but most of them are using device emulators.

My build.gradle is as follows:

/*
 * This build file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.1/userguide/tutorial_java_projects.html
 */

 buildscript {
     repositories {
         jcenter()
     }

     dependencies {
         classpath 'org.javafxports:jfxmobile-plugin:1.3.17'
     }
 }

 plugins {
     id 'java'
     id 'application'
     //id 'org.openjfx.javafxplugin' version '0.0.8'

 }

apply plugin:'org.javafxports.jfxmobile'

 mainClassName = "src.main.java.MainScreen"

 jfxmobile {

 android {
  compileSdkVersion = '27'
  androidSdk = 'C:/Users/Luke/AppData/Local/Android/Sdk'

  packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
    }
 }

     ios {
         forceLinkClasses = ['ensemble.**.*']
     }
 }


repositories {
jcenter()
maven {
     url 'http://nexus.gluonhq.com/nexus/content/repositories/releases/'
 }
 mavenCentral()
}

dependencies {
    // This dependency is found on compile classpath of this component and consumers.
    compile 'com.google.guava:guava:22.0'

    // Use JUnit test framework
    testCompile 'junit:junit:4.12'
    testCompile 'org.testfx:testfx-junit:4.0.15-alpha'
    testCompile 'org.hamcrest:hamcrest-all:1.3'
      compile "com.opencsv:opencsv:4.0"
    compile 'com.gluonhq:charm:5.0.0'
}
Link
  • 317
  • 1
  • 5
  • 17
  • what does 'adb devices' say? – JJF Jan 20 '20 at 13:34
  • "adb : The term 'adb' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1". The tutorial never mentions anything to do with it. – Link Jan 20 '20 at 13:35
  • I just installed adb on my linux terminal. adb devices gives: "*deamon stated successfully emulator-5580 offline" – Link Jan 20 '20 at 13:37
  • Have you tried https://stackoverflow.com/questions/30964854/android-studio-device-is-connected-but-offline ? Also make sure you use a proper USB cable. – José Pereda Jan 20 '20 at 15:54
  • I actually think that there wasn't any problem, despite the build failing - what it would do is create an app on my android desktop, which, when clicked, would just bring up a black screen. I thought the reason for this screen was that the build failed. But when I figured out how to install the app manually, that is, do ./gradlew android (which successfully builds), and move the produced apk file to my phone and installing it from there, I still get a black screen. – Link Jan 20 '20 at 16:09
  • So, now it's a question of why I'm getting this black screen, as ./gradlew build works on my development machine. – Link Jan 20 '20 at 16:10
  • I think the fact that it says emulator-5580 means it sees you emulator but that usb debugging is not active/enabled – JJF Jan 20 '20 at 16:10
  • I don't see how that would cause a black screen for an app? – Link Jan 20 '20 at 16:12

0 Answers0