- 浏览: 3572188 次
- 性别:
- 来自: 大连
-
博客专栏
-
-
使用Titanium Mo...
浏览量:38647
-
-
Cordova 3.x入门...
浏览量:609261
-
-
常用Java开源Libra...
浏览量:684821
-
-
搭建 CentOS 6 服...
浏览量:90690
-
-
Spring Boot 入...
浏览量:403388
-
-
基于Spring Secu...
浏览量:70023
-
-
MQTT入门
浏览量:92442
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
(1)Node.js的使用
Cordova CLI基于node.js,所以有必要知道nodejs最基本的知识。
(2)2个重要的路径
https://github.com/apache/cordova-cli
https://github.com/apache/cordova-android
(3)输入命令到执行完的过程
安装完Nodejs后,npm的路径就被放到了环境变量PATH中。
以下简称NPM_ROOT,安装完Cordova后,在这个文件夹下有:
所以在输入cordova cli命令时,入口就是这两个文件,以下以cordova.cmd为例说明。
a) 输入命令(根据不同的命令处理不同,这里以添加平台支持为例)
b) 执行<NPM_ROOT>/cordova.cmd
其中%~dp0代表的是batch文件所在路径,比如执行C:\bat_files\example.bat,那么%~dp0 就是 C:\bat_files\。这里就是指NPM_ROOT。类似shell的$0就是Windows下batch文件中获取参数的一种方式,可以在命令行窗口执行“for /?”可以查看详细说明。启动node执行cordova(nodejs)文件,并把所有参数传给它。(%*:输入的所有参数)
c) 执行cordova(nodejs)
路径:<NPM_ROOT>\node_modules\cordova\bin
nodejs文件:cordova
addTs()函数是打印执行时间,默认未开启,所以只要代码是:
****cordova.cmd 作用和npm文件夹下的cordova.cmd一样,%~dpn0 代表带路径的batch文件名。
d) 进入<NPM_ROOT>\node_modules\cordova\src\cli.js
d.1)// 导入node_modules\cordova\cordova.js
var cordova = require('../cordova');
-> // 导入node_modules\cordova\src\util.js
-> var cordova_util = require('./src/util');
-> // 通过addModuleProperty()方法加载不同命令的(比如这里的platform)代码
-> addModuleProperty(module, 'platform', './src/platform', true);
d.2)对输入参数进行解析提取
d.3)根据不同命令执行cordova.raw[cmd].call();
比如调用platform()方法。
e) 进入<NPM_ROOT>\node_modules\cordova\src\platform.js
***0***
***1***
进入 <LIB_ROOT>\android\cordova\3.4.0\bin
create.bat
create(nodejs)
进入 <LIB_ROOT>\android\cordova\3.4.0\bin\lib
create.js
说是创建其实大部分都是从libdir拷贝过来的,执行了一下“android update project”。
***2***
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman
plugman.js
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman\src
install.js
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman\src
prepare.js
从plugins往\platforms\android\assets\www\plugins下Copy插件JS代码的时候,添加了模块的定义,所以最终执行的插件的JS和安装的JS是不一样的。
以上过程只是主要的处理流程,至此Android项目创建成功,并且以下两个Cordova核心的js也放置到了相应的位置。
其他的命令各自有各自的作用,所以处理内容不同。特别要说的是执行和project相关的命令时,最终会调用到各个平台工程下的脚本,比如:platforms\android\cordova。放在project下的目的除过各个平台的脚本不一样以外,也使该工程更独立,只要有Nodejs环境即可编译运行。
参考:
http://blog.csdn.net/mociml/article/category/1409992
Cordova CLI基于node.js,所以有必要知道nodejs最基本的知识。
// define:1个module1个js文件 exports.printFoo = function(){ return "foo" } // import var foo = require('./foo.js'); // call console.log(foo.printFoo());
引用
node main.js
(2)2个重要的路径
- C:\Documents and Settings\RenSanNing\Application Data\npm\node_modules\cordova
- C:\Documents and Settings\RenSanNing\.cordova\lib (以下简称LIB_ROOT)
https://github.com/apache/cordova-cli
https://github.com/apache/cordova-android
(3)输入命令到执行完的过程
安装完Nodejs后,npm的路径就被放到了环境变量PATH中。
引用
C:\Documents and Settings\RenSanNing\Application Data\npm
以下简称NPM_ROOT,安装完Cordova后,在这个文件夹下有:
- cordova.cmd(windows batch)
- cordova(linux shell)
所以在输入cordova cli命令时,入口就是这两个文件,以下以cordova.cmd为例说明。
a) 输入命令(根据不同的命令处理不同,这里以添加平台支持为例)
引用
cordova platform add android
b) 执行<NPM_ROOT>/cordova.cmd
引用
node "%~dp0\node_modules\cordova\bin\cordova" %*
其中%~dp0代表的是batch文件所在路径,比如执行C:\bat_files\example.bat,那么%~dp0 就是 C:\bat_files\。这里就是指NPM_ROOT。类似shell的$0就是Windows下batch文件中获取参数的一种方式,可以在命令行窗口执行“for /?”可以查看详细说明。启动node执行cordova(nodejs)文件,并把所有参数传给它。(%*:输入的所有参数)
c) 执行cordova(nodejs)
路径:<NPM_ROOT>\node_modules\cordova\bin
nodejs文件:cordova
addTs()函数是打印执行时间,默认未开启,所以只要代码是:
var CLI = require('../src/cli'); new CLI(process.argv);
****cordova.cmd 作用和npm文件夹下的cordova.cmd一样,%~dpn0 代表带路径的batch文件名。
d) 进入<NPM_ROOT>\node_modules\cordova\src\cli.js
d.1)// 导入node_modules\cordova\cordova.js
var cordova = require('../cordova');
-> // 导入node_modules\cordova\src\util.js
-> var cordova_util = require('./src/util');
-> // 通过addModuleProperty()方法加载不同命令的(比如这里的platform)代码
-> addModuleProperty(module, 'platform', './src/platform', true);
d.2)对输入参数进行解析提取
d.3)根据不同命令执行cordova.raw[cmd].call();
比如调用platform()方法。
e) 进入<NPM_ROOT>\node_modules\cordova\src\platform.js
function platform(command, targets) { // 验证当前文件夹是否是Cordova-based project var projectRoot = cordova_util.cdProjectRoot(); // 获取Hooks文件 var hooks = new hooker(projectRoot); // ... // 调用相应的方法(比如:add)****** add(hooks, projectRoot, targets, opts) }
function add(hooks, projectRoot, targets, opts) { // 读入config.xml var xml = cordova_util.projectConfig(projectRoot); var cfg = new ConfigParser(xml); // 执行before_platform_add的Hook hooks.fire('before_platform_add', opts) // 获取libDir的目录即: <LIB_ROOT>\android\cordova\3.4.0 lazy_load.based_on_config(projectRoot, t) // 调用Android SDK****** call_into_create(t, projectRoot, cfg, libDir, template, copts) // 执行after_platform_add的Hook hooks.fire('after_platform_add', opts); }
function call_into_create(target, projectRoot, cfg, libDir, template_dir, opts) { // ... // 检查平台依赖***0*** module.exports.supports(projectRoot, target) var bin = path.join(libDir, 'bin', 'create'); // 调用bat创建project***1*** superspawn.spawn(bin, args, opts || { stdio: 'inherit' }) // 调用prepare require('../cordova').raw.prepare(target); // 把merges文件夹下的文件覆盖过去 createOverrides(projectRoot, target); // 通过plugman安装plugins下的所有插件***2*** plugman.raw.install(target, output, path.basename(plugin), plugins_dir); }
***0***
function supports(project_root, name) {、 // 平台配置解析文件 <NPM_ROOT>\node_modules\cordova\platforms.js // 具体Android在:src\metadata\android_parser var platforms = require('../platforms'); var platformParser = platforms[name].parser; // 检查平台依赖lib是否存在 platformParser.check_requirements(project_root); }
***1***
进入 <LIB_ROOT>\android\cordova\3.4.0\bin
create.bat
引用
SET script_path="%~dp0create"
node %script_path% %*
node %script_path% %*
create(nodejs)
var create = require('./lib/create'); create.createProject(args._[0], args._[1], args._[2], args._[3], args['--shared'], args['--cli']).done();
进入 <LIB_ROOT>\android\cordova\3.4.0\bin\lib
create.js
说是创建其实大部分都是从libdir拷贝过来的,执行了一下“android update project”。
引用
C:\Documents and Settings\RenSanNing\.cordova\lib\android\cordova\3.4.0
exports.createProject = function(project_path, package_name, project_name, project_template_dir, use_shared_project, use_cli_template) { // ... // 检测Ant(ant -version),Java(java -version),Android(android list targets) check_reqs.run(); // 前边有很多Copy文件的准备工作,其中最重要的cordova.js就是从以下路径Copy过来的。 // <LIB_ROOT>\android\cordova\3.4.0\framework\assets\www\cordova.js // 这里就是创建Android工程的具体实现 // cmd:android update project --subprojects --path "platforms\android" --target android-19 --library "CordovaLib" // CordovaLib工程也是从<LIB_ROOT>\android\cordova\3.4.0\frameworkCopy过去的 // target_api取得是<LIB_ROOT>\android\cordova\3.4.0\framework\project.properties的target=android-19 runAndroidUpdate(project_path, target_api, use_shared_project); }
***2***
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman
plugman.js
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman\src
install.js
function installPlugin(platform, project_dir, id, plugins_dir, options) { //... // 这里就是解析plugin.xml后安装plugin的具体实现 runInstall(current_stack, platform, project_dir, plugin_dir, plugins_dir, options) //... }
function runInstall(actions, platform, project_dir, plugin_dir, plugins_dir, options) { //... // Copy文件 copyPlugin(); handleInstall(); //... }
function handleInstall(actions, plugin_id, plugin_et, platform, project_dir, plugins_dir, plugin_dir, filtered_variables, www_dir, is_top_level) { //... plugman.prepare(project_dir, platform, plugins_dir, www_dir); //... }
进入 <NPM_ROOT>\node_modules\cordova\node_modules\plugman\src
prepare.js
scriptContent = 'cordova.define("' + moduleName + '", function(require, exports, module) { ' + scriptContent + '\n});\n';
从plugins往\platforms\android\assets\www\plugins下Copy插件JS代码的时候,添加了模块的定义,所以最终执行的插件的JS和安装的JS是不一样的。
// 生成cordova_plugins.js var final_contents = "cordova.define('cordova/plugin_list', function(require, exports, module) {\n"; final_contents += 'module.exports = ' + JSON.stringify(moduleObjects,null,' ') + ';\n'; final_contents += 'module.exports.metadata = \n'; final_contents += '// TOP OF METADATA\n'; final_contents += JSON.stringify(pluginMetadata, null, ' ') + '\n'; final_contents += '// BOTTOM OF METADATA\n'; final_contents += '});';
以上过程只是主要的处理流程,至此Android项目创建成功,并且以下两个Cordova核心的js也放置到了相应的位置。
- platforms\android\assets\www\cordova.js
- platforms\android\assets\www\cordova_plugins.js
其他的命令各自有各自的作用,所以处理内容不同。特别要说的是执行和project相关的命令时,最终会调用到各个平台工程下的脚本,比如:platforms\android\cordova。放在project下的目的除过各个平台的脚本不一样以外,也使该工程更独立,只要有Nodejs环境即可编译运行。
- prepare
- compile(platforms\android\cordova\build)
- build(prepare->compile)
- run(prepare->platforms\android\cordova\run)
- emulate(prepare->platforms\android\cordova\run) 比run多了个参数“--emulator”
参考:
http://blog.csdn.net/mociml/article/category/1409992
发表评论
-
如何制作一个发布版的ionic应用?
2015-04-23 11:27 16889如何为Android APK签名,已经在这里说过了。这里说说如 ... -
Cordova各版本的不同
2015-04-12 17:26 31284Cordova每次大版本的发布都会带来系统架构很大的变化,很多 ... -
把CordovaWebView嵌入到自己的应用(Embedding WebViews)
2015-04-07 10:56 25200以下以Android为例。 (1)下载最新版的Cordova ... -
完整配置的Cordova-Phonegap-Ionic-Android环境
2015-01-22 17:01 9676搭建开发环境是程序员的基本功,虚拟机技术(VMware、Vir ... -
Cordova 3.x 入门 - 目录
2014-12-06 21:32 59582这个系列是基于Cordova 3. ... -
Awesome PhoneGap/Cordova
2014-12-03 22:23 3545A curated list of amazingly awe ... -
把Crosswalk打包到Cordova应用中
2014-10-09 16:02 4907(1)从Crosswalk官网下载Cordova Androi ... -
Eclipse开发ionic应用
2014-09-19 11:10 22218(1)首先下载最新版的Eclipse 4.4 (Luna) ... -
Cordova 3.x 实用插件(6) -- 检查APP是否被安装
2014-09-12 11:17 10130应用中经常要启动其他应用,比如:打开市场为自己的应用打分、强制 ... -
Cordova 3.x 实用插件(5) -- 通过自定义URL Scheme启动你的APP
2014-09-11 14:45 7677通过URL Scheme来启动APP是一种很常见的做法,比如: ... -
Cordova 3.x 实例开发 -- 基于Ionic的Todo应用
2014-05-27 13:04 32300基于Ionic的Todo应用,以下为Android截图,代码在 ... -
PhoneGap和Cordova的区别
2014-05-15 10:56 10063Cordova历史发展 ・2009年 通过iPhoneDevC ... -
Cordova Android中ShowTitle的问题
2014-04-28 13:34 4027根据官方文档的描述,要想显示TitleBar需要在config ... -
Cordova 3.x 源码分析(7) -- CordovaLib概要
2014-04-25 17:16 10321在http://rensanning.iteye.com/bl ... -
Cordova 3.x 源码分析(6) -- cordova.js本地交互JS<->Native
2014-04-24 12:11 15804src/android/android/nativeapipr ... -
Cordova 3.x 源码分析(5) -- cordova.js导入、初始化、启动、加载插件
2014-04-22 16:44 27218执行cordova.js的入口就以下2行代码: // 导入co ... -
Cordova 3.x 源码分析(4) -- cordova.js事件通道pub/sub
2014-04-22 15:40 4354作为观察者模式(Observer)的一种变形,很多MV*框架( ... -
Cordova 3.x 源码分析(3) -- cordova.js模块系统require/define
2014-04-16 13:21 6550类似于Java的package/import,在JavaScr ... -
Cordova 3.x 源码分析(2) -- cordova.js概要
2014-04-16 13:14 11609前提环境: 引用Platform: android Versi ... -
Cordova 3.x 实用插件(4) -- Android的SEND、VIEW、CALL(WebIntent)
2014-04-09 16:20 6688插件地址:https://github.com/Initsog ...
相关推荐
外加热强制循环蒸发器装配图(CAD).rar
数控车床纵向进给系统设计.zip
j
爬虫 bangumi名称和评论数
基于SpringBoot的垃圾分类回收系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览垃圾分类回收系统信息。 个人中心:管理个人信息,查看历史记录和订单状态。 运输管理:查看运输信息,垃圾回收的时间和地点。 公告管理:阅读系统发布的相关通知和公告。 垃圾回收管理:查看垃圾回收的信息,回收类型和进度。 垃圾出库申请管理:提交和查看垃圾出库申请的状态。 【管理员功能】 首页:查看垃圾分类回收系统。 个人中心:管理个人信息。 管理员管理:审核和管理注册管理员用户的信息。 用户管理:审核和管理注册用户的信息。 运输管理:监管和管理系统中的运输信息。 公告管理:发布、编辑和删除系统的通知和公告。 垃圾回收管理:监管和管理垃圾回收的信息。 垃圾出库申请管理:审批和管理用户提交的垃圾出库申请。 基础数据管理:管理系统的基础数据,运输类型、公告类型和垃圾回收类型。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库: MySQL5.7以上都可以 Maven:任意版本都可以
内容概要:本文档是台湾大学计算机科学与信息工程系2021年秋季学期《算法设计与分析》课程的第一次作业(Homework#1)。作业包含四道编程题和三道手写题,旨在考察学生对算法设计和分析的理解与应用能力。编程题涉及汉诺塔、数组计算、矩形点对、糖果分配等问题;手写题涵盖渐近符号证明、递归方程求解、幽灵腿游戏优化、不公平的卢卡斯问题等。文档详细描述了每个问题的具体要求、输入输出格式、测试用例以及评分标准。此外,还提供了编程技巧和注意事项,如避免延迟提交、正确引用资料、处理大输入文件等。 适合人群:具备一定编程基础的本科生或研究生,特别是修读过或正在修读算法设计与分析相关课程的学生。 使用场景及目标:①帮助学生巩固课堂所学的算法理论知识;②通过实际编程练习提高解决复杂问题的能力;③为后续更深入的学习和研究打下坚实的基础。 其他说明:此作业强调团队合作和个人独立思考相结合的重要性,鼓励学生在讨论后用自己的语言表达解决方案,并注明参考资料。对于编程题,特别提醒学生注意输入文件可能较大,建议采取适当的优化措施以确保程序运行效率。
基于SpringBoot的铁路订票管理系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览铁路订票管理系统的主要信息。 火车信息:查看火车的相关信息,包括车次、出发地、目的地和票价等。 公告资讯:阅读系统发布的相关通知和资讯。 后台管理:进行系统首页、个人中心、车票预订管理、车票退票管理等操作。 个人中心:管理个人信息,查看订单历史记录等。 【管理员功能】 首页:查看铁路订票管理系统。 个人中心:修改密码、管理个人信息。 用户管理:审核和管理注册用户的信息。 火车类型管理:管理系统中的火车类型信息。 火车信息管理:监管和管理系统中的火车信息,添加、编辑、删除等。 车票预订管理:处理用户的车票预订请求。 车票退票管理:处理用户的车票退票请求。 系统管理:管理系统的基本设置,公告资讯、关于我们、系统简介和轮播图管理。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库: MySQL5.7以上都可以 Maven:任意版本都可以
塑料架注射模具设计.rar
基于json文件数据驱动的的接口测试框架
铁丝缠绕包装机设计-缠绕盘设计.rar
linux
圆柱体相贯线焊接专机工作台设计.rar
硬币分拣机设计.rar
内容概要:本文探讨了开发行业级机器学习和数据挖掘软件的经验与教训,指出当前研究界与工业界之间的脱节问题。作者分享了开发LIBSVM和LIBLINEAR的经验,强调了用户需求的重要性。大多数用户并非机器学习专家,期望简单易用的工具来获得良好结果。文章还详细介绍了支持向量机(SVM)的实际应用案例,包括数据预处理(如特征缩放)、参数选择等步骤,并提出了为初学者设计的简易流程。此外,作者讨论了在设计机器学习软件时应考虑的功能选择、选项数量、性能优化与数值稳定性等问题,强调了软件开发与实验代码的区别以及鼓励研究人员参与高质量软件开发的重要性。 适合人群:对机器学习软件开发感兴趣的科研人员、工程师及从业者,尤其是那些希望了解如何将学术研究成果转化为实际可用工具的人士。 使用场景及目标:①帮助非机器学习专家的用户更好地理解和使用机器学习方法;②指导开发者在设计机器学习软件时考虑用户需求、功能选择、性能优化等方面的问题;③促进学术界与工业界之间的合作,推动高质量机器学习软件的发展。 其他说明:本文不仅提供了具体的开发经验和技巧,还呼吁建立激励机制,鼓励更多研究人员投入到机器学习软件的开发中,以解决当前存在的研究与应用脱节的问题。
一天入门pandas代码
该资源为joblib-0.12.0-py2.py3-none-any.whl,欢迎下载使用哦!
内容概要:本文档《xtuner_requirements.txt》列出了用于支持特定项目(可能是机器学习或深度学习项目)运行所需的所有Python包及其版本。其中不仅包括常见的数据处理和科学计算库如numpy、pandas,还包括了与深度学习密切相关的库如torch、transformers等。值得注意的是,文档中还特别指定了NVIDIA CUDA相关组件的具体版本,确保了GPU加速环境的一致性和兼容性。此外,文档中也包含了从GitHub直接安装的xtuner库,明确了具体的提交哈希值,保证了代码来源的精确性。 适合人群:对机器学习、深度学习领域有一定了解并需要搭建相应开发环境的研发人员,尤其是那些希望复现特定实验结果或基于已有模型进行二次开发的研究者和技术爱好者。 使用场景及目标:①帮助开发者快速搭建完整的开发环境,确保所有依赖项正确无误;②为研究人员提供一个稳定的实验平台,以便于重复实验和验证结果;③作为项目协作的基础,确保团队成员之间的环境一致性,减少因环境差异带来的问题。 阅读建议:由于该文档主要为技术性依赖列表,在阅读时应重点关注所需安装的库及其版本号,特别是CUDA相关组件和自定义库(如xtuner)的安装方式。对于非技术人员而言,可能需要额外查阅相关资料来理解各库的作用。同时,在实际操作过程中,建议按照文档中的顺序逐一安装依赖,避免版本冲突等问题的发生。
j
液氮带控制点工艺流程图.rar
该资源为joblib-0.9.4-py2.py3-none-any.whl,欢迎下载使用哦!