问题描述
我想为我的 Tizen5.5 手表开发一个配套应用程序,它使用来自手机(Android 主机)的信息。我正在使用 Tizen Studio 开发 Windows 10。
我找到了一个很好的例子,我想测试它:https://developer.samsung.com/galaxy-watch-develop/samples/companion/hello-native.html,它的日期是 2016 年,有点旧,但我没有找到更新的东西。
对于开发我想将 Tizen5.5 模拟器与 Android Studio 的模拟器一起使用。
我找到了关于如何使用 Tizen Emulator 测试我的配套应用程序的 guidance,但它没有帮助。
原来我需要安装“Samsung Wearable Extension”。所以我做到了:
但是我的模拟器没有获得扩展库,所以 Tizen Studio 无法构建这些示例,因为它找不到 sap.h
:
我在网上搜索了这个问题,但一无所获。从 Tizen 3.0 版开始,Samsung Wearable Extension 似乎没有为 x86 模拟器编译(他们只为真实的设备提供了,这肯定不是 x86)。
所以我最终复制了 Tizen3 的 x86 版本的 SAP,然后最终 Tizen Studio 可以构建此示例。
但是我的模拟器无法运行示例,因为它没有安装 SAP。
然后我找到了这个站点:https://github.com/Samsung/Tizen.NET/issues/54,他们设法通过这些命令手动将 sap 安装到模拟器上:
sdb push [tizen_sdk_path]\platforms\tizen-4.0\wearable\emulator-images\add-ons\sap /opt/usr/home/owner/sap
sdb shell rpm -i /opt/usr/home/owner/sap/sap-1.9.5-0.i686.rpm
现在我的问题是我在 sap
中没有用于 tizen4.0 的 add-ons
文件夹。我只有 Tizen3.0。
所以我尝试这样做,但 rpm -i
失败了:
sh-3.2# ls -all /lib/* | grep ncurses
lrwxrwxrwx 1 root root 19 Nov 3 10:15 /lib/libncurses++.so.6 -> libncurses++.so.6.1
-rwxr-xr-x 1 root root 71696 Oct 23 22:27 /lib/libncurses++.so.6.1
lrwxrwxrwx 1 root root 20 Nov 3 10:15 /lib/libncurses++w.so.6 -> libncurses++w.so.6.1
-rwxr-xr-x 1 root root 71696 Oct 23 22:27 /lib/libncurses++w.so.6.1
lrwxrwxrwx 1 root root 17 Mar 13 18:20 /lib/libncurses.so.5 -> libncurses.so.6.1
lrwxrwxrwx 1 root root 17 Nov 3 10:15 /lib/libncurses.so.6 -> libncurses.so.6.1
-rwxr-xr-x 1 root root 169780 Oct 23 22:27 /lib/libncurses.so.6.1
lrwxrwxrwx 1 root root 18 Nov 3 10:15 /lib/libncursesw.so.6 -> libncursesw.so.6.1
-rwxr-xr-x 1 root root 247700 Oct 23 22:27 /lib/libncursesw.so.6.1
sh-3.2# rpm -i sap-1.7.54-0.i686.rpm
error: Failed dependencies:
libncurses.so.5 is needed by sap-1.7.54-0.i686
如您所见,libncurses.so.5
实际上在那里(尽管我已将其链接到 libncurses.so.6.1
。
所以这是第一步:让我的 Tizen5.5 模拟器包含 SAP 库。
第二步是让我的 Android 模拟器连接到 Tizen5.5 模拟器:
我设法将 SAccessoryService_Emul.apk
安装到我的 Android 模拟器,但我无法让它识别我的手表模拟器,它总是显示“已断开连接”(并不奇怪,因为手表模拟器没有 SAP 库) :
我还对 adb
、adb -e forward tcp:8230 tcp:8230
执行了 -e
命令,因为主机不是 USB 设备而是模拟器。
为了确保我没有遗漏任何东西,我已经安装了 Tizen 3.0 模拟器(它显然无法运行我为 5.5 编译的应用程序),并且这个模拟器实际上安装了 SAP 库。
所以我转到了第 2 步,并在 Android 模拟器上打开了“三星附件模拟器”,但是每当它尝试与 Tizen 模拟器连接时,它就会崩溃:
另一个设计精良的三星软件。
如果有人感兴趣,这里是错误:
2021-03-13 14:36:46.734 5124-5157/com.samsung.accessory.framework E/AndroidRuntime: FATAL EXCEPTION: SAP_DAEMON_HANDLER_THREAD
Process: com.samsung.accessory.framework,PID: 5124
java.lang.Arrayindexoutofboundsexception: Failed to update offset while sending the message! [offset=0; size=2]
at com.samsung.accessory.session.SAMessage.decrementOffset(SAMessage.java:359)
Arrayindexoutofboundsexception
:天啊。
郑重声明:三星家伙:真丢人!您设法创建了世界上最糟糕的 SDK。您的示例必须方式更容易安装!
解决方法
我遇到了同样的问题,即使安装了所有三星 SDK。
所以,我所做的是,转到 Project > Properties > C/C++ Build > Tizen Settings 并检查 Samsung-sap 选项。
解决了 fatal error: 'sap.h' file not found
错误
F.Y.I
首先,模拟器不支持SAP。不幸的是,它只支持真机。
您需要在平台选项卡中将架构从 x86 更改为 arm。 并且,您可以选择 samsung-sap 并构建代码而不会出错。
如果您使用模拟器运行/调试您的应用程序,Tizen Studio 会自动将设置从 arm 更改为 x86。又会遇到build ERROR!!