不知为何,中途跑去使用Android Studio开发了一段时间,之前的基于Angular2+Ionic2开发的项目打包时就一直报错,根据错误提示各种搜索解决方案还是无济于事,没办法只能把新建项目,把代码拉下来重新配置环境。
记录一下填坑步骤:
1.JAVA环境:版本是1.8,很早就配置好了,这个没问题。
2.Android SDK环境:之前是随便配的,后来使用Android Studio下载了sdk,所以后来使用了这个sdk。
1)查看SDK路径:在Android Studio->Tools->SDK Manager->Android sdk Location中
2)配置sdk路径:打开terminal终端,输入open .bash_profile,配置以下环境:
export ANDROID_HOME=/Users/duanjinlong/Library/Android/sdk
export PATH=${PATH}:$ANDROID_HOME/tools
export PATH=${PATH}:$ANDROID_HOME/platform-tools
3.安装或初始化npm
npm init
4.安装cordova:
cnpm install -g cordova
查看版本:
cordova -v
5.安装ionic:
cnpm install -g ionic
查看版本:
ionic -v
初始inoic:
ionic init
6.运行项目:
ionic serve -l
7.添加平台:
ionic cordova platform add android
添加完平台后app目录下会多了一个 platforms 文件夹 (可能会出现各种错误,根据错误提示一个一个解决)
错误1:
Version of installed plugin: “cordova-plugin-file@4.3.3” does not satisfy dependency plugin requirement
解决方案:
运行命令:
ionic cordova plugin add cordova-plugin-file
npm install --save @ionic-native/file@4.3.3
ionic cordova plugin add cordova-plugin-file-transfer --force
ionic cordova plugin add cordova-plugin-file-transfer@4.3.3
然后修改项目目录下的plugin/cordova-plugin-file的package.json文件中的:
将5.0.0修改为4.0.0,我猜想是cordova>100后就要求依赖file文件要大于5.0.0,我改成4.0.0就ok了。
"engines": {
"cordovaDependencies": {
"4.0.0": {
"cordova": ">100"
}
}
},
8.下载打包必备的gradle插件:
在http://services.gradle.org/distributions/下载比较新的版本 (需要是带-all的压缩包)
不解压直接放在platform/android/gradle文件夹下。
注意:新项目没有gradle这个文件夹,需要新建一个,文件名不要写错。
修改配置:
将下图目录中的ProjectBuilder.js文件中代码
'https\\://services.gradle.org/distributions/gradle-2.14.1-all.zip'
修改为:(名字为下载的压缩包的全名)
'../gradle-5.4.1-all.zip'
同样:将下图目录中的gradle-wrapper.properties文件进行同样修改
若不能在代码中直接修改,可右键Reveal in Finder定位到文件夹中再修改,最后保存关闭。
9.打包
ionic cordova build android
成功后会显示输出位置:
遇到的问题:
1.版本问题:
cordova-platform-android、android sdk、gradle有很多版本,不知道三者如何匹配版本,导致中途出现各种错误,
最后决定全部升级为最新版:
Installed platforms:
android 8.1.0
android sdk : 28.0.3
distributionUrl=../gradle-5.1.1-all.zip
2.打包后的程序不能访问网络:
程序首先成功加载了高德地图,但是无法从服务器获取数据,网上有两种解决办法。
(1)安装或重新安装插件:
cordova plugin rm cordova-plugin-whitelist (如果已经安装,先卸载)
cordova plugin add cordova-plugin-whitelist
(2)重新加载http组件:
ionic cordova plugin add cordova-plugin-advanced-http
npm install --save @ionic-native/http
网上也有说安卓9.0会后http不能访问网络了,目前还没有尝试过。
3.若遇到带有EACCES、permission denied等关键字的错误,一般是没有管理员权限,在命令前加上sudo即可。
Error: EACCES: permission denied,