用到的项目:Tocy-Android-SDLv2

JAVA层:只有一个 SDLActivity.java 路径\Android-SDLv2\src\org\libsdl\app

项目简单分析:

默认在他的项目运行SDLActivity.java 会在oncreat中调用 surfaceview,接着调用 sdl thread ——SDLmain——nativeInit (调用到SO的本地初始化方法)

如下图,运行sdlmain时候先运行so库初始化方法SDL_Android_Init(从LOG可以看出来)。

谁用调用 SDL_Android_Init ?

JNI文件中$(SDL_ROOT)/src/main/android/SDL_android_main.c (编译sdlmain.so时候添加进去了) 调用Java_org_libsdl_app_SDLActivity_nativeInit ——SDL_Android_Init(env, cls)和status = SDL_main(argc, argv);

SDL_android_main.c会调用到 main.c

所以TONY版只需要 在 JNI目录的main.c中 准确说是各对应的as_lesson_yuv.cpp 中重写SDL的C方法即可。因为android.mk 会把他们编译成SO文件。看android.mk 代码

LOCAL_SRC_FILES := as_lesson_bmp.c main.c\

$(SDL_ROOT)/src/main/android/SDL_android_main.c

编译顺序从右往左编译

使用方法:

1,把Tocy-Android-SDLv2 当做module 导进来使用。然后直接import用它的SDLActivity 或者新建一个Activity extends SDLActivity (oncreat不重写都可以,调用的父类的oncreat)如图:就可以直接播放图片或者视频。

2,直接把SDLActivity.java 拷过来用。 不过不能直接拷贝到自己的类目录当中,因为它会调用libmain.so和libSDL2.so 这2个库的 会调用对应路径的方法。如

JNICALL Java_org_libsdl_app_SDLActivity_nativeInit 不然会报错,so方法未声明。

当然也可以修改JNI中的所有方法的路径,但是这样工程量大。

所以可以在你的src目录下新建该方法的路径,这样连package org.libsdl.app; 包名都不用改了。

SDL中 so库的使用的更多相关文章

  1. 【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

    [Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题4-共享库中嵌套库带路径[已解决] 标签:[Linux开发] 紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交 ...

  2. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  3. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  4. Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf 动态库的后缀为*.so 静态库的后缀为 libxxx.a ldconfig 目录名

    Linux系统中“动态库”和“静态库”那点事儿 /etc/ld.so.conf  动态库的后缀为*.so  静态库的后缀为 libxxx.a   ldconfig   目录名 转载自:http://b ...

  5. QT中静态库的生成与使用

    一. 静态库的生成    1. 测试目录: lib    2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为&qu ...

  6. C语言中静态库和动态库笔记

    库 库,故名思议,是存放东西的地方,其中存放的东西可以被多个人公用. 程序中借用库的概念,描述将代码进行抽取,这种代码被大多数程序使用, 其过程具有一定的模块化.封装.抽象的特征. 按照库的使用方式, ...

  7. QT中共享库的生成与使用

    一. 静态库的生成1. 测试目录: lib2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为"I'm i ...

  8. 获取sqlserver数据库中所有库、表、字段名的方法

    获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...

  9. QT中静态库的生成与使用——创建共享库代码,附例子

    一. 静态库的生成    1. 测试目录: lib    2. 源码文件名: mywindow.h, mywindow.cpp, 类MyWindow继承于QPushButton, 并将文字设置为&qu ...

随机推荐

  1. Excel关联xml文件

    1.新建没传值的xml文件,变量名称自己定义好 2.打开excel,如果之前没有设置过,点击选项 如果当前Excel菜单栏中没有开发工具项,在自定义功能区先勾选上开发选项 3.点右下角的xml映射 弹 ...

  2. THUWC2019游记

    Day -INF 听说自己苟进了THUWC,然而我还什么都不会啊,这样去了不得被吊打. 随便列了几个WC前的计划,然而到最后一个都没有完成,感觉学习效率好低啊,周围一众神仙天天吊打我. Day 0 坐 ...

  3. 简单gulp.js

    引入相对应的文件 let gulp = require("gulp"); let inject = require("gulp-inject"); let cl ...

  4. MapReduce实现Apriori算法

    Apiroi算法在Hadoop MapReduce上的实现 输入格式: 一行为一个Bucket 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 34 36 38 ...

  5. jvm参数及分析工具

    -Xmx4G 设置堆的最大内存大小为4GB,也可通过-XX:MaxHeapSize=4GB进行设置 -Xms256m 设置堆的初始内存大小为256兆,如果未设置此选项,则初始大小将设置为新生代和年老代 ...

  6. centos7初上手1-安装mysql数据库

    随着云服务器的普及,购入云服务器的门槛越来越低,对一个程序员来说,很多人会购买一款云服务器.以前买过两年windows服务器(没有什么实际用途,就是为了玩),最近有机会接触一下linux服务器,选择了 ...

  7. Hello vue.js的随笔记录

    数据双向绑定的script在组件定义位置后面才顶用. 使用它的话,引用js就好,比较简单. 声明一个vm对象,new Vue({}).这个构造里传一个对象,包含el:界面元素,data:数据,meth ...

  8. 解决Visual C++ for Linux: -L"~/projects/path_to_lib_folder" 无法设置library search path的问题

    最近倒腾Linux C/C++项目.以目前的情况来说,要生成编译(build)一个Linux工程脚本,首选的工具必定是CMake.这也是我之前Linux项目的首选.不过自从VS IDE支持Linux ...

  9. shell练习题6

    需求如下: 有日志access.log,部分内容如下: 127.0.0.1 - - [03/Jul/2018:00:00:01 +0800] "GET / HTTP/1.1" 20 ...

  10. linux发布环境初始化脚本

    #参数配置 homeDir=$(pwd) tomcatDir=$homeDir/tomcat logDir=$homeDir/tomcat/logs backUpDir=$homeDir/backup ...