Closed wutaodev closed 5 years ago
Could you expand "Run tasks" tree node and show the actual failures?
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)
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.
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?
Ohh, right. You need maven
, java package management tool. I believe there are some installer packages for Mac.
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)
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...)
This is the content of apk, does not contain "libfluidsynth.so"
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
Ugh, I made a wrong commit for external/fluidsynth
. Please try 35a73a3.
After pulling the code, it is still the same as before.
You most likely have to run git submodule update
.
Yes, I have already run.
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.
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?
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.)
(Note that the cerbero setup step may ask you admin password; it does on Ubuntu to install dependencies.)
Closing as there is no further issues/questions.