我正在尝试使用Java将TUYA公司的SDK(智能生活应用程序SDK)作为本地SDK集成到Flutter项目中。我遵循了官方网站上发布的步骤,并进行了一些调整,使其在Flutter项目中发挥作用。当所有的集成完成后,应用程序的构建就可以了,我尝试初始化SDK,它显示了致命的异常:主
正在调试模式下在sdk gphone64 x86 64上启动lib\main.art。。。lib\main.dart:1
√内置\app\outputs\flutter apk\app-debug.apk.
E/AndroidRuntime(12996):致命异常:mainE/AndroidRuntime(12996):进程:com.example.project,PID:12996E/AndroidRuntime(12996):java.lang.UnsisfiedLinkError:未找到java.lang.Object com.tuya.smart.security.jni.SecureNativeApi.doCommandNative的实现(android.content.Context,int,byte[],byte]],boolean,boolean)(已尝试Java_com_tuya_smart_security_jni_SecureNatuveApi_doCommandNative和Java_com_tuya_smart.security_jni_SecureNationApi_doCommand Native__Landroid_content_Context _2I_3B_3BZZ)E/AndroidRuntime(12996):位于com.tuya.smart.security.jni.SecureNativeApi.doCommandNative(Native Method)E/AndroidRuntime(12996):位于com.tuya.smart.security.jni.JNICLibrary.doCommandNative(JNICLibrari.java:55)E/AndroidRuntime(12996):在com.tuya.sdk.network.TuyaNetworkSecurity.intJNI(TuyaNetworkSecurity.java:9)E/AndroidRuntime(12996):在com.tuya.smart.android.network.TuyaSmartNetWork.initialize(TuyaSmartNetWork.java:35)E/AndroidRuntime(12996):在com.tuya.smart.sdk.TuyaSdk.initTuyaData(TuyaSdk.java:81)E/AndroidRuntime(12996):在com.tuya.smart.sdk.TuyaSdk.init(TuyaSdk.java:220)E/AndroidRuntime(12996):在com.tuya.smart.sdk.TuyaSdk.init(TuyaSdk.java:60)E/AndroidRuntime(12996):在com.tuya.smart.home.sdk.TuyaHomeSdk.init(TuyaHomeSdk.java:107)E/AndroidRuntime(12996):在com.example.project.FToyaSmartApp.onCreate(FTuyaSmartApp.java:14)E/AndroidRuntime(12996):在android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211)E/AndroidRuntime(12996):在android.app.ActivityThread.handleBindApplication(ActivityThreads.java:6725)E/AndroidRuntime(12996):在android.app.ActivityThread.access$1500(ActivityThreads.java:247)E/AndroidRuntime(12996):在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:2053)E/AndroidRuntime(12996):在android.os.Handler.dispatchMessage(Handler.java:106)E/AndroidRuntime(12996):在android.os.Looper.lopOnce(Looper.java:201)E/AndroidRuntime(12996):在android.os.Looper.loop(Looper.java:288)E/AndroidRuntime(12996):位于android.app.ActivityThread.main(ActivityThreads.java:7839)E/AndroidRuntime(12996):位于java.lang.reflect.Method.ioke(Native Method)E/AndroidRuntime(12996):在com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)E/AndroidRuntime(12996):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
如果有人遇到过类似的问题,请告诉我,因为我真的不知道如何解决这个问题。
Tuya Smart Life SDK不适用于x86 android,因为它们调用的是平台特定的本地库,而不是为x86打包的。
来自快速集成文档:
App SDK v3.10.0及更早版本仅支持armeabi-v7a。App SDK v3.11.0及更高版本集成了armeabi-v7a和arm64-v8a。如果已将.so库添加到项目中,则必须删除它们,并且只能使用SDK中包含的库。
因此,您需要使用arm64映像在AVD管理器中设置模拟ARM设备。
然而,请注意,普通的基于QEMU2的模拟器仅运行ARM映像,其中API<27(即牛轧糖),并且非常缓慢
值得庆幸的是,谷歌在x86_64版本中添加了部分arm仿真(即大多数操作系统在x86下运行,但为arm编译的应用程序在仿真下运行)>=11.来源:谷歌博客
经过测试,Tuya API在Android 11.0 x86_64上运行正常。
将flutter作为常规工具的一部分来构建arm而不是x86_64更难——到目前为止,我只尝试过手动强制:
flutter build apk --debug --split-per-abi
adb -e install .buildappoutputsflutter-apkapp-armeabi-v7a-debug.apk