因谷歌要求8月1日后上架的游戏必须支持64位,折腾了我很久,搜索了很久,从以为很难 → 以为很容易 → 失败、迷茫 → 停滞不前、绝望 → 继续坚持、转换搜索思路 → 试验成功,或许这就是每次达到彼岸的必经之路,过程很辛酸,结果还欣慰,现在总结经验,让大家少走弯路和挫折吧。
分两个部分来讲吧,这样会没那么乱……
-----------------------------------------------------------AndroidStudio开始--------------------------------------------------------
1,确保你的游戏工程是在cocos项目里的frameworks\runtime-src,这样确保在编译的时候找到cocos的lib库,或许有其他办法,望大牛们指点一下。
2,在android studio的工程项目里找到app→gradle,打开它,在android模块里添加
externalNativeBuild {
ndkBuild {
path file('jni/Android.mk')
}
if (PROP_BUILD_TYPE == 'ndk-build') {
ndkBuild {
path "jni/Android.mk"
}
}
else if (PROP_BUILD_TYPE == 'cmake') {
cmake {
path "../../../../CMakeLists.txt"
}
}
}
//我用的是ndk-build的方法,PROP_BUILD_TYPE是自己定义的一个常量,这里会根据Android.mk的内容进行相关的so打包
3,在defaultConfg模块里添加
ndk {
//arm64-v8a就是64位的库,有啥不懂就搜索自己研究
abiFilters "arm64-v8a"//"armeabi"
}
4,这样设置后看看
红框中的是否为灰,为灰的话继续看下一步!
5,按照下面的图片步骤去做,我就是这样成功了
------------------------------------------------------------AndroidStudio结束----------------------------------------------------------
--------------------------------------------------------------LuaJit开始-----------------------------------------------------------------
1,去官网下载回来,然后解压。
2,在src目录下的lj_arch.h文件的前面添加一句#define LUAJIT_ENABLE_GC64(表示开启64位模式编码)
3,对src目录下的msvcbuild.bat文件进行编辑:将第一个 @set DASMFLAGS= 这一行设置为 @set DASMFLAGS=-D WIN -D FFI -D P64
4,续上将其中的vm_x86.dasc设置为vm_x64.dasc 设置这个就代表用这个x64的文件进行lua编码转换(这里划重点!!!之前一直打所谓的64位加密,因为没改这个,导致总是提示语法错误,因为并不是真的64位加密)
5,利用vs2015或以上版本的x64命令行工具(记住哦vs有两个命令行工具 一个是x86的 一个是x64的)打开这个文件夹路径,然后运行msvcbuild.bat进行编译生成lua51.dll和luajit.exe,记得连同同目录下的jit文件夹一起复制使用,有关怎样使用自己查啦!
6,通过上一步生成的工具,替换响应的文件或自己改动原来的加密逻辑,进行lua加密。
--------------------------------------------------------------LuaJit结束----------------------------------------------------------------
好了,你看到这里就可以尝试按照一般的打包逻辑生成支持64位的apk包,运行正常表示你成功啦!我已经尽量打细节都说清楚了,如果还有不明白的或者错误的地方,欢迎提问或指正!
文中引用内容有:
将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例) - maogefff - 博客园
https://www.cnblogs.com/maogefff/p/7819880.html
关于tolua在arm64位的加密 - sun19880421的博客 - CSDN博客
https://blog.csdn.net/sun19880421/article/details/68070696
十分感谢这两个大神分享的经验,使得我终于达成64位的支持任务!
------2019.10.14-------
最终还是砍掉了luajit,因为真的不兼容!