Open WangStormstout opened 2 years ago
You mention After I compile it successfully, some functions can be used, and some functions cannot be used.
,
Can you provide me with a list of all functions that failed on you?
It looks like this is indeed a bug. The api should be calling Java_com_cherryleafroad_kmagick_MagickWand_magickGetImageColors
instead. That one is fixed now
@MolotovCherry
tks so much. getImageColors
works fine.
But I found that there are still many functions that cannot be used normally
For example: colorspace
, getImageHistogram
, etc.
I need to modify the report crude function native method to
Does something like getImageColors() -> magickGetImageColors() work?
sry, if you have time, I hope you can reply. Although we have jet lag. lol
if (Magick.isInitialized()) {
val b = MagickWand()
val path = "${this.externalCacheDir}/test.png"
b.readImage(path)
logD(b.getImageAlphaChannel())
logD(b.getImagePage())
logD(b.getImageHeight())
logD(b.getImageResolution())
logD(b.getImageColors)
b.getImageHistogram()?.let {
it.forEach { pixelWand ->
logD(pixelWand.color)
}
}
}
2022-11-04 10:47:42.056 8927-8927/com.psyduck.mosaicdemo D/TestKmagickActivity: true
2022-11-04 10:47:42.057 8927-8927/com.psyduck.mosaicdemo D/TestKmagickActivity: PageGeometry(width=372, height=368, x=0, y=0)
2022-11-04 10:47:42.057 8927-8927/com.psyduck.mosaicdemo D/TestKmagickActivity: 368
2022-11-04 10:47:42.057 8927-8927/com.psyduck.mosaicdemo D/TestKmagickActivity: Resolution(x=37.79, y=37.79)
2022-11-04 10:47:42.215 8927-8927/com.psyduck.mosaicdemo D/TestKmagickActivity: 30307
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo E/MAGICK: kmagick::magick_wand: `MagickWand::getImageHistogram()` threw an exception: JavaException
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] No pending exception expected: java.lang.NoSuchMethodError: no non-static method "Lcom/cherryleafroad/kmagick/PixelWand$Companion;.newInstance()Lcom/cherryleafroad/kmagick/PixelWand;"
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at com.cherryleafroad.kmagick.PixelWand[] com.cherryleafroad.kmagick.MagickWand.getImageHistogram() (MagickWand.kt:-2)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.testColor() (TestKmagickActivity.kt:38)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.onCreate$lambda-0(com.psyduck.mosaicdemo.kmagick.TestKmagickActivity, android.view.View) (TestKmagickActivity.kt:22)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.$r8$lambda$FJY5eMMKHYdR18_XVPbBFDgbsD0(com.psyduck.mosaicdemo.kmagick.TestKmagickActivity, android.view.View) (TestKmagickActivity.kt:-1)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity$$ExternalSyntheticLambda0.onClick(android.view.View) (D8$$SyntheticClass:-1)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.performClick() (View.java:7317)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.performClickInternal() (View.java:7291)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.access$3600(android.view.View) (View.java:838)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.view.View$PerformClick.run() (View.java:28247)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:900)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:103)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Looper.loop() (Looper.java:219)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:8668)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:513)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1109)
2022-11-04 10:47:42.639 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560]
2022-11-04 10:47:42.721 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] Runtime aborting...
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] All threads:
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] DALVIK THREADS (21):
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] "main" prio=10 tid=1 Runnable
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | group="" sCount=0 dsCount=0 flags=0 obj=0x72ec3f58 self=0x7e92810800
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | sysTid=8927 nice=-10 cgrp=default sched=1073741825/2 handle=0x7f1982c0d0
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | state=R schedstat=( 1206397398 8281773 162 ) utm=104 stm=15 core=4 HZ=100
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | stack=0x7ff383e000-0x7ff3840000 stackSize=8192KB
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | held mutexes= "abort lock" "mutator lock"(shared held)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #00 pc 000000000042f8e8 /apex/com.android.runtime/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #01 pc 0000000000523590 /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+508)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #02 pc 000000000053e75c /apex/com.android.runtime/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+844)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #03 pc 000000000053735c /apex/com.android.runtime/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+504)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #04 pc 0000000000536520 /apex/com.android.runtime/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+500)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #05 pc 00000000004e0a48 /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1700)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #06 pc 000000000000c600 /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+684)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #07 pc 0000000000528ba8 /apex/com.android.runtime/lib64/libart.so (art::Thread::AssertNoPendingException() const+1176)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #08 pc 0000000000178564 /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::FindClass(art::Thread*, char const*, art::Handle<art::mirror::ClassLoader>)+64)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #09 pc 000000000039cfbc /apex/com.android.runtime/lib64/libart.so (art::JNI::FindClass(_JNIEnv*, char const*)+1276)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #10 pc 0000000000041714 /data/app/com.psyduck.mosaicdemo-QwSCEhGiaWC2aixRTJ0saQ==/base.apk (offset a29000) (???)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.cherryleafroad.kmagick.MagickWand.getImageHistogram(Native method)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.testColor(TestKmagickActivity.kt:38)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.onCreate$lambda-0(TestKmagickActivity.kt:22)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.$r8$lambda$FJY5eMMKHYdR18_XVPbBFDgbsD0(TestKmagickActivity.kt:-1)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.psyduck.mosaicdemo.kmagick.TestKmagickActivity$$ExternalSyntheticLambda0.onClick(D8$$SyntheticClass:-1)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.view.View.performClick(View.java:7317)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.view.View.performClickInternal(View.java:7291)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.view.View.access$3600(View.java:838)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.view.View$PerformClick.run(View.java:28247)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.os.Handler.handleCallback(Handler.java:900)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.os.Handler.dispatchMessage(Handler.java:103)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.os.Looper.loop(Looper.java:219)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at android.app.ActivityThread.main(ActivityThread.java:8668)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at java.lang.reflect.Method.invoke(Native method)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
2022-11-04 10:47:42.722 8927-8927/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668]
So, the DLL exports certain functions. The exported kotlin functions are supposed to call the exact implementation. The names should match up with this list. If it doesn't, the function is probably named wrong on the kotlin side.
You can see here that the function names match Java_package_name_separated_by_underscores_className_functionName
Does something like getImageColors() -> magickGetImageColors() work?
Only if the cause of it was a wrongly named function. In your example above, that's an internal error.
Please keep reporting every single error you find. I can't fix them without logs 😄
@MolotovCherry Ok. tks. If I find a problem, I will synchronize it to issues in time. It is estimated that it will be soon. lol. I'm trying to convert a picture to a pixel picture, the conversion is very simple. But the color of the pixel picture will be very many, I need to combine similar color blocks into one color block and minimize the colors used. Just like a 400x400 picture may have thousands of pixel images, I need to summarize the colors into more than a dozen, this step is relatively difficult. So I really appreciate your library.
There may be problems with the PixelWand
.
```java
if (Magick.isInitialized()) {
val b = MagickWand()
val path = "${this.externalCacheDir}/test.png"
b.readImage(path)
logD(b.getImageAlphaChannel())
logD(b.getImagePage())
logD(b.getImageHeight())
logD(b.getImageResolution())
logD(b.getImageColors)
val pixelWand = b.getImagePixelColor(1L, 1L)
Log.d(TAG, "$pixelWand")
}
```
```log
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo E/MAGICK: kmagick::magick_wand: `MagickWand::getImagePixelColor()` threw an exception: JavaException
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] No pending exception expected: java.lang.NoSuchMethodError: no non-static method "Lcom/cherryleafroad/kmagick/PixelWand$Companion;.newInstance()Lcom/cherryleafroad/kmagick/PixelWand;"
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at com.cherryleafroad.kmagick.PixelWand com.cherryleafroad.kmagick.MagickWand.getImagePixelColor(long, long) (MagickWand.kt:-2)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.testColor() (TestKmagickActivity.kt:46)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.onCreate$lambda-0(com.psyduck.mosaicdemo.kmagick.TestKmagickActivity, android.view.View) (TestKmagickActivity.kt:31)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity.$r8$lambda$FJY5eMMKHYdR18_XVPbBFDgbsD0(com.psyduck.mosaicdemo.kmagick.TestKmagickActivity, android.view.View) (TestKmagickActivity.kt:-1)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.psyduck.mosaicdemo.kmagick.TestKmagickActivity$$ExternalSyntheticLambda0.onClick(android.view.View) (D8$$SyntheticClass:-1)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.performClick() (View.java:7317)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.performClickInternal() (View.java:7291)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at boolean android.view.View.access$3600(android.view.View) (View.java:838)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.view.View$PerformClick.run() (View.java:28247)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:900)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:103)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.os.Looper.loop() (Looper.java:219)
2022-11-04 12:11:37.984 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:8668)
2022-11-04 12:11:37.985 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
2022-11-04 12:11:37.985 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:513)
2022-11-04 12:11:37.985 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1109)
2022-11-04 12:11:37.985 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: thread.cc:2560]
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] Runtime aborting...
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] All threads:
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] DALVIK THREADS (15):
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] "main" prio=10 tid=1 Runnable
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | group="" sCount=0 dsCount=0 flags=0 obj=0x72ec3f58 self=0x7e92810800
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | sysTid=17771 nice=-10 cgrp=default sched=1073741825/2 handle=0x7f1982c0d0
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | state=R schedstat=( 839053125 22108857 219 ) utm=74 stm=9 core=4 HZ=100
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | stack=0x7ff383e000-0x7ff3840000 stackSize=8192KB
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] | held mutexes= "abort lock" "mutator lock"(shared held)
2022-11-04 12:11:38.061 17771-17771/com.psyduck.mosaicdemo A/duck.mosaicdem: runtime.cc:668] native: #00 pc 000000000042f8e8 /apex/com.android.runtime/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream
PixelWand
is driving me crazy. LOL
The good news is that that's the same error. 👍🏻 It'll be fixed in one place.
Let me know every error one you receive. Thanks!
So I really appreciate your library.
I'm glad you're enjoying it! Also, as they say, 加油! 😄
Just a question, but have you installed objenesis as per the instructions on the main page?
Also, does this example work for you? When I put this example up, I verified everything works 100% in it https://github.com/MolotovCherry/kmagick/blob/main/example/src/main/kotlin/com/example/cli/Main.kt
@MolotovCherry Do you mean do I import objenesis-3.2.jar to libs? I import.
@MolotovCherry
I didn't run your example. I created the Demo according to the example. Import the corresponding jar
and so
.
Am I missing some important step?
Here is my project structure: https://imgse.com/i/zSYOz9
@MolotovCherry I didn't run your example. I created the Demo according to the example. Import the corresponding
jar
andso
. Am I missing some important step? Here is my project structure: https://imgse.com/i/zSYOz9
It looks fine to me from what I can tell. I'll have to do some local testing to see what (if anything) is going on. I'll report back when I have some time to
Ok. Thank you very much for your reply.
(I really don't know which so
lib imported is missing what important code).
lol cry cry cry.
Sorry, I just started using your library. Got some problems, maybe a little stupid. After I compile it successfully, some functions can be used, and some functions cannot be used. These are all JNI problems, I hope you can help me if you have time.