在同样的环境下编译Cocos2d-x生产的apk可以运行,Creator的不行

编译环境
系统:Windows 7 64bit
SDK:Android-24
NDK:r10e
模拟器:逍遥安卓(Android 4.2.2)

在上述环境下用Creator 1.1.1编译发布成android 版本能正常发布,安装后运行却包libcocos2djs.so 无效,但用同样的环境编译Cocos2d-x 3.9 生成的apk却能正常跑,这就证明问题肯定是出在Creator 的编译过程了

能不能提供一下 Creator 构建以及编译过程的 log?

没办法,内网环境只能拷进不能拷出

你试试按我说的环境试一次就行了,我再多台机器上试过,都一样不行,你那边这样配置去编译也肯定100%能出现,我发现我的真机(三星 note5 android 5.1) 能运行,就是逍遥安卓不能运行,可能是你们的适配问题,原版cocos2d-x是没问题的。

既然你note5的安卓5.1能运行,有没有可能是你cocos2d默认编译的安卓平台是4.2.2或以上,但是你creator默认编译的安卓平台是5.0.1或以上呢?你多找几个不同安卓版本的手机试试看

我刚刚试了试,用android-21(android 5.0.1)编译出来的apk在我的手机上(android 4.4.2)上面运行时提示已停止运行

1赞

恩,应该跟这个有关,但是Creator没地方设置这些,感觉这个编译很鸡肋

如果是和编译的安卓版本有关的话(个人觉得你需要在多个不同版本的安卓系统上测试你的APK,确认是否是因为安卓版本的原因),你可以先用creator构建安卓项目,然后进到项目文件夹/ build / jsb-default 然后在当前目录下打开命令行界面输入 : cocos compile -p android --ap android-16

然后回车,就可以编译成安卓4.1.2版本的应用程序了,你再试试看在你的模拟器上面能不能用

android-16---------android 4.1.2

android-17---------android 4.2.2

android-18---------android 4.3.1

android-19---------android 4.4.2

android-20---------android 4.4w.2

android-21---------android 5.0.1

android-22---------android 5.1.1

android-23---------android 6.0

@caicq
你前面提到 Android SDK 是 24 版本,那麻烦看一下 Android SDK 文件夹中有一个 platforms 文件夹。里面都有哪些文件夹。

实际上,Creator 的构建与编译 android 工程时,会根据工程要求的最低 API Level 和机器环境中 platforms 文件夹已有的 API Level,选择一个最低 API Level 的 SDK 来进行编译和打包,这样能保证生成的 apk 能兼容尽可能多的真机版本。

比如:Creator 1.1.1 构建出的 android 工程要求最低 API Level 为 16。那么编译时会在 platforms 文件夹中找 >= 16 的 API Level 进行编译打包。

从你提供的情况来看,因为 android 4.2.2 对应的 API Level 是 17。可能你的 SDK 中并没有 16 或者 17 的 API Level。编译打包使用了更高的 API Level,导致在 4.2.2 版本的逍遥安卓模拟器中无法运行。

1赞