atsushieno / fluidsynth-midi-service-j

JNA-based fluidsynth MIDI device service effort
MIT License
26 stars 8 forks source link

Compile this project error #5

Closed wutaodev closed 5 years ago

wutaodev commented 5 years ago

2018-11-01 4 47 50

atsushieno commented 5 years ago

Could you expand "Run tasks" tree node and show the actual failures?

wutaodev commented 5 years ago

2018-11-06 6 49 16

org.gradle.api.GradleException: Compilation error. See log for more details
    at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:16)
    at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.processCompilerExitCode(Tasks.kt:434)
    at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin_gradle_plugin(Tasks.kt:396)
    at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin_gradle_plugin(Tasks.kt:292)
    at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:254)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
    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:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
    at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
    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:256)
    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:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:745)
atsushieno commented 5 years ago

Apparently I forgot to write "how to build" section on README...! (Excuse me, it's under heavy development yet.)

The first thing to do is to run "make" under fluidsynthjna directory and get libs/fluidsynth.jar as the outcome. It's the most complicated part of the build.

wutaodev commented 5 years ago

Run "make" results as follows

cd ../external/JNAerator && mvn clean install && cd ../..
/bin/sh: mvn: command not found
make: *** [../external/JNAerator/jnaerator/target/jnaerator-0.13-SNAPSHOT-shaded.jar] Error 127

Sorry, I don't understand this compilation method. Can you elaborate a little more?

atsushieno commented 5 years ago

Ohh, right. You need maven, java package management tool. I believe there are some installer packages for Mac.

wutaodev commented 5 years ago

Haha, the compilation is successful, but clicking the "use receiver directly" button gives an error.

2018-11-07 16:38:50.897 29541-29541/name.atsushieno.fluidsynthmidideviceservicej E/AndroidRuntime: FATAL EXCEPTION: main
    Process: name.atsushieno.fluidsynthmidideviceservicej, PID: 29541
    java.lang.UnsatisfiedLinkError: Unable to load library 'fluidsynth': Native library (android-aarch64/libfluidsynth.so) not found in resource path (.)
        at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:303)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
        at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:369)
        at fluidsynth.FluidsynthLibrary.<clinit>(FluidsynthLibrary.java:26)
        at fluidsynth.androidextensions.AndroidLogger.<clinit>(AndroidLogger.kt:10)
        at name.atsushieno.fluidsynthmidideviceservicej.FluidsynthMidiReceiver.<init>(FluidsynthMidiReceiver.kt:28)
        at name.atsushieno.fluidsynthmidideviceservicej.MainActivity$onCreate$1.onClick(MainActivity.kt:27)
        at android.view.View.performClick(View.java:6608)
        at android.view.View.performClickInternal(View.java:6585)
        at android.view.View.access$3100(View.java:785)
        at android.view.View$PerformClick.run(View.java:25919)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6812)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
atsushieno commented 5 years ago

aarch64 build has some problem, but in any case the first thing to check is to have a look at your apk contents. If you are building from Android Studio and it is for debug build with Instant Run, then there should be an apk for that:

/sources/fluidsynth-midi-service-j$ unzip -l app/build/intermediates/instant-run-apk/debug/app-debug.apk | tail -n 20
     1745  1980-00-00 00:00   kotlin/text/TextHKt.kotlin_metadata
     1212  1980-00-00 00:00   kotlin/text/Typography.kotlin_metadata
  2870456  1980-00-00 00:00   lib/arm64-v8a/libfluidsynth.so
    92136  1980-00-00 00:00   lib/arm64-v8a/libjnidispatch.so
   215120  1980-00-00 00:00   lib/arm64-v8a/libnative-lib.so
  4626332  1980-00-00 00:00   lib/armeabi-v7a/libfluidsynth.so
    91692  1980-00-00 00:00   lib/armeabi-v7a/libjnidispatch.so
    99980  1980-00-00 00:00   lib/armeabi-v7a/libnative-lib.so
   106176  1980-00-00 00:00   lib/armeabi/libjnidispatch.so
   149972  1980-00-00 00:00   lib/mips/libjnidispatch.so
   132528  1980-00-00 00:00   lib/mips64/libjnidispatch.so
  4799904  1980-00-00 00:00   lib/x86/libfluidsynth.so
    91628  1980-00-00 00:00   lib/x86/libjnidispatch.so
   202428  1980-00-00 00:00   lib/x86/libnative-lib.so
  5292120  1980-00-00 00:00   lib/x86_64/libfluidsynth.so
    92248  1980-00-00 00:00   lib/x86_64/libjnidispatch.so
   219480  1980-00-00 00:00   lib/x86_64/libnative-lib.so
      384  1980-00-00 00:00   resources.arsc
