用aide打包SDL
c4droid吧
全部回复
仅看楼主
level 13
小牛_牛sky 楼主
相信我,和以前的不一样
2016年04月29日 13点04分 1
level 12

2016年04月29日 13点04分 2
level 13
小牛_牛sky 楼主
参考文档:
【c4droid】【教程】使用AIDE 打包SDL2 和其他库 https://tieba.baidu.com/p/4247172329
【教程】自己把SDL打包成apk https://tieba.baidu.com/p/2837590838
【教程】自己把SDL打包成apk Ⅱ:使用详解 https://tieba.baidu.com/p/2839600559
等等,还有的喔在楼中楼补充
2016年04月29日 13点04分 3
level 13
小牛_牛sky 楼主
这里先声明,不保证百分百能运行,不过,我在我的两个手机上都能运行!
先讲一下思路吧。在上几个帖子里,我们都知道是用的Android.mk编译成*.so动态文档,有SDL2.so SDL2_image.so SDL2_mixer.so SDL2_ttf.so 等等
科普:
1.使用jni时,只能链接动态库,如果连接静态库的话,这个静态库不起作用,而且会报出 警告。不过可以用静态库再次打包成so动态库
2.Android.mk其实是GNU makefile,不过Android已经封装了很多功能,所以不会用Makefile的也没多大影响,关于Android.mk的变量(另外,Android.mk变量在Android中都是全局变量,所以请慎用),不在这个教程的考虑范围内。想知道的可以百度
3.在aide下try catck语句好像得换一种方法,不过我想,try catch用的人不多,具体可百度
----------------------------------------------------------------
楼中楼附上压缩包,只需要解压然后用aide运行即可,不过前提是aide安装了原生代码
2016年04月29日 13点04分 4
2016年04月29日 13点04分
level 13
小牛_牛sky 楼主
接下来说思路,这里是先把上面的那几个库编译成动态库后,直接使用动态库,所以这样就少了SDL的编译的一大部分时间,而且其中的Android.mk也只需要简单的配置一下就可以了,
下面是jni下的文件(请忽略广告)
看着是不是和c4droid的库文件很像呢,不错,确实很像
在这里说明,include下包含的是SDL2,这个SDL2文件夹下就是全部的SDL2头文件
如下
这样后,你的代码在经过c4droid调试之后就不用修改了,也算是方便了一下
2016年04月29日 13点04分 5
level 13
小牛_牛sky 楼主
这里是project.properties的内容,里面就这一句,好像是android的版本吧,希望谁能在楼中楼说明一下。
2016年04月29日 13点04分 6
指的是sdk的最低版本
2016年08月28日 09点08分
level 13
小牛_牛sky 楼主
接下来就是重头戏了
这个是SDL2文件夹里Android.mk的内容,主要是声明一个提前编译好的模块,然后再使用的时就和编译的没什么区别,,不过,不过,不过(重要的说三遍)
共享库ABI的选择需要和目标系统的ABI兼容,就是TARGET_ARCH_ABI,可以是armeabi,armeabi_7a,x86
这我相信大家在解压别人的apk的时候可能会碰到,主要是为了应用的兼容性
下面我开始分析上面的语句
----------------------------------------------------------------
1.LOCAL_PATH 是当前Android.mk的路径 $(call my-dir)是android提供的makefile函数
2.include $(CLEAR_VARS)清除许多LOCAL_XXX变量,除了LOCAL_PATH,上面我们说过在GNU make中,所有的变量都是全局变量
3.LOCAL_MODULE 模板的名称,必须唯一
4.LOCAL_SRC_FILES 这里是动态库文件,因为SDL2.so和Android.mk在同一文件夹下,所以可以直接引用
5.LOCAL_EXPORT_C_INCLUDES这里包含的是此动态库的头文件的地址(当然,我感觉不加也行,这里为了保险起见,没有删除)
6.include $(PREBUILT_SHARED_LIBRARY)这里就是声明这个模块是预编译的模块
------------
其他的几个文件夹和这个类似,只是LOCAL_MODULE和LOCAL_SRC_FILES不同罢了
2016年04月29日 14点04分 7
level 13
小牛_牛sky 楼主
接下来就是src的文件了。
这里主要就是LOCAL_C_INCLUDES,包含的是使用的SDL头文件路径
LOCALSRC_FILES是src下的c++文件(这里需要注意的是,这里的扩展名要求相同,或者添加extern c 等等,关于讲解这个的网址没找到,找到了我会在楼中楼补充)
还有就是听说需要.*h的需要对应*.cpp,这个我尝试了,不是必须的
2016年04月29日 14点04分 8
level 13
小牛_牛sky 楼主
这里是src下的Application.mk文件,这三个变量都很有用
APP_STL是对c++ stl的支持
APP_CPPFLAGS 是以c++的方式编译
APP_ABI则是平台的选择,
2016年04月29日 14点04分 9
level 12
用aide打包有什么好处?
是不是能屏蔽掉返回键了?
加载字体的话还是要自己添加路径。
能获取到各种权限?录音?
查看手机号?
2016年04月29日 14点04分 10
能屏蔽返回键了,加载字体没试过,权限能获得,不过得在清单文件中添加相应权限,至于授不授予权限就看天了
2016年04月29日 14点04分
level 13
小牛_牛sky 楼主
好吧,接下来就是编译安装了,
是不是看着热泪盈眶呢,反正我是感觉自己还是有收获的,
这里再提几句,
1.现在的SDL没办法识别退出键,这个我目前没研究过。希望有心人来解答(好像在SDLActivity中可以覆盖某个函数,不过并没什么研究)
2.如果手机开启自动转屏的话,这个应用会闪退,不知道为什么
3.这样的话,如果想编写横板游戏,直接就可以在清单文件中强制横屏就行了,也是比较贴心
4.这里我测试了一下SDL2_image中的we
bp

最新的源码中,这个webp是默认不编译的,原话是这样de
IMPORTANT: In order to enable this must have a symlink in your jni directory to external/libwebp-0.3.0.
也就是说,需要单独外部链接。我倒是试了,编译倒是成功了,就是不知道能不能用
,因为不知道
include $(call all-subdir-makefiles)的顺序,所以我也不敢断定,希望谁能解答
---------------------
结束有什么不懂的可以a我
2016年04月29日 14点04分 11
用aide生成SDL2老早以前干过了,所以对我来说没什么好惊奇的,况且也不喜欢SDL,要你能把你提到的问题解决了再发出来意义更大
2016年04月29日 15点04分
@不知者来此 以前没成功过,这是第一次。这些问题,留着就是要解决的,一定会解决的
2016年04月29日 15点04分
我以前用eclipse的logcat测试过sdl的键位值,后来在SDL头文件找到了返回建的定义。不过是那个我忘了,肯定有的
2016年04月30日 09点04分
level 13
小牛_牛sky 楼主
2016年04月29日 14点04分 12
2016年04月29日 14点04分
level 13
小牛_牛sky 楼主
2016年04月29日 14点04分 13
level 12
2016年04月29日 14点04分 15
什么都没改又编绎了下,成这样了
2016年04月29日 14点04分
@简单aaaaaaa 不过居然能安装运行[吐舌]
2016年04月29日 15点04分
回复 简单aaaaaaa :兼容性问题,在前面就说了,不保证百分百能运行
2016年04月29日 15点04分
你的是intel处理器,可以改成x86架构在运行,提示你arm可能会降低性能。
2016年04月30日 09点04分
level 11
以后可能会用到,收藏先[真棒]
2016年04月29日 17点04分 16
1 2 尾页