build_native.py文件分析(2)
2015-07-31 17:31
537 查看
def build(ndk_build_param,android_platform,build_mode): ////获取ndk_root -- NDK_ROOT = os.environ['NDK_ROOT'] ndk_root = check_environment_variables() //获取ndk_root sdk_root = None select_toolchain_version() //选择编译工具版本 //获取当前目录 current_dir = os.path.dirname(os.path.realpath(__file__)) //获取cocos_root库根目录,这个因为我们创建工程时拷贝了 //库源码,所以cocos_root目录使用的是当前目录相对目录 //如果我们的工程和库相对位置不是这样的,那我们只需要 //把此处修改一些就可以了。 //例如cocos_root = os.path.join("E:\otherpro\cocos2d-x-3.0\project\starGame\wipeStar\cocos2d") cocos_root = os.path.join(current_dir, "../cocos2d") //android 工程的根目录 app_android_root = current_dir //拷贝资源文件,即把Resources -->> assets copy_resources(app_android_root) if android_platform is not None: //获取SDK路径 -- SDK_ROOT = os.environ['ANDROID_SDK_ROOT'] sdk_root = check_environment_variables_sdk() if android_platform.isdigit(): android_platform = 'android-'+android_platform else: print 'please use vaild android platform' exit(1) if build_mode is None: build_mode = 'debug' elif build_mode != 'release': build_mode = 'debug' do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode) -->>do_build分析: def do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode): //得到NDK下ndk-build的路径 ndk_path = os.path.join(ndk_root, "ndk-build") # windows should use ";" to seperate module paths platform = sys.platform //生成ndk_module_path参数,也就是执行ndk-build是需要NDK_MODULE_PATH路径, //这里我们也可以根据自己的需求修改 if platform == 'win32': ndk_module_path = 'NDK_MODULE_PATH=%s;%s/external;%s/cocos' % (cocos_root, cocos_root, cocos_root) else: ndk_module_path = 'NDK_MODULE_PATH=%s:%s/external:%s/cocos' % (cocos_root, cocos_root, cocos_root) num_of_cpu = get_num_of_cpu() //根据传进来的参数,生成编译命令,ndk_build_param(我们执行脚本时-n指定的参数) //其实这个参数都是传给ndk-build命令的。 if ndk_build_param == None: command = '%s -j%d -C %s %s' % (ndk_path, num_of_cpu, app_android_root, ndk_module_path) else: command = '%s -j%d -C %s %s %s' % (ndk_path, num_of_cpu, app_android_root, ''.join(str(e) for e in ndk_build_param), ndk_module_path) if os.system(command) != 0: raise Exception("Build dynamic library for project [ " + app_android_root + " ] fails!") elif android_platform is not None: sdk_tool_path = os.path.join(sdk_root, "tools/android") cocoslib_path = os.path.join(cocos_root, "cocos/2d/platform/android/java") command = '%s update lib-project -t %s -p %s' % (sdk_tool_path,android_platform,cocoslib_path) if os.system(command) != 0: raise Exception("update cocos lib-project [ " + cocoslib_path + " ] fails!") command = '%s update project -t %s -p %s -s' % (sdk_tool_path,android_platform,app_android_root) if os.system(command) != 0: raise Exception("update project [ " + app_android_root + " ] fails!") buildfile_path = os.path.join(app_android_root, "build.xml") command = 'ant clean %s -f %s -Dsdk.dir=%s' % (build_mode,buildfile_path,sdk_root) //执行命令 os.system(command)
来自:http://blog.csdn.net/tianxiawuzhei/article/details/44984217
相关文章推荐
- Uediter的引用和取值
- LeetCode225——Implement Stack using Queues
- 【EasyUi DataGrid】动态加载列
- Selenium2学习-021-WebUI自动化实战实例-019-设置浏览器窗口位置大小
- git guide
- 最新 Arduino 驱动 12接口/户外 LED显示屏/LED点阵屏/LED单元板
- UIViewController视图控制器
- Ueditor使用方法
- LeetCode232——Implement Queue using Stacks
- SPOJ 2713. Can you answer these queries IV(GSS4 线段树)
- Android UI 之 ExpandableListActivity、ExpandableListView
- Selenium2学习-020-WebUI自动化实战实例-018-获取浏览器窗口位置大小
- hdu 4746 Mophues 莫比乌斯反演
- UITableView - 2
- ZOJ 2105 Number Sequence(矩阵快速幂)
- 提高android应用ui运行效率
- Error:Cannot build Artifact :war exploded because it is included into a circular depency
- iOS阶段学习第30天笔记( UIViewController—Delegate(代理) )
- (转)UIViewController中各方法调用顺序及功能详解
- hdu 4396 More lumber is required(最短路)