新建项目 -vx 表示指定第x个ionic版本
ionic start myAwesomeApp --vx
(不指定会提示使用哪个版本)
ionic创建项目报错Error: read ECONNRESET at _errnoException (util.js:992:11) at TLSWrap.onread (net.js:618:25)
–> 版本4.1.1 降级为3.9.1 !!!
tabs : a simple 3 tab layout
sidemenu: a layout with a swipable menu on the side
blank: a bare starter with a single page
super: starter project with over 14 ready to use page designs
tutorial: a guided starter project
开启ionic项目服务 浏览器可直接访问
ionic serve
添加ios平台
cordova platform add ios
添加android平台
cordova platform add android
编译ios
cordova build ios --prod --release
编译安卓
cordova build android --prod --release
ANDROID:
打包签名
产生签名:keytool -genkey -v -keystore [姓名].keystore -alias [姓名].keystore -keyalg RSA -validity 20000
>> keytool -genkey -v -keystore test.keystore -alias test -keyalg RSA -keysize 2048 -validity 10000
签名:jarsigner -verbose -keystore 密钥库存放的路径 -digestalg SHA1 -sigalg MD5withRSA -signedjar 新apk的存放路径 未签名的apk路径 密钥库别名
>> jarsigner -verbose sigalg SHA1withRSA -digestalg SHA1 -keystore test.keystore app-release-unsigned.apk test
优化apk:
zipalign -v 4 app-release-unsigned.apk test.apk
# 操作HAXM intel
kextstat | grep intel
sudo kextload –b com.intel.kext.intelhaxm
or
sudo kextload /Library/Extensions/intelhaxm.kext
sudo kextunload –b com.intel.kext.intelhaxm
or
sudo kextload /Library/Extensions/intelhaxm.kext
# avd
Create an AVD by running: /usr/local/lib/android-sdk-macosx/tools/android avd
IOS:
>platform >ios >myApp.xcodeproj(xcode打开) >usb手机 选择我的手机 >run
---------------------------------------------------------------------
Signing for "myApp" requires a development team. Select a development team in the project editor
>>> 需要购买开发者有权限 然后会生成签名文件 并验证开发者是属于有效的 然后就可以签名了
project 文件目录解释:
node_modules: node的各类依赖包
resources: android ios 资源 图标 动画等
src: 开发主目录 页面 样式 脚本 图片也放在这个目录
assets: 资源目录
pages: 页面
theme: scss
www: 静态文件
paltforms: 生成android和ios的安装包路径
plugins: 插件文件夹 存放cordova安装的插件
config.xml: 配置文件
package.json: node安装模块依据
tsconfig.json: ts项目的根目录 指定用来编译这个项目的根文件和编译选项
tslint.json: 格式化和校验ts
ionic 进行数据交互部分
1. 需要创建provider来后去数据源
ionic g provider storage 自动创建一个名为storage的服务 在src/providers/storage/下
# 注意 这个storage应该是受指定的 也就是不能随便创建服务
# 需要指出的是 这是个缓存的服务 类似于cookie 以便方便使用交互数据
# 具体的使用方法需要自己定义在StorageProvider类中
其实也就是get set方法 外加一个remove方法 当然还可以定义更复杂的使用方式
2. 创建web api以便我们 与 服务端进行交互
ionic g provider api 创建一个api目录在src/provider/api/
# 与上类似 关于post请求和get请求需要定义在ApiProvider类中
# 这里尚且写清楚吧:
/ 定义公共访问服务的post和get处理方法
@Injectable()
export class ApiProvider {
public headers = new Headers({'Content-Type':'application/json'});
constructor(public http: Http) {
console.log('Hello ApiProvider Provider');
}
// get请求
public get() {
return new Promise((resolve, reject) => {
this.http.get('get-url')
.subscribe((res:Response)=>{
resolve(res.json())
}, err=>{
console.dir(err);
reject();
});
});
}
// post请求
public post(data) {
return new Promise((resolve, reject) => {
this.http.post('post-url', data, {headers:this.headers})
.subscribe((res: Response) = > {
resolve(res.json());
}, err => {
console.dir(err)
reject();
});
});
}
}
/ 在需要使用数据交互的地方使用post和get方法
1. import { ApiProvider } from '../../providers/api/api';
2. 定义数据格式接口 这个接口应该专门由一个文件来定义 一个页面可能发送的数据请求不止一个
interface Photo {
albumId: number;
id: number;
title: string;
url: string;
thumbnailUrl: string;
}
3.案例给的这步是在构造函数的地方调一个init()函数 来确定是否需要重新登入
4.定义具体的逻辑方法 并调用get 或者 post方法
关于ionic有用的插件:
网络监测:cordova-plugin-network-information
1.ionic cordova plugin add cordova-plugin-network-information
2.npm/cnpm install --save @ionic-native/network
客户端存储:cordova-sqlite-storage
1.cordova plugin add cordova-sqlite-storage --save
2.npm install –save @ionic/storage
关于node环境升级到v8以上,node-sass报错:
Error: Node Sass does not yet support your current environment: OS X 64-bit with Unsupported runtime
意思是node-sass不兼容node v8的版本 于是用下面的方式直接下载node-sass
npm i node-sass -D