jenly1314 / WeChatQRCode

⛄ 基于OpenCV开源的微信二维码引擎移植的二维码扫码识别库
https://jenly1314.github.io/WeChatQRCode/
Apache License 2.0
634 stars 125 forks source link

arm64-v8a平台,进入扫描界面过几秒app挂了 #49

Closed konkong closed 7 months ago

konkong commented 7 months ago

03-30 11:51:23.370 E/cv::error()(32381): OpenCV(4.9.0) Error: Requested object was not found (could not open directory: /data/app/***-RNwWSDNOyjf7H-aDC_PxVg==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/king/work/opencv/opencv-4.9.0/modules/core/src/glob.cpp, line 279

jenly1314 commented 7 months ago

03-30 11:51:23.370 E/cv::error()(32381): OpenCV(4.9.0) Error: Requested object was not found (could not open directory: /data/app/***-RNwWSDNOyjf7H-aDC_PxVg==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/king/work/opencv/opencv-4.9.0/modules/core/src/glob.cpp, line 279

我测试是正常的,有其他关键信息要补充的吗?

konkong commented 7 months ago

gradle version:8.0 gradle plugin:8.1.2 compileSdk 34
minSdkVersion 24 targetSdkVersion 33

引用部分

        ndk {
            abiFilters "arm64-v8a"/*"arm64-v8a", "x86", "armeabi-v7a", "x86_64"*/
        }
    implementation 'com.github.jenly1314.WeChatQRCode:opencv:2.1.0'
    implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv64:2.1.0'
//    implementation 'com.github.jenly1314.WeChatQRCode:opencv-armv7a:2.1.0'
//    implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86_64:2.1.0'
//    implementation 'com.github.jenly1314.WeChatQRCode:opencv-x86:2.1.0'
    implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode:2.1.0'
    implementation 'com.github.jenly1314.WeChatQRCode:wechat-qrcode-scanning:2.1.0'

使用部分

public class ScanDemoActivity extends WeChatCameraScanActivity {
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OpenCV.initOpenCV();
        WeChatQRCodeDetector.init(this);
       ......
    }
}

<FrameLayout ...>
    <androidx.camera.view.PreviewView
        android:id="@+id/previewView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <com.king.view.viewfinderview.ViewfinderView
        android:id="@+id/viewfinderView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/ivFlashlight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/camera_scan_flashlight_selector"/>
</FrameLayout>

具体完整打印信息:https://f.ws59.cn/f/drlh0j87t01

jenly1314 commented 7 months ago
OpenCV.initOpenCV();
WeChatQRCodeDetector.init(this);

这个初始化放错地方了,需要提前初始化,建议放到 MainActivityWeChatCameraScanActivity 里面都已经开始使用了,你再初始化,顺序错了。

konkong commented 7 months ago
OpenCV.initOpenCV();
WeChatQRCodeDetector.init(this);

这个初始化放错地方了,需要提前初始化,建议放到 MainActivityWeChatCameraScanActivity 里面都已经开始使用了,你再初始化,顺序错了。

我重新放置到MainActivity里,再次进入扫描界面还是会报一样的错误

konkong commented 7 months ago

找到原因了,是由于我还引入了百度地图库,导致两个libc++_shared.so冲突

当时看到这个编译错误,直接使用下面方法保留了一个 刚才比较看编译最终将百度地图库中的libc++_shared.so打包进apk了 我将百度地图库中的libc++_shared.so删了就ok了

packagingOptions {
        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
    }
jenly1314 commented 7 months ago

找到原因了,是由于我还引入了百度地图库,导致两个libc++_shared.so冲突

当时看到这个编译错误,直接使用下面方法保留了一个 刚才比较看编译最终将百度地图库中的libc++_shared.so打包进apk了 我将百度地图库中的libc++_shared.so删了就ok了

packagingOptions {
        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
    }

好的,记得关掉此问题。