1

我想为我的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 测试我的配套应用程序的指南,但它没有帮助。

原来我需要安装“Samsung Wearable Extension”。所以我做到了:

在此处输入图像描述

但是我的模拟器没有得到扩展库,所以 Tizen Studio 无法构建这些示例,因为它找不到sap.h

在此处输入图像描述

我在网上搜索了这个问题,我什么也没找到。自 Tizen 3.0 版以来,三星可穿戴扩展似乎没有为 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

现在我的问题是我没有tizen4.0 的sap文件夹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 库。

第二步是让我的安卓模拟器连接到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。您的样品必须更容易安装!

4

2 回答 2

0

即使安装了所有三星 SDK,我也遇到了同样的问题。

所以,我所做的是,转到Project > Properties > C/C++ Build > Tizen Settings并检查Samsung-sap选项。

在此处输入图像描述

这解决了fatal error: 'sap.h' file not found错误

于 2021-03-15T03:40:07.103 回答
0

仅供参考
首先,模拟器不支持 SAP。不幸的是,它只支持真实设备。

您需要在 Platform Tab 中将 Architecture 从 x86 更改为 arm。并且,您可以选择 samsung-sap 并构建代码而不会出错。

如果您使用模拟器运行/调试应用程序,Tizen Studio 会自动将设置从 arm 更改为 x86。您将再次遇到构建错误!

在此处输入图像描述 在此处输入图像描述

于 2021-03-16T05:19:49.820 回答