上面介绍了项目的创建,这一节记录如何编译成安卓和iOS的app,这里先记录如何编译成iOS的。

1.首先在终端中进入到项目的目录下,先看下编译命令有哪些功能,运行cocos compile -h:

 1 bogon:HelloC1 dn9x$ cocos compile -h
 2 usage: cocos compile [-h] [-s SRC_DIR] [-q] [-p PLATFORM] [-m MODE] [-j JOBS]
 3                      [--ap ANDROID_PLATFORM] [--ndk-mode NDK_MODE]
 4                      [--source-map] [--sign-identity SIGN_ID] [--no-res]
 5                      [--compile-script {0,1}] [--lua-encrypt]
 6                      [--lua-encrypt-key LUA_ENCRYPT_KEY]
 7                      [--lua-encrypt-sign LUA_ENCRYPT_SIGN]
 8
 9 Compiles the current project to binary
10
11 optional arguments:
12   -h, --help            show this help message and exit
13   -s SRC_DIR, --src SRC_DIR
14                         project base directory
15   -q, --quiet           less output
16   -p PLATFORM, --platform PLATFORM
17                         select a platform (android, ios, mac, web, win32,
18                         linux)
19   -m MODE, --mode MODE  Set the compile mode, should be debug|release, default
20                         is debug.
21   -j JOBS, --jobs JOBS  Allow N jobs at once.
22
23 Android Options:
24   --ap ANDROID_PLATFORM
25                         parameter for android-update.Without the parameter,the
26                         script just build dynamic library for project. Valid
27                         android-platform are:[10|11|12|13|14|15|16|17|18|19]
28   --ndk-mode NDK_MODE   Set the compile mode of ndk-build, should be
29                         debug|release|none, native code will not be compiled
30                         when the value is none. Default is same value with -m
31
32 Web Options:
33   --source-map          Enable source-map
34
35 iOS Options:
36   --sign-identity SIGN_ID
37                         The code sign identity for iOS. It's required when the
38                         value of "-m, -mode" is release.
39
40 lua/js project arguments:
41   --no-res              Package without project resources.
42   --compile-script {0,1}
43                         Diable/Enable the compiling of lua/js script files.
44
45 lua project arguments:
46   --lua-encrypt         Enable the encrypting of lua scripts.
47   --lua-encrypt-key LUA_ENCRYPT_KEY
48                         Specify the encrypt key for the encrypting of lua
49                         scripts.
50   --lua-encrypt-sign LUA_ENCRYPT_SIGN
51                         Specify the encrypt sign for the encrypting of lua
52                         scripts.
53 bogon:HelloC1 dn9x$ 

这里面可以看到很多的参数,-p可以指定编译成什么模式,-m可以指定编译的模式是调试还是正式,还有专门安卓编译的选项等,这里是先介绍iOS的,因为我现在还不会oc,所以这一块我们直接使用xcode进行编译。

2.在项目目录下有个frameworks/runtime-src目录,这个目录里面就是各个平台的代码,V3.0 R1版本的默认有4中,android, ios, linux, win32,如:

3.直接点击上面的HelloC1.xcodeproj就会用xcode打开了,

设置下运行的虚拟设备:

设置完之后点击运行按钮就可以运行了:

初次运行可能有点慢,所以要稍等下,运行以后效果如下:

和浏览器中看到的效果是一样的。

4.编译成安卓的优点不太一样,这里你的电脑首先要安卓ndk,还要安装ant,所以推荐到谷歌网站上去下载adt套件,下载地址是:http://developer.android.com/sdk/index.html,ant可能要单独下载,下载地址是:http://ant.apache.org/bindownload.cgi,下载之后自己配置下环境变量,在/etc/profile中配置环境变量,如:

export NDK_ROOT=/Users/dn9x/Android/adt-bundle-mac-x86_64-20140702/android-ndk-r10
export ANT_ROOT=/Users/dn9x/Android/apache-ant-1.9.4/bin
export ANDROID_SDK_ROOT=/Users/dn9x/Android/adt-bundle-mac-x86_64-20140702/sdkexport PATH=/Users/dn9x/Cocos/cocos2d-js-v3.0-rc1/tools/cocos2d-console/bin:/Users/dn9x/Android/android-ndk-r9:/Users/dn9x/Android/adt-bundle-mac-x86_64-20140702/sdk/platform-tools:$PATH

