简体   繁体   中英

Renaming package breaks JNI function Android studio

I am working with openCV and it was working fine till I changed the package name.I search through the google and stackoverflow but nothing worked out. It's been a day and I am frustrated. Here is the log cat. Any help will be appreciated.

12-18 08:37:24.328 12081-12144/in.indilabz.in.cbxprint E/art: No implementation found for void in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.nativeApplyFilter(int, int, long, long) (tried Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter and Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter__IIJJ)
12-18 08:37:24.333 12081-12144/in.indilabz.in.cbxprint E/UncaughtException: java.lang.RuntimeException: An error occured while executing doInBackground()
                                    at android.os.AsyncTask$3.done(AsyncTask.java:304)
                                    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                    at java.lang.Thread.run(Thread.java:818)
                                Caused by: java.lang.UnsatisfiedLinkError: No implementation found for void in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.nativeApplyFilter(int, int, long, long) (tried Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter and Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter__IIJJ)
                                    at in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.nativeApplyFilter(Native Method)
                                    at in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.processImage(PhotoProcessing.java:26)
                                    at in.indilabz.in.cbxprint.editor.fragment.RecyclerMenuFragment$GetFilterThumbsTask.doInBackground(RecyclerMenuFragment.java:144)
                                    at in.indilabz.in.cbxprint.editor.fragment.RecyclerMenuFragment$GetFilterThumbsTask.doInBackground(RecyclerMenuFragment.java:134)
                                    at android.os.AsyncTask$2.call(AsyncTask.java:292)
                                    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                    at java.lang.Thread.run(Thread.java:818) 
12-18 08:37:24.459 696-714/? E/SensorService: activeConnections...
12-18 08:37:24.459 696-714/? E/SensorService: activeConnections...
12-18 08:37:24.625 12081-12144/in.indilabz.in.cbxprint E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
                                Process: in.indilabz.in.cbxprint, PID: 12081
                                java.lang.RuntimeException: An error occured while executing doInBackground()
                                    at android.os.AsyncTask$3.done(AsyncTask.java:304)
                                    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                    at java.lang.Thread.run(Thread.java:818)
                                Caused by: java.lang.UnsatisfiedLinkError: No implementation found for void in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.nativeApplyFilter(int, int, long, long) (tried Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter and Java_in_indilabz_in_cbxprint_editor_filter_PhotoProcessing_nativeApplyFilter__IIJJ)
                                    at in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.nativeApplyFilter(Native Method)
                                    at in.indilabz.in.cbxprint.editor.filter.PhotoProcessing.processImage(PhotoProcessing.java:26)
                                    at in.indilabz.in.cbxprint.editor.fragment.RecyclerMenuFragment$GetFilterThumbsTask.doInBackground(RecyclerMenuFragment.java:144)
                                    at in.indilabz.in.cbxprint.editor.fragment.RecyclerMenuFragment$GetFilterThumbsTask.doInBackground(RecyclerMenuFragment.java:134)
                                    at android.os.AsyncTask$2.call(AsyncTask.java:292)
                                    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                    at java.lang.Thread.run(Thread.java:818) 

Based on the comment from @lockcmpxchg8b, I went to look for references on javah & found this article where I figured out the answer.

To solve this, you need to check the make file (maybe in somewhere like app/src/main/jni/Android.mk ). It should contain values like LOCAL_MODULE , LOCAL_CFLAGS & LOCAL_SRC_FILES .

LOCAL_SRC_FILES would have some .cpp files listed. Find the function(s) in one of the files that has a name like Java_old_package_name_editor_filter_PhotoProcessing_nativeApplyFilter & change old_package_name to your new package.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM