Kanzi 常见问题
使用Image在app之间透明的时候透明部分会出现白框
使用Image在app之间透明的时候透明部分会出现白框,这时候解决方法就是不要使用默认的image, 得使用Material Brush去绘制就能解决这个问题
Kanzi的一些调试技巧
kanzi 可以用来开发跨平台的软件产品,涉及到kanzi studio,kanzi engine api, android,windows, qnx,linux等等,这里我们整理了一些以往的一些调试技巧,遇到问题不可怕,重要的是要有思路方法去分析问题,定位问题,找到问题的解决办法 以下是一些问题的解决思路 有的时候问题出现了,可能仅仅是kanzi studio preview,导出windows exe可能就没有问题,所以测试问题不能光盯着kanzi studio ...
IMX 上电启动500ms AP才开始工作
低温下,IMX6D QNX6.6 测试发现上电500ms后,CPU才开始工作,开始执行第一条指令。 常温不会,低温下出现这一点情况的话可以通过如下如规避:已经验证去掉晶振从内部时钟启动的功能,系统运行稳定。
undefined reference to 'kanzi::Surface::getGPUMemoryUsageOverride() const'
D:\kz\328\testprojects\test\Application\platforms\android\lib/libMediaPlayerPlugin_component.a(videoplayer.o):videoplayer.cpp:function vtable for Vide oTexture: error: undefined reference to 'kanzi::Surface::getGPUMemoryUsageOverride() const' ...
kanzi 目前不支持多个按钮同时点击
在多点触控的情况下,2个按钮同时被按下,松开一个手指,两个按钮都释放了。 正确的应该是 按下两个按钮,松开哪个手指,只是释放哪个按钮。
kanzi 启动导致lvds信号丢失或者声音有杂音
有些客户在目标机上测试kanzi启动时出现lvds信号丢失,或者kanzi启动的时候如果正在播放声音,声音会出现杂音,这些问题现在都证实是系统的问题,kanzi 只是基于c++和opengles搭建的,不会对系统进行底层控制或者影响操作。
kanzi 3.2.5 的状态机的state的on attached 中有delay会导致crash
状态机state的on attached 中有delay这种做法在kanzi 3.2.5 上是有问题的,会导致crash,但是crash 发生在Debug 模式下,由assert抛出,在release模式下没有问题,但是潜在危险,会导致程序在不可预知的情况下crash,这个bug在3.3后是fix掉的。目前芬兰还在处理3.2.x上的fix。
unable to create window buffers
当在kanzi中设置的窗口大小超过了显示器的大小,就会出现错误:unable to create window buffers configuration.defaultWindowProperties.width = 1280; configuration.defaultWindowProperties.height = 720;
创建kanzi工程的命名不要有-横杠字符
注意创建kanzi工程的时候不要有横杠字符,比如test-app,否则生成的源代码中的cfg名字会改成testapp.kzb.cfg ,从而运行的时候提示找不到kzb,可以修改下cfg的名字即可。 但是尽量避免这样命名
kanzi 的engine 不匹配导致 invalid property size
通常我们的客户电脑上可能安装了3.2.3 也安装了3.2.8 版本的或者其他版本的kanzi,当安装多个kanzi版本后,如果用kanzi studio 3.2.8 打开的工程导出的kzb,最后使用visual studio 编译的时候链接的是3.2.3下的库,就会出现这样问题 kanzi的多个版本的管理有如下的推荐 把kanzi的所有的工程都放在kanzi的workspace 的第一级子目录下,工程的workspace的名字尽量不改默认的,这样知道是哪个kanzi的版本的
关于指针撕裂和抖动的问题
指针抖动的问题: 人眼有视觉残留,当帧率低的时候,前后两个指针位置处有比较大的空隙,我们就会在两个指针中间看到空隙,感觉上就是抖动。 缓解抖动的措施是提高帧率,或者使用运动模糊; 提高帧率:让前后帧的指针位置更连续,视觉上就会改善。(这个需要优化帧率) ...
[Localization 本地化]使用CSV 插件实现在中文的本地化
拷贝 CsvPlugin .dll (位于%ProgramData%\Rightware\<KanziVersion>\plugins 目录).如果plugins目录不存在,则创建一个。 打开Kanzi Studio. 在Kanzi Studio中选择File > Import > Reload Kanzi Studio Plugins 加载新加入的Kanzi Studio插件 右键单击Library 里的Localization下的Localization Table, 选择"Export ...
逻辑控制层与UI层的交互方式
使用Kanzi真正地实现了代码和UI界面分离的开发方式。 Kanzi studio 负责HMI界面设计, 所有的界面导出kzb格式资源文件。 Kanzi engine 提供api帮助程序进行业务逻辑编程以及与HMI界面进行交互。 最终目标程序包含 exe (业务逻辑,用户代码),kzb(HMI 界面),.so(kanzi engine),完美的实现了代码与界面分离,修改 HMI 只需要替换 kzb 资源即可, exe 都不需要重新编译。
多点触控的支持
Kanzi 支持多点触控的手势,比如 pinch,drag,drop,swipe,pan,单击,双击,长按, 同时也支持自定义的手势。
自定义控件
Kanzi 中提供了标准的控件,比如 button, slider, image button 如下 Kanzi 中也可以随意的组合创建自己的控件,同时 kanzi 也提供 plugin 插件机制, 程序员可以利用kanzi 的插件开发框架开发出各种不常见的控件,比如视频播放控件, 音频播放控件,和其他外部工具集成的控件等等。 Example 中就有 2Dplugin 和 3Dplugin,2Dplugin 实现的是视频播。
目标机上的 Debug 的支持
Kanzi 提供 debug 库,可以使用各个目标平台的 IDE 进行 debug,也可以支持 print 打印命令行的log,还提供 assert 和异常捕获这样的机制和 api。
Application,Core,Kanzi,System,User的文件目录结构的介绍
Application 是对不同平台的入口函数的封装,比如 main,winmain,activity 等等。 Core 是 kanzi 的核心数据结构和算法。 User 和 Kanzi 是用户层的 api,可以用来对场景进行操作的 api, user 下的是 c 的 api, kanzi 下的是c++的 api,目前 kanzi 3.1 还有部分 api 是 c 的形式,未来几个版本很快会完全切换到 c++。 System 封装了各个平台相关的 api,比如 debug, time,线程等等。
VS编译插件,运行时候找不到gl相关的dll
如下错误: 通常是相关的路径配置不对:需要添加如下path: PATH=$(ProjectDir)$(KanziEnginePath)$(KanziDllPath)
kanzi的工程使用eclipse 编译的apk启动速度比scons编译的慢很多
使用eclipse编译的apk中的assets下的kzb是被压缩的,启动的时候需要解压缩,但是scons编译的apk中的kzb是没有压缩的,所有启动的时间会快。 scons编译的配置就在build.xml 中, 在Examples\Gestures\Application\configs\platforms\android 下的build.xml 打开可以看到
View动画过程中View被部分遮挡的解决方案
我们有使用View的属性动画。但是测试时发现,原本在Pad上运行良好的View动画,在目标平台上运行时会出现下列问题: 运行动画的View在动画过程中,View的一部分始终会被父View 所遮挡。 原因: 目标平台上调用View.bringToFront之后,父View没有自动刷新。 解决方法: 在调用View.bringToFront之后,将父View刷新 ...
android上集成kanziview和textureview 播放视频和camera黑屏因为AndroidManifest.xml 中 uses-sdk 顺序导致
kanzi默认创建的android工程的AndroidManifest.xml 中的uses-sdk 位置在最后,会导致textureview 播放导致黑屏 正确的顺序如下 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.rightware.kanzi.mytextureview" android:versionCode="1" ...
使用scons -j4 开启多线程编译apk会导致libkanzi.so 无法被打包进apk
kanzi 3.2.3lts , kanzi 3.4 都存在这样的问题 新建一个kanzi studio project with c++ application. 进入到android工程目录下,使用scons -j4 编译, 第一次编译libkanzi.so 还没有编译出来,会发现kanzi是先编译apk,然后再link libkanzi.so 所以第一次编译出来的apk没有libkanzi.so 比较小,安装运行时提示如下错误 Process: ...
android 编译apk ant 找不到rt.jar
kanzi的android程序中用到了如下的代码 import java.util.*;//工具类一般都在util里面 import java.util.concurrent.ThreadLocalRandom; import com.rightware.kanzi.*; public class BSplineArea extends KanziActivity { private static final String TAG = "BSplineArea"; public void ...
eclipse打开kanzi工程编译冲突问题
如果我们在eclipse里面把kanziengine.jar包拷贝到工程中,eclispe可以正常编译, 但是scons会引发dex重复定义,这是因为scons的配置文件会解压kanziengine.jar包, 在我们之前拷贝的过程以及解压一次了,这样会引发冲突, 这时候我们把<unzip src="${engine.dir}/configs/platforms/android/kanzi_engine.jar" dest="${out.dir}/classes" />注释掉
在android上使用二进制变量报错“binary literals are not supported in -source 1.5”
测试方法 新建一个工程,打开android工程目录下的src/com/rightware/kanzi/jdkbinary/jdkbinary.java 添加如下变量,使用二进制来表达 private static int i = 0b11; 编译出错“binary literals are not supported in -source 1.5” 解决办法 找到kanziworkspace323/engine/configs/platforms/android/config.py ...
kanzi 3.5 使用eclipse编译的apk无法启动的解决办法
我们知道eclipse编译的apk,默认会对kzb格式的文件进行压缩的,kanzi 3.5开始为了加快kzb的读取速度,使用的是非压缩的文件读写的方法,无法读取压缩过的kzb,所以默认编译的apk会无法启动,提示无法读取kzb~ 最好的解决办法是配置eclipse编译apk不压缩kzb,但是没找到办法 另一个解决办法就是指定kzb从sdcard读取,不把kzb打包到apk里 代码如下 ...