还珠格格3恋爱先生百度云云链接

酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
很久以前的移动平台开发者很幸运, 因为他们只用关注一个平台(iOS)就够了, 现在随着Android越来越受到关注, 以前统一的平台又开始了分裂.
到目前为止, 我知道可能的, 能够使用一套代码跨平台开发app的方法有:
Html: PhoneGap
是基于Web技术的(HTML, CSS, Javascript), 虽然出来的时间不短了, 但是真正是属于未来的解决方案. 因为真正开发出来的就是WebApp. 在移动平台上简单的应用几乎是不需要PhoneGap就能基于HTML开发的, 因为移动平台都提供了类似WebView的控件, 但是PhoneGap提供了能调用本地API的功能, 可以极大的扩展应用的适用范围.
也正是因为是WebApp, 事实上支持的平台相当丰富, 这还不考虑到PC/MAc浏览器的简单支持. 目前PhoneGap已支持:
iOS, Android, BlackBerry, Symbian, WebOS, Windows Phone 7/8, Bada, Tizen.
需要注意的是, PhoneGap本身只带原生API调用, 没有UI, 需要的话得搭配其他的Web UI库使用.
目前PhoneGap已被Adobe收购, 这也是Flash彻底退出移动平台后Adobe的逆袭.
好消息是, PhoneGap是完全免费并且的.
而坏消息是Web技术在目前的移动平台上效率还有些低.
JavaScript: Titanium SDK
是个很另类的解决方案. 提供了一套使用JavaScript的SDK. 但是本身并不是使用HTML技术, 而是相当于把JavaScript当作脚本语言用来开发原生的App.
也是因为这个原因, 支持新平台就比PhoneGap难多了, 目前仅支持iOS和Android.
Titanium SDK的使用本身是免费的, 通过附属的Appcelerator Analytics, Appcelerator Cloud Services服务收费. 并且价格还不公布, 需要Contact Sales...
Ruby: RubyMotion(iOS), Ruboto(android)
本来来说, Ruby似乎和移动开发有点远, 但是
和, 让这一切变为可能.
其中RubyMotion一次性收费$199.99(¥1318.15), 永不过期. Ruboto通过JRuby实现, 属于免费开源项目.
C# with Mono
Mono(, Xamarin还为此说他们比微软更喜欢C#, 自此已经完整的支持了Android和iOS了.
可惜的是, 价格有些贵. 最便宜的能发布软件的(iOS, Android)版本是Professional, 分别售价$399, 要是想跨平台开发的话就得买两套, 并且, 这还是一年升级支持的版本-_-!
& 相关主题:
下一篇:没有了使用前沿的JAVASCRIPT为IOS、ANDR;作为一名原生iOS开发者,最近一直在考虑如何更稳;Facebook团队凭着对前端技术的深刻了解,让;1/官;2我们谈谈开发效率问题:;从开始采用RN开发之后,我们的APP开发周期明显;另外JSX的使用,使页面的布局更加的迅速;3我们来谈谈性能吧:;ReactNativ
使用前沿的JAVASCRIPT为IOS、ANDROID编写跨平台原生APP
作为一名原生iOS开发者,最近一直在考虑如何更稳定,更高效,更流畅的来跨平台。之前公司使用过cordova搞过一段时间,但是始终感觉效果不够理想,包括页面布局以及系统的流畅度等等。最近一直在研究Facebook推出来的一款工具React Native,用完之后感觉真的很优秀。
Facebook团队凭着对前端技术的深刻了解,让网页版的混合开发主流变为js主流,通过js生成对应的Native。相信不久的将来Native code真的可能要退居二线了。下面跟大家分享下RN的使用心得。
1 / 官网文档网址,一般是2个周左右更新一个版本,为高效工作人员点赞。
2 我们谈谈开发效率问题:
从开始采用RN开发之后,我们的APP开发周期明显的加快。前期一直处于摸索阶段,后面慢慢成熟了,我们将RN封装成一个独立的前端框架,每次开发的时候直接套入即可。大大节省了开发时间
另外JSX的使用,使页面的布局更加的迅速。之前的iOS的自动布局,完全可以使用Flexbox来实现。领完Flux设计模式更是让iOS和Web应用共享了store和action绝大部分的代码,真实太给力啦。
3我们来谈谈性能吧:
React Native把「DOM Representation」的概念外扩成了「UI Representation」,由于不是操作真实 UI,就可以放到非 UI 线程来进行 render――所有做客户端 UI 开发的都应该知道 UI 线程是比较头疼的问题,无论怎么 render,这些 render 都不会直接影响 UI,而要借由 React Native 来回到主线程来改变。React Native相比于Objective-C或Swift编写的原生iOS应用来说有一些性能差异。但是工作人员们是在努力的更新的,问题会得到解决的,我们期待着吧。
由于中间件的机制,React 很有可能成为一个跨平台的统一 UI 解决方案。
4 接下来我们来创建第一个React Native的项目吧
1)安装Homebrew,这是Mac系统的包管理器,主要用来安装NodeJs和一些其他必须的工具软件
指令:/usr/bin/ruby -e &$(curl -fsSL
/Homebrew/install/master/install)&
2)使用Homebrew来安装Node.js.
指令:brew install node
在天朝,安装完node后建议设置npm镜像以加速后面的过程,下面是淘宝的镜像,可能会慢一点,不用着急慢慢等待执行完毕。
npm config set registry https://registry.npm.taobao.org --global npm config set disturl https://npm.taobao.org/dist --global
另外,Yarn是Facebook提供的替代npm的工具,可以加速node模块的下载。React Native的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。
安装指令如下:npm install -g yarn react-native-cli
3)Facebook推荐使用Watchman来监控文件系统变更,可以有效的提高开发性能,指令如下:
brew install watchman。另外,我们还可以通过brew install flow指令安装Flow工具,这个是Facebook自家的代码规范。当然不影响开发,新手或者没有兴趣的可以直接跳过。
4)测试安装,打开终端,输入下面指令:
react-native init RnTest
react-native run-ios
执行完后,会自动创建一个RnTest文件夹,文件夹的内容如下:
其中包括了 iOS工程包,和android工程包,我们通过修改 index.ios.js文件,就可以搭建界面啦。
下面通过webstorm工具打开index.iOS.js界面,并修改代码如下:
class RnTest extends Component {
render() {
return (&Text style={styles.color}&this is my Program&/Text&);
const styles = StyleSheet.create({
container: {
fontSize:30,
color:&red&,
marginTop:30
重新运行会出现以下界面
三亿文库包含各类专业文献、幼儿教育、小学教育、生活休闲娱乐、中学教育、文学作品欣赏、高等教育、行业资料、各类资格考试、外语学习资料、应用写作文书、专业论文、使用前沿的JAVASCRIPT为IOS及ANDROID编写跨平台原生APP75等内容。 
 学android 和 iOS 哪个好学 android 和 iOS 哪个好?android 和 iOS,android 开发出 来的软件是开源免费就靠广告费赚钱感觉利润很低,iOS 涉及到的 appstore 很...  iOS 与 Android 设备的 比例大约为 1:4,因此选择...跨平台工具,反而造成用户体验不理想,开发原生应用的...JavaScript,如果应用要和设备打很多交道,或者需要尽...  Java(Android), Objective-C(iOS)以及 Visual C++(...这种应用可以使用 HTML5,CSS3 以及 JavaScript 以及...? ? 赢利 原生 App 可以使用专门的移动平台的广告...  主要分为iOS和Android两大主流平台的原生APP开发, ...我们公司使用 HTML5+CSS+JavaScript开发的微商城马上...HTML5的出现,使得我们可以去开发跨平台的移动App,...  目前很多浏览器都有很好的跨平台支持,(译注:firefox...但是现在没人能否认 JavaScript 也和前者站在同一...用 Java 写了 Android app,然后又要面对 iOS 的 ...  原生 APP 开发模式) ,该开发 针对 IOS、Android ...能节省跨平台的时间和成本, 只需编写一 次核心代码...可线下使用(因为是在跟 Web 相对 地平台上使用的...  JavaScript 判断客户端是 iOS 还是 Android 等移 动终端判断原理: JavaScript 是前端开发的主要语言,我们可以通过编写 JavaScript 程序来判断浏览器的类型 及版本。...  10 个快速开发 Android/Iphone web App 应用的框架...的 JavaScript 框架,通过它可编写 HTML5/CSS3/SVG...数据平台,包括 iOS,Android,Palm webOS,和 Black...  特点是使用标准的 HTML、 CSS 和 JavaScript,开发跨平台(目前支持:Android、iOS,计划支持:Windows Phone、 Firefox OS) 的原生 App 应用: ionic 主要包括三个部分...目前哪个开发语言能跨平台开发原生app
目前哪个开发语言能跨平台开发原生app
就是一次开发后可以在安卓,ios及pc上运行的?
续问1?如果考虑上手快,小项目(网站移动版相似),用哪种开发又快又好呢(主要考虑快,一次代码到处发布)???
续问2?如果在以上基础还考虑未来的升级等的话,考虑哪 种开发?
两种手机平台编程所用的语言都不一样,如何能即跨平台又是原生app?这本身就是俩互斥的条件。
跨平台一般都是 hybrid app,即本地app的外壳,内部用webview展现一个html网页,虽说许多hybrid框架可以支持调用部分原生接口了。然而这依旧不是原生,你做个工具软件什么的还可以,做个对性能有要求软件或者游戏直接就尿了,另外现在的hybrid框架一般支持的原生接口并不多,主要就是个调用 摄像头,麦克风,还有弹窗什么的。
要原生,那就是制作多平台app,或者等着微软啊、google啊宣布兼容其它平台开发的软件再说。ios用 Swift,Object-c安卓用 java,c++,Kotlin或者其他jvm语言。
A1:看样子你是要跨平台,那就找各种hybrid框架吧,之前听人说过个叫html5+的,不知道好不好用,国产的。 另外好这个定义非常模糊啊,用这类的框架怎么都会比原生慢,比原生吃性能。
A2:考虑以后升级的话找一些规模大的热门框架比较靠谱,比如react native毕竟大项目一般不至于突然那天就没人更新维护了。
歪个楼,Qt
熟悉angular可以用ionic(目前版本坑比较多),熟悉react可以用React Native。都不熟悉还是React Native吧。
我们用的是React Native
JavaScript的跨平台做的还不错React Native现在确实是很火爆
语言的话,楼主心里应该已经有答案了,没错.就是JS.但是react是一次学习,多次编写ionic是一次编写,到处执行.
ionic2已经引入了原生模块,很多人已经在用了.不过需要等等ng2正式版发布之后,才会正式引爆.现在react已经爆了....但是ionic/angular和react是殊途同归,都是未来前端的发展趋势.你走在这条路上,是顺应潮流,对于技术还是个人,都是提高.
国产框架,我试过几个,感觉是浪费时间
一次编写后,不经修改就能跑在电脑和手机上,我想到的只有B/S架构的网站.因此我还想到一个应用开发思路,就是把B/S架构搬到客户端.于是我在Ubuntu上交叉编译了ARM Linux版PHP(适用于Android和Raspbian等),打包了PHPDroid,APK包只有5.7MB,基于WebView+PHP内置的HTTP服务器和SQLite数据库来开发应用,PHP脚本一次编写后,在PC和Android上运行是没有问题的,能够实现代码重用.
React Native
阿里的 weex,目前还在内测
又是跨平台又是原生,so,我的答案是没有!
它的目标是 用C#开发iOS、Android和Windows Phone原生应用程序。
国产的hbuilder框架还是可以满足小型项目的需求的。
我推荐Deviceone,deviceone的原理最接近ReactNative,deviceone的app运行在手机上,你看到的所有界面都是纯原生的UI。比如button标签在iOS下对应的是UIButton类,在android对应的是Button类。
比react native更强的地方就是它是真正的write once,run anyway,而react native是learn once,write anyway。react native并没有真正的跨平台。
另外deviceone相对于react native,已经在应用上成熟很多了,已经支持差不多100个跨平台的组件,官方和一些个人开发者还在不断的扩展这个组件库。
device one开发的app就是由一个很小的原生核心和开发者从组件库里选择的一些原生组件编译而成。
DeviceOne还是可以的,都是图形化界面的设计,拖拽式开发。上手容易。可以试试,我们的App上线了,可以搜一下AppStore的“纳豆”。
react 需要多次编写ionic 的话,只能在android和ios上出现吧
试试DeviceOne吧,既是跨平台,又是原生,支持android、ios、windowsphone 、windows pc,我们公司正在使用这个做项目。
React Native?
目前看React Native支持的多,想知道上手容易吗?
楼上正解,熟悉ng用ionic比较好,想要pc的话还要用electron,可以下载ionic lab去试试,看看效果当然不会ng的话,建议React Native
但是这些的应该不算原生app,算作web技术开发的na,原生是指用oc、java写的
Copyright & 2016 phpStudy你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。Cocos2d-x跨平台开发入门 Android和iOS-android100学习网
Cocos2d-x跨平台开发入门 Android和iOS
Cocos2D是一个非常棒而且非常容易使用的游戏框架,但是,由于它是基于objc语言的,所以你只能使用它来开发ios和mac下面的游戏。假如你可以使用和cocos2d相似的api来开发android上面的游戏,那岂不是更爽?这样,
Cocos2D是一个非常棒而且非常容易使用的游戏框架,但是,由于它是基于objc语言的,所以你只能使用它来开发ios和mac下面的游戏。
假如你可以使用和cocos2d相似的api来开发android上面的游戏,那岂不是更爽?这样,你就可以毫不费劲地扩大你的游戏的市场份额 (android的用户数量巨大啊!)
好吧,确实存在这么一个游戏框架,她就是cocos2d-x!cocos2d-x采用c++把cocos2d的api重新移植了一遍,,除了一些语 法细节上面的差异之外,你可以使用几乎一样的api来编写游戏。正是由于它是c++写的,所以可以跨多个平台,从ios到android、 windows、再到linux、bada等!
在这篇教程里面,你将学习到,如何使用cocos2d-x和c++来编写一个能够同时在ios和android设备上面跑的 &HelloWorld&程序。
而且,过两天,我会再出一篇教程,向大家展示一个具体的游戏例子---一个跨平台的太空射击游戏!
好了,带上你的iPhone和Android设备,让我们开始吧!
Hello,Cocos2D-X for iOS!
在继续之前,确保你先下载最新版本的cocos2d-x。
随便在你的硬盘的某个位置上面解压就可以了。注意,这个解压出来的文件夹的完整路径名,我们之后会用一个统一的别名$COCOS2DX_HOME来 指代。
现在,你已经下载到源码了,让我们来安装项目模板吧!你可以先cd到$COCOS2DX_HOME这个目录(译者:指你刚刚解压缩代码的存放路径) 下面去。在安装模板之前,先退出Xcode,然后打开一个终端,并输入下面的命令:
cd$COCOS2DX_HOME
sudo./install-templates-xcode.sh-u
注意:在上面所示的代码中,你不能直接输入$COCOS2DX_HOME,而要输入实际的路径。如果你直接输入了$COCOS2DX_HOME是不 会有任何反应的。当然,你可以参考我写的《如何在macos下面配置集成ios和android游戏教程》,里面有讲到环境变量的配置。大概方法就是打 开~/.bash_profile文件,然后用export来定义环境变量就ok了。
你可能会被要求输入管理员密码(加了-u应该是不需要输入密码的,不加-u就需要输入),之后的过程就非常简单了。在模板安装好之后,启动 xcode,然后创建一个新的项目。这时,你可以在项目模板对话框中看到有cocos2d-x的模板了。不用担心,cocos2d-x的模板与 cocos2d的模板并不会有冲突,因此,你还是可以创建cocos2d的项目。
让我们来试一下新模板吧!打开Xcode,然后创建一个新的工程,选择iOS\cocos2d-x\cocos2dx模板,如下图所示:
把工程例句为Cocos2DxFirstIosSample,然后保存。
现在,编译并运行,你将会看到cocos2d-x的hellowolrd程序跑起来了,如下图所示:
非常简单,不是吗?这时,你可以看看xcode里面的文件,特别是Classes\HelloWorldScene.H和Classes \HelloWorldScene.cpp。如果你也熟悉cocos2d的话,那么里面的代码看起来会觉得非常熟悉---几乎完全一样的 cocos2dAPI,只是语言是c++而已!
配置cocos2d-x的eclipse开发环境
现在我们已经完成了Xcode4的helloworld程序了,是时候看看如何使用eclipse来配置android的cocos2d-x开发环 境了。
这篇教程假设你有一个可以进行Android开发的标准开发环境。如果你还没有的话,可以参考这篇教程来配置,它里面提供了详细的过程,教你如何一 步步配置好一个标准的eclipseandroid开发环境。
但是,请等一下。一个标准的eclipseandroid开发环境是专为java开发设计的,而cocos2d-x却是基于c++来做开发的!
不用担心,eclipse已经有10年的历史了,它有许多插件可以支持其它语言的开发,这当然就包括c/C++语言的插件啦。先让我们来安装这个插 件吧。打开eclipse,然后执行以下步骤:
从EclipseIDE的主工具栏上面,选择Help/InstallNewSoftware。
打开WorkWith复选框,并从中选择一个包含你的eclipse版本名称的项(如果是最新版的eclipse的话,就选择indigo)
在插件树里面找到ProgrammingLanguages(只有当你复选中&Groupitemsbycategory&时,你才可以看到插件 树。)并打开它.
选择CDT插件,然后安装下列组件。(但是,请注意,你如果直接就点击C/C++DevelopmentTools的话,你是得不到下图所示的样子 的,你还需要在&MobileDevelopment&里面去查找相关的项)(译者:我没找了,直接就选择了C/C++DevelopmentTools 就Next安装了)
点击next来完成向导,然后等待组件下载并安装。现在,你可以使用eclipse来开发C/C++项目了!
Set up the Android NDK(Native Development Toolkit)
本来,android开发只能采用java,而且现在市场上面大部分的app也是采用java写的。
然而,现在你还可以通过NativeDevelopmentToolkit(NDK),使用C/C++来编写android程序。这种编程方式是由 Google在2009年6月份引入的,它允许一些组件采用C/C++来编写,然后通过标准的JavaNativeInterface(JNI)来调用。
安装NDK的过程非常简单:
下载最新版本的NDK。here(注意选择MacOSX平台).
解压tar.bz2到任意目录.之后,我会使用$NDKROOT来指定这个解压缩后的目录。
NDK给Android开发带来了全套的C/C++编译工具集,可以使用GCC4.4.3来编译来链接并且可以构建即时安装的APK包。
有了这套编译工具集,我们就可以在eclipse里面集成一些外部的C/C++库(比如cocos2d-x)。这些库被编译成动态库,然后通过 JNI(JavaNativeInterface)与JavaAndroid体系程序进行交互。
这些编译工具集可以采用下面两种方式使用:
独立模式:直接在你的makefile中使用arm-linux-androideabi-g++.这种方式会增加你的项目的复杂性和可维护性。我 推荐你不要使用这种方式。
集成模式:使用$NDKROOT/ndk-buildshell工具,它是一种高度可定制的makefile,专门为NDK库所设计的。这也是我们 这篇教程所采用的方式。
解释JNI和NDK可能会花费大量时间,而且也超出了本教程的讨论范围。现在网络上有许多关于JNI的资源。这里还推荐一本书,它也讨论了JNI这 个主题。
如果你需要更多关于NDK的信息,这里推荐一本非常好的书,它里面涵盖了使用C/C++进行NDK开发,书名 是:AndroidNativeDevelopmentKitBeginner&sGuide。这本书覆盖了NDK编程的方方面面,可谓是&从入门到精 通&,而且NDK本身也带有非常详细的文档,在$NDKROOT/docs路径下面。
Hello,Cocos2D-X for Android!
现在,让我们在Andriod平台上面来开发一个&Hello,World&程序吧,就像我们之前在ios平台上的程序一样。
我们需要通过命令行来完成工作,因为目前还没有在EclipseIDE里面集成cocos2d-x的模板。
在$COCOS2DX_HOME目录下面包含一个shell脚本,叫做create-android-project.sh,我们可能通过它来创建 android项目。但是,在运行脚本之前,我们需要在脚本文件的顶部做一些修改:
#setenvironmentparamters
NDK_ROOT_LOCAL=&/home/laschweinski/android/android-ndk-r5&
ANDROID_SDK_ROOT_LOCAL=&/home/laschweinski/android/android-sdk-linux_86&
修改上面这些行,把NDK_ROOT_LOCAL指向你安装AndroidNDK($NDKROOT)的位置,同时把 ANDROID_SDK_ROOT_LOCAL指向你安装AndroidSDK位置。(译者:这里其实可以不用修改,读者可以打开这个sh脚本去看看为什 么。如果之前看过我的配置教程,里面有配置一个全局的NDK_ROOT和ANDROID_SDK_ROOT。这个脚本在判断有全局的环境变量存在的时候, 会直接替代NDK_ROOT_LOCAL和ANDROID_SDK_ROOT_LOCAL。)
现在,可以运行create-android-project.sh脚本了,然后你会接收到一系列的提示输入。我们将一个个向您解释一下:
第一个提示要求你&Inputpackagepath&。这个包名会给后面的java代码使用。你可以使用你的域名反过来写,类似写ios的 bundleID。比如com.yourdomain.samplecocos2dxandroid,记住实际输入的时候要替换掉 &com.yourdomain&。
接下来,你会得到一系列可用的AndroidAPI和它们的id号。这个具体取决于你的机器上面安装的AndriodAPI的情况。
最后,你需要提供项目的名称,在这里取名为samplecocos2dxandroid:
命令行的输出大致如下:
bash-$./create-android-project.sh
Inputpackagepath.Forexample:org.cocos2dx.example
org.jymc.samplecocos2dxandroid
AvailableAndroidtargets:
----------
----------
id:9or&GoogleInc.:GoogleAPIs:15&
Name:GoogleAPIs
Type:Add-On
Vendor:GoogleInc.
Revision:1
Description:Android+GoogleAPIs
BasedonAndroid4.0.3(APIlevel15)
inputtargetid:
inputyourprojectname:
samplecocos2dxandroid
Createdprojectdirectory:/Users/jymen/development/cocos2dx/samplecocos2dxandroid
Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/AndroidManifest.xml
Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/build.xml
Addedfile/Users/jymen/development/cocos2dx/samplecocos2dxandroid/proguard.cfg
注意&Createdprojectdirectory:&这一行是脚本文件最后输出来的,这个输出的路径也就是你的Andriod项目被创建好的 路径。我这里指的是/Users/jymen/development/cocos2dx/samplecocos2dxandroid,如上图所示:
Note:Donottrytomovetheprojectfromthatlocationtoadifferentlocation.Atleastoneofthescriptswe&llworkwithinthenextsectionwillnotworkifyoudo.
这里有两个步骤来构建项目----首先通过命令行脚本编译c++代码,然后通过ecipse来编译java代码。
为了编译c++代码,我们需要切换到$PROJECT_HOME/android文件夹下面去,然后在终端里面输入下列命令:
./build_native.sh
你应该会看到下面类似的输出:
Gdbserver:[arm-linux-androideabi-4.4.3]libs/armeabi/gdbserver
Gdbsetup:libs/armeabi/gdb.setup
Compile++thumb:cocos2d&=CCConfiguration.cpp
Compile++thumb:cocos2d&=CCDrawingPrimitives.cpp
Compile++thumb:cocos2d&=CCTileMapAtlas.cpp
Compile++thumb:cocos2d&=CCTouchDispatcher.cpp
Compile++thumb:cocos2d&=CCTouchHandler.cpp
Prebuilt:libstlport_static.a&=/sources/cxx-stl/stlport/libs/armeabi/
SharedLibrary:libcocos2d.so
Install:libcocos2d.so=&libs/armeabi/libcocos2d.so
Compile++thumb:cocosdenshion&=SimpleAudioEngine.cpp
Compile++thumb:cocosdenshion&=SimpleAudioEngineJni.cpp
SharedLibrary:libcocosdenshion.so
Install:libcocosdenshion.so=&libs/armeabi/libcocosdenshion.so
Compile++thumb:game_logic&=AppDelegate.cpp
Compile++thumb:game_logic&=HelloWorldScene.cpp
SharedLibrary:libgame_logic.so
Install:libgame_logic.so=&libs/armeabi/libgame_logic.so
Compile++thumb:game&=main.cpp
SharedLibrary:libgame.so
Install:libgame.so=&libs/armeabi/libgame.so
这里就是在编译cocos2d-x库和你的项目里面的c++文件。
为了编译java代码,我们需要创建一个eclipse工程---这可比命令行要方便多了。:)
打开Eclipse,然后他吃软饭File\New\Other,选择Android\AndroidProject,然后点击Next,在 ProjectName里面输入samplecocos2dxandroid,然后选择 Createprojectfromexistingsource,然后浏览到$PROJECT_HOME/android文件夹,如下图所示:
点击Next,选择一个Androidversiontotarget(这里选择的是3.2,你可以选择任何一个)
点击Finish,好了,现在你有一个工程了!
在左边的树上右击项目,选择RunAs\AndroidApplication,然后AVD(AndroidVirtualDevice)就会启 动,然后就会跑出来Hello,Cocos2D-X项目了!
注意:如果程序没有启动的话,你需要按照提示去创建一个AVD来测试。更多的细节,请参考 GettingStartedwithAndroidDevelopment这篇教程。
恭喜你,你现在有一个&Hello,World&项目可以同时跑在ios和android上面了!
在Eclipse里面定义一个结合java/c++的工程
通过命令脚本来编译c++代码,完了之后用eclipse来编译java代码,这种来回切换的做法非常笨重。如果全部可以用eclipse来完成的 话,那么生活会更简单一些。
幸运的是,我们可以告诉eclipse,我们的android项目是一个集成java/c++的跨语言项目!
为此,我们在左边的项目树上选择samplecocos2dxandroid,然后从菜单里面选择File\New\Other,然后从对话框里面 选择C/C++\ConverttoaC/C++Project,如下所示:
点击Next。在下一个屏幕里面,选中你的项目,然后选择c++单选按钮,然后为Projecttype指定 Makefileproject\OtherToolchain,如下所示:
点击完成。这时eclipse会询问你是否打开C/C++视图,当对话框出现的时候,选择NO。
接下来的步骤就是修改项目设置,指定如何运行我们的make命令。在左边的项目树上,右击samplecocos2dxandroid工程,选择 Properties,然后选择C/C++build
取消&Usedefaultbuildcommand&复选框,然后在build文本框中输入下面的命令:
bash${workspace_loc:/samplecocos2dxandroid}/build_native.shNDK_DEBUG=1V=1
点击Apply,然后点OK。
回到ecipse,从主菜单中选择Project\BuildAll,这时你可以在ecipse的控制台输出中看到c++make在运行。
我们仍然有一些警告需要解决。想知道我是什么意思吗,你打开jni/helloworld/main.cpp,这里你会看到一系列的警告,如下所 示:
这些警告之所以会出现,是因为我们没有配置正确的c++包含路径。为了解决它,我们右击samplecocos2dxandroid工程,然后选择 Properties\C/C++General\PathandSymbols\GNUC++。
选择Add&按钮来选择下面的目录,之后点击Apply和OK。
$(NDKROOT)/platforms/android-9/arch-arm/usr/include
$(COCOS2DX_HOME)/cocos2dx/include
注意:不用忘了使用实际的路径来替换掉$(NDKROOT)和$(COCOS2DX_HOME)。
点击Apply,这时会提示你是否重建索引。直接点击yes继续就可以了。
现在,你再看看main.cpp,你会看到大部分警告已经消失了。
但是,AppDelegate.h文件还是找不到。这是因为AppDelegate.h是在$PROJECT_HOME\Classes文件夹下 面。这个文件夹对我们来说非常重要,因为它包含了我们工程里面的可移植的c++类,比如HelloWorldScene.cpp等。
当我们创建eclipse项目的时候,我们必须选择$PROJECT_HOME\android文件夹,因为eclipse需要一个 AndroidManifest.xml文件。但是,这样的话,我们的工程就不包括关键的&Classes&文件夹了,这也是为什么我们会得到这么多警告 的原因。
让我们来修正它吧。右击samplecocos2dxandroid项目,选择Properties\C/C++General \PathsandSymbols\Sourcelocation。点击LinkFolder,然后复选中 Linktoafolderinthefilesystem,接着浏览到$PROJECT_HOME文件夹,并指向Classes目录,最后点Apply 和OK。
你现在可以在文件树里面看到Classes目录了,而且在main.cpp里面的#include&AppDelegate.h&警告也应该消失 了。
Eclipse工程里面还会有许多警告,但是,这是因为eclipse对于解析c++头文件的能力并不强大。为了消除这些警告,我们又需要设置一下 项目设置。(右键点工程,然后选择Properties),把CodeAnalysis部分的warnings关闭,如下图所示:
然后点击Apply和OK,这时,你就得到一个工程可以在eclipse里面进行编辑了。
What About the Java Code?
这时你在eclipse里面再找找看,你会在src和gen目录下面找到一些java代码,你肯定很好奇这些代码是干吗用的。
Andriod开发采用的主要语言是java,这个项目模板已经为我们创建了一些java框架代码,用来加载c++编写好的动态库。
一般情况下,你是不需要修改这些java代码的,但是,还是让我们来看看src\com\xxx\samplecosos2dxandroid \samplecocos2dandroid.java这个类。
这个类包含了主AndroidActivity类,当应用程序启动的时候会加载。它首先通过NDK来请求编译好的c++动态库。(如果采用的是最新 版的coocs2dx的话,下面只会加载一个game库)
由于类是从Cocos2dxActivity所派生,在后台cocos2d-x会把控制权移交给c++的AppDelegate的 initInstance方法来处理,最后applicationDidFinishLAunching方法也就被执行起来了。
因此,再重申一遍,java代码只是一些包装代码,大部分情况下我们都不要去修改它,因为我们的游戏逻辑是由c++写的。
Sotorepeat,theJavacodejustcontainswrappercodethatyouwillrarelyneedtochange,sinceallthegame&slogicwillbeinsidetheC++code.
连接andriod和ios项目结构
现在,我们有两个cocos2d-x的项目了,一个是ios下面的,一个是andriod下面的。我们的目标是让两个工程共享同样的目录,这样就可 以使用同样的c++文件了。
我们两个项目里面,都有一个文件夹叫做&Classes&,它包含了我们的可移植的游戏代码(如下图:android的在左边,ios的在右边)
如果你仔细看看eclipse和xcode里面的Classes目录,你会发现这些c++文件完全相等。因此,我们需要做的就是让两个项目指向同一 个文件夹就ok了!
为了实现这个目标,在xcode里面打开Cocos2DxFirstIosSample项目。选择Classes分组,然后点击Delete,选择 &MovetoTrash&;
接下来,右键ProjectNavigator,选择&NewGroup&,然后重命名为Classes。点键Classes,点击 AddFiles。然后选择$PROJECT_HOME\Classes目录,同时确保 &Copyitemsintodestinationgroup&sfolder&没有被选中!
然后clean并rebuildxcode项目,并运行一下,确保一切ok。
恭喜,现在基础配置全部弄好了!你可以试着在eclipse里面修改,xcode这边运行,或者xcode里面修改,eclipse里面运行了。
什么时候使用Xcode,什么时候使用Eclipse?
现在,你有两个项目了,那么问题马上就出来了,我们到底什么时候该使用哪一个呢?
使用cocos2d-x通常的开发策略是,首先在ios上面通过xcode来测试,确认没问题后,再通过eclipse来测试。只需要在心里记住下 面几点就行:
经常测试.开发完一个小功能之后,就应该在andriod上面测试看行不行。这样的话,就不至于遇到问题找不到了。
在多个设备上面测试:现在市场上面有大量的android设备,而且它们的差别很细微,所以,你要尽可能多地测试多种不同型号的设备。
当然,你也可以先在andriod上面测试,然后再在ios上面测试。但是这样肯定会降低你的生产率。因为xcode比eclipse反应速度更 快,而ios模拟器比android的模拟器的启动速度也要快一些。
在ios上面调试cocos2d-x和cocos2d的方法差不多,这里也没什么多讲的。
然而,对于Android,这里有几点需要注意下。
当使用NDK来调试的时候,一个&服务端的&gdb和gdbcontext被ndk-buildshell脚本塞到APk里面去了。这个远程的 gdb调试器可以与任何gdb兼容的客户端进行通信。
Eclipse里面最好的gdbagent就是NVidiadebugmanagerplugin,但是安装这个插件不在本教程的讨论范围之内。
注意:如果你想安装NVidiaDebugManagerplugin,你首先到这个页面下载完整的TegraAndroid开发包,即便你可能现 在并不需要它。然后,安装TegraDeveloper,它会提示你安装哪些项,然后你可以选择NVidiaDebugManagerplugin这个插 件了。当你安装完之后,它并没有包插件安装到eclipse里面去,而是把zip文件放在你的硬盘的某个位置,你可以参考这个pdf文档来进行安装。
我发现在一些物理设备(比如SamsumgGalaxyS),remotedebugger老是启动不了,但是使用AVD就可以正常启动。
为了启动一个debug会话,你可以选择你的项目,然后右击DebugAsAndroidNDKapplication,如下图所示:
请注意,只有你安装了NVidiadebugmanagerplugin,你才会在右击的时候看到AndroidNDKApplication这个 选项。
你可以在一行代码上面双击来设置一个断点,如下所示:
当断点到达的时候,它将会停留在断点所在行:
悲催的是,使用gdb来调试android有时候并不管用,所以,你可能需要添加一些额外的tracing系统。想知道更多的信息,请联系我,我将 与大家分享这些tips。
恭喜你,你现在可以使用cocos2d-x来开发iphone和android下面的游戏了。

我要回帖

更多关于 还珠格格3天上人间视频 的文章

 

随机推荐