这里的NDK_ROOT是要配置的,ANT_ROOT和ANDROID_SDK_ROOT也是要配置的,这里之所以配置了所有的东西是为了一次性的配置完成,后面安卓使用的时候就不用配置了,当然ant的环境变量也是要配置的,之前刚开始用mac的时候环境变量我都是配置在/etc/profile中,后来我看了下profile是所有用户登录的时候都会读取的,不建议配置在这里,所以后面的配置我就配置在另外一个文件中了,/etc/bashrc

export ANT_HOME=/Users/dn9x/Android/apache-ant-1.9.4
export PATH=${PATH}:${ANT_HOME}/bin

配置好ndk和ant之后,重新启动下终端,

重启之后可以运行下ant -v看下是否配置成功,

5.开始编译为安卓程序,文章最开始的时候看过编译的命令,所以就直接使用命令行编译,这里介绍下,上面编译命令中有一个安卓命令的选项,如:

Android Options:--ap ANDROID_PLATFORMparameter for android-update.Without the parameter,thescript just build dynamic library for project. Validandroid-platform are:[10|11|12|13|14|15|16|17|18|19]--ndk-mode NDK_MODE   Set the compile mode of ndk-build, should bedebug|release|none, native code will not be compiledwhen the value is none. Default is same value with -m

这里的--ap是指安卓版本,所以在编译的时候可以带上这个,这样他就可以编译为安卓指定版本了

bogon:HelloC1 dn9x$ cocos compile -p android --ap 19
Running command: compile
Building mode: debug
building native
NDK build mode: debug
The Selected NDK toolchain version was 4.8 !
running: '/Users/dn9x/Android/adt-bundle-mac-x86_64-20140702/android-ndk-r10/ndk-build -C /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android -j1 NDK_MODULE_PATH=/Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/../../js-bindings:/Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x:/Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/cocos:/Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/../../js-bindings/cocos2d-x/external NDK_DEBUG=1'
.
.
.........

编译的时间是比较久的,好了之后你可以看到:

 1 -post-package:
 2
 3 -do-debug:
 4  [zipalign] Running zip align on final apk...
 5      [echo] Debug Package: /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin/HelloC1-debug.apk
 6 [propertyfile] Creating new property file: /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin/build.prop
 7 [propertyfile] Updating property file: /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin/build.prop
 8 [propertyfile] Updating property file: /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin/build.prop
 9 [propertyfile] Updating property file: /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin/build.prop
10
11 -post-build:
12
13 debug:
14
15 BUILD SUCCESSFUL
16 Total time: 12 seconds
17 Move apk to /Users/dn9x/work/study/cocos/HelloC1/runtime/android
18 build succeeded.
19 bogon:HelloC1 dn9x$  