---------                     -------
167870491                     244 files

If that does not contain arm64-v8a/libfluidsynth.so, then that needs to be fixed. (I can give more insights once it is confirmed that the failed build is on that way...)

wutaodev commented 5 years ago

This is the content of apk, does not contain "libfluidsynth.so" 2018-11-07 4 58 12

wutaodev commented 5 years ago

Run "make" results as follows

wutao@wutaodeMacBook-Pro:~/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/fluidsynthjna$ makecd ../external/fluidsynth/android && make -f Makefile.android all || echo "ignore this failure..." && make -f Makefile.android dist
make -f Makefile.android BUILD_ABI=x86 A_ABI=x86  build-oboe-one 
mkdir -p /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/oboe/build/x86 && cd /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/oboe/build/x86 && \
                cmake -DCMAKE_TOOLCHAIN_FILE=~/android-sdk-linux/ndk-bundle/build/cmake/android.toolchain.cmake -DBUILD_SHARED_LIBS=off -DANDROID_ABI=x86 -DANDROID_PLATFORM=android-16 ../.. && make
CMake Error: The source directory "/Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/oboe" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
make[2]: *** [build-oboe-one] Error 1
make[1]: *** [build-oboe-dep] Error 2
ignore this failure...
make[1]: *** No rule to make target `dist'.  Stop.
make: *** [fluidsynth] Error 2
atsushieno commented 5 years ago

Ugh, I made a wrong commit for external/fluidsynth. Please try 35a73a3.

wutaodev commented 5 years ago

After pulling the code, it is still the same as before.

atsushieno commented 5 years ago

You most likely have to run git submodule update.

wutaodev commented 5 years ago

Yes, I have already run.

atsushieno commented 5 years ago

It is likely due to stale cmake artifacts and should be clean. rm -rf external/fluidsynth/android/build/ would do so. I just made as easy as cd fluidsynthjna && make clean too.

wutaodev commented 5 years ago
cd ../external/fluidsynth/android && make -f Makefile.android all || echo "ignore this failure..." && make -f Makefile.android dist
for abi in x86 x86-64 armv7 arm64 ; do \
                cd /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/cerbero && ./cerbero-uninstalled -c config/cross-android-$abi.cbc build glib && cd /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android ; \
        done
/bin/sh: line 0: cd: /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/cerbero: No such file or directory
/bin/sh: line 0: cd: /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/cerbero: No such file or directory
/bin/sh: line 0: cd: /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/cerbero: No such file or directory
/bin/sh: line 0: cd: /Users/wutao/Desktop/AndroidTestDemo/fluidsynth-midi-service-j/external/fluidsynth/android/external/cerbero: No such file or directory
make[1]: *** [build-cerbero] Error 1
ignore this failure...
make[1]: *** No rule to make target `dist'.  Stop.
make: *** [fluidsynth] Error 2

Please take a look at this. Am I still missing any steps?

atsushieno commented 5 years ago

My quick guess is that git submodule update at https://github.com/atsushieno/fluidsynth-midi-service-j/issues/5#issuecomment-436579706 was not sufficient/appropriate. Please rather try make prepare at fluidsynthjna directory. It should checkout those depdendencies and sets up missing packages. I haven't tried cerbero (the actual build system that builds glib) works on Mac though.

(For cerbero I wrote certain amount of text at https://dev.to/atsushieno/fluidsynth-for-android--269i and https://dev.to/atsushieno/fluidsynth-20x-for-android-4j6b if that helps understanding.)

atsushieno commented 5 years ago

(Note that the cerbero setup step may ask you admin password; it does on Ubuntu to install dependencies.)

atsushieno commented 5 years ago

Closing as there is no further issues/questions.