博客 页面 17

ionic/cordova插件开发

官方示例
https://github.com/apache/cordova-plugin-device

iOS库 .a与.framework区别

一、什么是库?

库是共享程序代码的方式,一般分为静态库和动态库。

二、静态库与动态库的区别?

静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

三、iOS里静态库形式?

.a和.framework

四、iOS里动态库形式?

.dylib和.framework

五、framework为什么既是静态库又是动态库?

系统的.framework是动态库,我们自己建立的.framework是静态库。

六、a与.framework有什么区别?

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。

.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。

.a + .h + sourceFile = .framework。

建议用.framework.

七、为什么要使用静态库?

方便共享代码,便于合理使用。

实现iOS程序的模块化。可以把固定的业务模块化成静态库。

和别人分享你的代码库,但不想让别人看到你代码的实现。

开发第三方sdk的需要。

八、制作静态库时的几点注意:

1 注意理解:无论是.a静态库还.framework静态库,我们需要的都是二进制文件+.h+其它资源文件的形式,不同的是,.a本身就是二进制文件,需要我们自己配上.h和其它文件才能使用,而.framework本身已经包含了.h和其它文件,可以直接使用。

2 图片资源的处理:两种静态库,一般都是把图片文件单独的放在一个.bundle文件中,一般.bundle的名字和.a或.framework的名字相同。.bundle文件很好弄,新建一个文件夹,把它改名为.bundle就可以了,右键,显示包内容可以向其中添加图片资源。

3 category是我们实际开发项目中经常用到的,把category打成静态库是没有问题的,但是在用这个静态库的工程中,调用category中的方法时会有找不到该方法的运行时错误(selector not recognized),解决办法是:在使用静态库的工程中配置other linker flags的值为-ObjC。

4 如果一个静态库很复杂,需要暴露的.h比较多的话,就可以在静态库的内部创建一个.h文件(一般这个.h文件的名字和静态库的名字相同),然后把所有需要暴露出来的.h文件都集中放在这个.h文件中,而那些原本需要暴露的.h都不需要再暴露了,只需要把.h暴露出来就可以了。

原文地址:http://blog.csdn.net/lvxiangan/article/details/43115131

mongodb图形化客户端

ROBO 3T下载地址
https://robomongo.org/download

ionic相关app

google play镜像网站:https://apkpure.com/search?q=ionic

npm报MSBUILD错误的解决办法

npm报错:
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。

直接使用这个工具即可,一次解决所有问题:
https://github.com/felixrieseberg/windows-build-tools

npm install –global –production windows-build-tools
需要注意的是需要管理员权限安装,CMD右键管理员打开即可

angular组件交互

http://blog.csdn.net/kuangshp128/article/details/71172934

https://segmentfault.com/a/1190000008959575

ionic使用prod编译报错

使用ionic cordova run android没有报错,编译正常,但加上–prod编译发布版本报错,报错如下:

PS C:\Users\coloz\Desktop\iotapp> ionic cordova run android –prod
Running app-scripts build: –prod –platform android –target cordova
[13:02:15] build prod started …
[13:02:15] clean started …
[13:02:16] clean finished in 8 ms
[13:02:16] copy started …
[13:02:16] deeplinks started …
[13:02:16] deeplinks finished in 216 ms
[13:02:16] ngc started …
Error: Metadata version mismatch for module C:/Users/coloz/Desktop/iotapp/node_modules/@ionic/storage/dist/src/storage.d.ts, found version 4, expected 3
at StaticSymbolResolver.getModuleMetadata (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:25748:34)
at StaticSymbolResolver._createSymbolsOf (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:25536:46)
at StaticSymbolResolver.getSymbolsOf (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:25517:14)
at C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:24376:30
at Array.forEach ()
at extractProgramSymbols (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:24375:79)
at AotCompiler.analyzeModulesAsync (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler\bundles\compiler.umd.js:23931:47)
at CodeGenerator.codegen (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler-cli\src\codegen.js:32:14)
at Function.NgTools_InternalApi_NG_2.codeGen (C:\Users\coloz\Desktop\iotapp\node_modules\@angular\compiler-cli\src\ngtools_api.js:73:30)
at Object.doCodegen (C:\Users\coloz\Desktop\iotapp\node_modules\@ionic\app-scripts\dist\aot\codegen.js:6:51)
[13:02:20] copy finished in 4.98 s

