使用scons -j4 开启多线程编译apk会导致libkanzi.so 无法被打包进apk

使用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: com.rightware.kanzi.ddddd, PID: 5017
                                                java.lang.UnsatisfiedLinkError: Couldn't load kanzi from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.rightware.kanzi.ddddd-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.rightware.kanzi.ddddd-1, /vendor/lib, /system/lib]]]: findLibrary returned null
                                                    at java.lang.Runtime.loadLibrary(Runtime.java:358)
                                                    at java.lang.System.loadLibrary(System.java:526)
                                                    at com.rightware.kanzi.KanziActivity.onCreate(Unknown Source)
                                                    at android.app.Activity.performCreate(Activity.java:5231)
                                                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
                                                    at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                    at android.os.Looper.loop(Looper.java:136)
                                                    at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                    at java.lang.reflect.Method.invokeNative(Native Method)
                                                    at java.lang.reflect.Method.invoke(Method.java:515)
                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                    at dalvik.system.NativeStart.main(Native Method)


解决办法就是使用scons 来编译,不要使用多线程

    • Related Articles

    • 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 ...
    • kanzi 在android端的实现的原理

      kanzi在android 就是作为一个SurfaceView来进行OpenGLES的绘制的,基于的是Activity,主要有以下几个文件来实现对android这边的接口的
    • [Rendering - Android窗体透明效果]

      以下方法在Kanzi 3.6中适用 kanzi studio中设置node2d 的blend mode 为Opaque,设置透明的区域以及透明度(调整backgroundBrush的透明度) 设置kanzi surface的rgba通道为8888 (application.cfg中修改) 设置Kanzi View支持透明(参考附件代码) 设置Android ...
    • 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"       ...
    • Kanzi 在android 平台上的开发环境配置

      Kanzi 安装的菜单上有一个kanzi android build environment setup ,可以一键配置android 开发环境,但是需要联网从google的网站上下载android的sdk开发包,国内的网络经常会遇到 下载很慢或者断线的情况,所以我们为客户下载好了,上传到怿星网盘上,并且准备了文档教程教大家怎么配置android 开发环境 网盘链接:http://zdrv.com.cn/JQf 密码:kanziept 建议客户下载安装android ...