6.安装编译后的程序到真机,这里把安卓手机通过数据线连接电脑,并且开启USB调试,通过adb命令安装,如果你按照上面的配置文件配置环境变量,那么应该可以直接使用adb命令,如:

  1 bogon:HelloC1 dn9x$ adb -h
  2 Android Debug Bridge version 1.0.31
  3
  4  -a                            - directs adb to listen on all interfaces for a connection
  5  -d                            - directs command to the only connected USB device
  6                                  returns an error if more than one USB device is present.
  7  -e                            - directs command to the only running emulator.
  8                                  returns an error if more than one emulator is running.
  9  -s <specific device>          - directs command to the device or emulator with the given
 10                                  serial number or qualifier. Overrides ANDROID_SERIAL
 11                                  environment variable.
 12  -p <product name or path>     - simple product name like 'sooner', or
 13                                  a relative/absolute path to a product
 14                                  out directory like 'out/target/product/sooner'.
 15                                  If -p is not specified, the ANDROID_PRODUCT_OUT
 16                                  environment variable is used, which must
 17                                  be an absolute path.
 18  -H                            - Name of adb server host (default: localhost)
 19  -P                            - Port of adb server (default: 5037)
 20  devices [-l]                  - list all connected devices
 21                                  ('-l' will also list device qualifiers)
 22  connect <host>[:<port>]       - connect to a device via TCP/IP
 23                                  Port 5555 is used by default if no port number is specified.
 24  disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.
 25                                  Port 5555 is used by default if no port number is specified.
 26                                  Using this command with no additional arguments
 27                                  will disconnect from all connected TCP/IP devices.
 28
 29 device commands:
 30   adb push [-p] <local> <remote>
 31                                - copy file/dir to device
 32                                  ('-p' to display the transfer progress)
 33   adb pull [-p] [-a] <remote> [<local>]
 34                                - copy file/dir from device
 35                                  ('-p' to display the transfer progress)
 36                                  ('-a' means copy timestamp and mode)
 37   adb sync [ <directory> ]     - copy host->device only if changed
 38                                  (-l means list but don't copy)
 39                                  (see 'adb help all')
 40   adb shell                    - run remote shell interactively
 41   adb shell <command>          - run remote shell command
 42   adb emu <command>            - run emulator console command
 43   adb logcat [ <filter-spec> ] - View device log
 44   adb forward --list           - list all forward socket connections.
 45                                  the format is a list of lines with the following format:
 46                                     <serial> " " <local> " " <remote> "\n"
 47   adb forward <local> <remote> - forward socket connections
 48                                  forward specs are one of:
 49                                    tcp:<port>
 50                                    localabstract:<unix domain socket name>
 51                                    localreserved:<unix domain socket name>
 52                                    localfilesystem:<unix domain socket name>
 53                                    dev:<character device name>
 54                                    jdwp:<process pid> (remote only)
 55   adb forward --no-rebind <local> <remote>
 56                                - same as 'adb forward <local> <remote>' but fails
 57                                  if <local> is already forwarded
 58   adb forward --remove <local> - remove a specific forward socket connection
 59   adb forward --remove-all     - remove all forward socket connections
 60   adb jdwp                     - list PIDs of processes hosting a JDWP transport
 61   adb install [-l] [-r] [-d] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file>
 62                                - push this package file to the device and install it
 63                                  ('-l' means forward-lock the app)
 64                                  ('-r' means reinstall the app, keeping its data)
 65                                  ('-d' means allow version code downgrade)
 66                                  ('-s' means install on SD card instead of internal storage)
 67                                  ('--algo', '--key', and '--iv' mean the file is encrypted already)
 68   adb uninstall [-k] <package> - remove this app package from the device
 69                                  ('-k' means keep the data and cache directories)
 70   adb bugreport                - return all information from the device
 71                                  that should be included in a bug report.
 72
 73   adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
 74                                - write an archive of the device's data to <file>.
 75                                  If no -f option is supplied then the data is written
 76                                  to "backup.ab" in the current directory.
 77                                  (-apk|-noapk enable/disable backup of the .apks themselves
 78                                     in the archive; the default is noapk.)
 79                                  (-obb|-noobb enable/disable backup of any installed apk expansion
 80                                     (aka .obb) files associated with each application; the default
 81                                     is noobb.)
 82                                  (-shared|-noshared enable/disable backup of the device's
 83                                     shared storage / SD card contents; the default is noshared.)
 84                                  (-all means to back up all installed applications)
 85                                  (-system|-nosystem toggles whether -all automatically includes
 86                                     system applications; the default is to include system apps)
 87                                  (<packages...> is the list of applications to be backed up.  If
 88                                     the -all or -shared flags are passed, then the package
 89                                     list is optional.  Applications explicitly given on the
 90                                     command line will be included even if -nosystem would
 91                                     ordinarily cause them to be omitted.)
 92
 93   adb restore <file>           - restore device contents from the <file> backup archive
 94
 95   adb help                     - show this help message
 96   adb version                  - show version num
 97
 98 scripting:
 99   adb wait-for-device          - block until device is online
100   adb start-server             - ensure that there is a server running
101   adb kill-server              - kill the server if it is running
102   adb get-state                - prints: offline | bootloader | device
103   adb get-serialno             - prints: <serial-number>
104   adb get-devpath              - prints: <device-path>
105   adb status-window            - continuously print device status for a specified device
106   adb remount                  - remounts the /system partition on the device read-write
107   adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
108   adb reboot-bootloader        - reboots the device into the bootloader
109   adb root                     - restarts the adbd daemon with root permissions
110   adb usb                      - restarts the adbd daemon listening on USB
111   adb tcpip <port>             - restarts the adbd daemon listening on TCP on the specified port
112 networking:
113   adb ppp <tty> [parameters]   - Run PPP over USB.
114  Note: you should not automatically start a PPP connection.
115  <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
116  [parameters] - Eg. defaultroute debug dump local notty usepeerdns
117
118 adb sync notes: adb sync [ <directory> ]
119   <localdir> can be interpreted in several ways:
120
121   - If <directory> is not specified, both /system and /data partitions will be updated.
122
123   - If it is "system" or "data", only the corresponding partition
124     is updated.
125
126 environmental variables:
127   ADB_TRACE                    - Print debug information. A comma separated list of the following values
128                                  1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
129   ANDROID_SERIAL               - The serial number to connect to. -s takes priority over this if given.
130   ANDROID_LOG_TAGS             - When used with the logcat option, only these debug tags are printed.
131 bogon:HelloC1 dn9x$ 

这里我们可以输入adb divices查看连接到电脑上的设备,

1 bogon:HelloC1 dn9x$ adb devices
2 List of devices attached
3 4LRSDI5DIJVG7HFU    device
4
5 bogon:HelloC1 dn9x$ 

在测试安卓程序的时候,使用真机会比使用模拟器要快,我一般都是使用真机测试,

安装程序到真机,这里可以看到adb中的一个命令:

1  adb install [-l] [-r] [-d] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file>
2                                - push this package file to the device and install it
3                                  ('-l' means forward-lock the app)
4                                  ('-r' means reinstall the app, keeping its data)
5                                  ('-d' means allow version code downgrade)
6                                  ('-s' means install on SD card instead of internal storage)
7                                  ('--algo', '--key', and '--iv' mean the file is encrypted already)

这里我们可以看到一些安装的详细参数,这里我们进入到/HelloC1/frameworks/runtime-src/proj.android/bin目录下,可以看到生成的HelloC1-debug-unaligned.apk,我们安装此文件到手机中,

1 bogon:bin dn9x$ adb install HelloC1-debug-unaligned.apk
2 9771 KB/s (7920657 bytes in 0.791s)
3 WARNING: linker: libvc1dec_sa.ca7.so has text relocations. This is wasting memory and is a security risk. Please fix.
4 WARNING: linker: libvc1dec_sa.ca7.so has text relocations. This is wasting memory and is a security risk. Please fix.
5     pkg: /data/local/tmp/HelloC1-debug-unaligned.apk
6 Success
7 bogon:bin dn9x$ pwd
8 /Users/dn9x/work/study/cocos/HelloC1/frameworks/runtime-src/proj.android/bin
9 bogon:bin dn9x$ 

安装成功之后你的手机也会提示,然后再手机上打开可以看到和在浏览器中的效果是一致的,到这里你的cocos2d-js的项目就已经编译并且运行到安卓设备上了,

7.其实直接开发中我们往往都是在编译之后通过eclipse打开项目进行编译并且调试项目,这里我们就介绍下用eclipse打开项目并且运行项目,

首先打开eclipse,导入项目,

选择项目:

在eclipse中打开项目之后项目会报错,如:

这主要是因为我们要手动设置项目中需要的cocos提供的java文件,这些java文件的位置在:

/HelloC1/frameworks/js-bindings/cocos2d-x/cocos/platform/android/java/src

然后直接复制src中的整个org文件夹到项目的src中,如:

然后配置运行,这里我们在模拟器中运行下看看。在模拟器中就是太慢,还是运行在真机中把,我的手机是联想S568t,安卓版本的是:4.4.2,所以在运行是完全没有问题,

截取了下屏幕的快照,

下面就会开始记录cocos2d-js中的知识了,

转载于:https://www.cnblogs.com/Dn9x/p/3932052.html

Cocos2d-JS: 2.编译到安卓和iOS相关推荐

  1. uniapp ios时间戳获取不到_uni-app打包编译成安卓及ios包并上传发布测试版

    个人公众号:微信搜索:前端速成记 uni-app是vue党开发一套代码编译(8个)各种平台的解决方案 官网:(https://uniapp.dcloud.io/) 开发特点: 1.是一套ui(及简单) ...

  2. android js下载地址,js点击下载跳转iOS或安卓

    在移动wap上,最常见的就是引流用户下载安装自己的应用程序,如何通过js点击判断下载是ios还是安卓呢?其实很简单,就是要判断用户的设备是iOS还是Android,然后分别跳转就可以了. var u ...

  3. js 识别设备 安卓 ios html确定打开终端(安卓、ios、微信)

    js 识别设备 Android ios 确定打开终端(安卓.ios.微信) 需求描述: 通过扫描二维码 打开html网页,判断用户使用什么终端 - 通过微信扫一扫进入:蒙板方式提醒通过浏览器打开 - ...

  4. H5,JS仿微信输入法,键盘上面带input输入框,兼容安卓、ios

    H5,JS仿微信输入法,键盘上面带input输入框,兼容安卓.ios 效果如图: 实现思路:先写一个固定定位的input,通过改变bottom的高度将input贴在键盘的顶部,所以这里需要知道键盘高度 ...

  5. 这么多移动开发的方式,传统方式写安卓、IOS 还有出路吗?

    前言 我所说的传统的方式是指,用 Java 或者 Kotlin 写安卓,用 Object-C 或者 Swift 写 IOS. 回想我 2014 年上大学的时候,老师跟我们说最近两年移动端特别的火,出去 ...

  6. 阿里开源MNNKit:基于MNN的移动端深度学习SDK,支持安卓和iOS

    2020-01-23 09:07:03 机器之心报道 参与:一鸣.Jamin 近来,有越来越多的深度学习框架开始面向移动端进行发展.近日,阿里也基于其 MNN 推理引擎开源了最新的 MNNKit 深度 ...

  7. H5嵌入原生开发小结----兼容安卓与ios的填坑之路

    一开始听说开发H5,以为就是做适配现代浏览器的移动网页,心想不用管IE了,欧也.到今天,发现当初too young too simple,兼容IE和兼容安卓与IOS,后者让你更抓狂.接下来数一下踩过的 ...

  8. React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台

    React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台. GitHub 完整源码地址https://github.com/yezihaohao/NeteaseCloudMusic ...

  9. 一键复制android代码,兼容安卓和ios实现一键复制内容到剪切板

    js兼容安卓和ios实现粘贴板一键复制 color: #000; background: #fff; overflow-y: scroll;-webkit-text-size-adjust: 100% ...

最新文章

  1. Android O: View的绘制流程(三):布局和绘制
  2. svn强制注释 linux,svn强制要求提交注释
  3. Android——基于监听器的事件处理(转)
  4. 成为编程高手的八大奥秘
  5. linux用户和组2
  6. 07-12-Exchange Server 2019-安装-CU1
  7. Java代码生成器简介、原理、开发流程和Demo
  8. 翻译记忆软件-塔多思TRADO经典教程_5
  9. y400安装dolby方法
  10. 寻找春天nbsp;九宫格日记-2011.09.20
  11. 基于物理的体积光实现
  12. 【Linux驱动开发】PS2游戏手柄驱动开发与输入子系统框架
  13. c#加粗代码_如何使用C#加粗Excel工作表中特定行或单元格的字体?
  14. oracle查询超过一千行报错,Oracle数据库查询用 where in 查询的项超过1000条的解决方案...
  15. 照片模糊怎么办?教你简单三步瞬间修复照片清晰度!
  16. sqlserver数据库错误码
  17. 玩转OneNET物联网平台之简介
  18. menu.ctrl.php,对pyqt5之menu和action的使用详解
  19. udt的java实现
  20. vue新框架nuxt通过文件目录自动生成路由

热门文章

  1. 29python腾讯位置大数据北京2019五一期间迁出数据
  2. 【毒鸡汤】基层管理如果没有这些心态,难!
  3. DrawIO怎么画出卡通效果的图?
  4. 为什么a标签不能设置宽高?
  5. 双开乃至多开电脑微信的简单方法
  6. Android面试题解答(结尾有彩蛋)
  7. mysql double 使用_mysql double类型使用与主键自增
  8. transPlotR 优雅的绘制基因转录本结构
  9. WinRAR解压War包
  10. 关于.NET IQueryable.Join()