Error: Metadata version mismatch for module
模块版本不符,估计可能是我在另一台电脑时,更新了模块造成的
ionic官方github上解决方法:删除项目下的node_modules,并重新安装所有模块。
实际测试,还是没有解决问题。

ionic跨域访问问题解决办法

三种解决方法:

1.修改服务器端,允许跨域(推荐用法)

nginx可用如下配置

server
	{
		listen 80;	
		server_name clz.me;

		location /
			{
			add_header 'Access-Control-Allow-Origin' '*';
			add_header 'Access-Control-Allow-Credentials' 'true';
			add_header 'Access-Control-Allow-Methods' '*';
			}

	}

 

2.使用反向代理

百度

3.使用原生http请求

官方文档

ionic –prod的意义

加上–prod参数,打包时会进行ngc编译的aot静态编译和uglifyjs的压缩,等使得app运行速度加快

参考链接:

http://blog.csdn.net/robert_cysy/article/details/62455682

angular项目安装node-sass报错

错误信息如下:
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
生成启动时间为 2017/11/3 21:04:22。
节点 1 上的项目“C:\Users\coloz\Desktop\Source\node_modules\node-sass\build\binding.sln”(默认目标)。
ValidateSolutionConfiguration:
正在生成解决方案配置“Release|x64”。
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果
将该组件安装到了其他位置,请将其位置添加到系统路径
中。 [C:\Users\coloz\Desktop\Source\node_modules\node-sass\build\binding.sln]
已完成生成项目“C:\Users\coloz\Desktop\Source\node_modules\node-sass\build\binding.sln”(默认目标)的操作 – 失败。

生成失败。

“C:\Users\coloz\Desktop\Source\node_modules\node-sass\build\binding.sln”(默认目标) (1) ->
(_src_\libsass 目标) ->
MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如
果将该组件安装到了其他位置,请将其位置添加到系统
路径中。 [C:\Users\coloz\Desktop\Source\node_modules\node-sass\build\binding.sln]

0 个警告
1 个错误

已用时间 00:00:00.69
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\coloz\Desktop\Source\node_modules\node-gyp\lib\build.js:258:23)
gyp ERR! stack at emitTwo (events.js:125:13)
gyp ERR! stack at ChildProcess.emit (events.js:213:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command “D:\\Program Files\\nodejs\\node.exe” “C:\\Users\\coloz\\Desktop\\Source\\node_modules\\node-gyp\\bin\\node-gyp.js” “rebuild” “–verbose” “–lib
sass_ext=” “–libsass_cflags=” “–libsass_ldflags=” “–libsass_library=”
gyp ERR! cwd C:\Users\coloz\Desktop\Source\node_modules\node-sass
gyp ERR! node -v v8.4.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Build failed with error code: 1
npm WARN @angular/platform-server@4.0.2 requires a peer of @angular/animations@4.0.2 but none was installed.
npm WARN @angular/platform-server@4.0.2 requires a peer of @angular/core@4.0.2 but none was installed.
npm WARN @angular/platform-server@4.0.2 requires a peer of @angular/common@4.0.2 but none was installed.
npm WARN @angular/platform-server@4.0.2 requires a peer of @angular/compiler@4.0.2 but none was installed.
npm WARN @angular/platform-server@4.0.2 requires a peer of @angular/platform-browser@4.0.2 but none was installed.
npm WARN angular2-google-maps@0.17.0 requires a peer of @angular/common@^2.3.1 but none was installed.
npm WARN angular2-google-maps@0.17.0 requires a peer of @angular/core@^2.3.1 but none was installed.
npm WARN @ionic/cli-plugin-ionic-angular@1.3.1 requires a peer of @ionic/app-scripts@^1.3.7 but none was installed.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.2: wanted {“os”:”darwin”,”arch”:”any”} (current: {“os”:”win32″,”arch”:”x64″})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.5.0 postinstall: `node scripts/build.js`
`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.5.0 postinstall script. ikely additional logging output above.
npm ERR! This is probably not a problem with npm. There is l
ikely additional logging output above.
2017-11-03T13_04_32_612Z-debug.log
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\coloz\AppData\Roaming\npm-cache\_logs\
_logs\2017-11-03T13_04_32_612Z-debug.log

解决办法:

npm报MSBUILD错误的解决办法