Removing the proxy settings resolved the issue:
npm config rm proxy
npm config rm https-proxy
config.xml文件读取错误
执行命令:ionic cordova run android -l -c
出现错误:cp: copyFileSync: could not write to dest file (code=ENOENT):E:\work\app\cloudMall\platforms\android\res\xml\config.xml
E:\work\app\cloudMall1\platforms\android\res
发现目录缺少很多文件
解决:再次尝试remove android平台重新添加。
但是问题依然存在。
发现add 的是最新的7.0
重新制定版本添加android平台
ionic cordova platform add android@6.4.0
结果成功添加,res目录里面终于有文件了。
ionic cordova 中插件一旦添加到项目中,以后如需对插件进行升级,需先卸载掉原先的插件,在重新安装
Error: Failed to fetch plugin cordova-plugin-tts via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: cmd: Command failed with exit code 1 Error output:
'C:\Windows\system32\npm' is not recognized as an internal or external command,
operable program or batch file.
Try running the install command with
--nofetch
switch.
npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法
npm cache clean --force
npm install -g npm@latest --force
you are using cordova 7.0.0 or cordova 8.0.0, similar issue is observed with IONIC as well
You will find this issues with most of the plugins such as admobpro, admob, itablet, whitelist etc.
Better for now roll back to previous cordova version i.e 6.3.0 or 6.4.0
If you see mentioned issues with any of plugins try this.
cordova platform remove android
cordova platform add android@6.3.0
OR
cordova platform remove android
cordova platform add android@6.4.0
自从升级android studio2.3.1后,运行ionic项目时无法再在android平台上启动。网上查了很多信息后,得知是android sdk废弃android命令,以及改变了目录结构。
android版本问题
移除android sdk目录的tools文件夹
下载 https://dl.google.com/android/repository/tools_r25.2.3-linux.zip
解压出来,将解压得到的tools文件夹复制到android sdk目录下
npm ERR! code ECONNRESET
npm ERR! network tunneling socket could not be established, cause=connect ETIMEDOUT 198.105.254.228:8080
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'
Removing the proxy settings resolved the issue:
npm config rm proxy
npm config rm https-proxy
npm config set registry=http://registry.npmjs.org/
npm config set strict-ssl false
安装一个依赖包报错了,npm WARN checkPermissions Missing write access:
权限解决办法
删除掉 C:\Users\dd\AppData\Roaming\npm-cache\
C:\Users\dd\AppData\Roaming\npm\ 两个文件夹 以管理员身份重新执行 npm install -g
cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git
插件问题:检查package.json文件的版本号
切换npm 源头
去cordova plugin 官网上找插件及使用
去github上找cordova插件 注意搜索关键词
Plugin doesn't support this project's cordova-android version. cordova-android: 7.0.0, failed version requirement:
<6.3.0
cordova run android
(node:19192) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Android SDK not found. Make sure that it is installed. If it is not at the default location, set the ANDROID_HOME environment variable.
下面的报错是cordova run android时报的,其实android_home是存在的,根本问题是上面的报错,cordova-android版本高于需求版本,需求版本低于6.3.0
参考:https://cordova.apache.org/blog/
报错如下:
npm ERR! path E:\ionic3-leafletdemo-master\node_modules\dashdash
npm ERR! code EEXIST
npm ERR! errno -4075
npm ERR! syscall mkdir
npm ERR! EEXIST: file already exists, mkdir 'E:\ionic3-leafletdemo-master\node_modules\dashdash'
npm ERR! File exists: E:\ionic3-leafletdemo-master\node_modules\dashdash
npm ERR! Move it away, and try again.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\lenovo\AppData\Roaming\npm-cache\_logs\2018-04-13T08_54_14_093Z-debug.log
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\ch
okidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@
1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
)
npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none was installed
fsevent是mac osx系统的,在win或者Linux下使用了 所以会有警告,忽略即可。
警告如下:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.17: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN vue-loader-demo@1.0.0 No description
npm WARN vue-loader-demo@1.0.0 No repository field.
原因是因为: fsevent是mac osx系统的,在win或者Linux下使用了 所以会有警告,忽略即可。意思就是你已经安装成功了。
npm install 时遇见
npm install --global --production windows-build-tools
3. 在成功安装ionic 后,继续安装 报错中缺失的 '@ionic/app-scripts',
npm install @ionic/app-scripts@latest --save-dev
错误信息
Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.
解决方法
在“/node_modules/@ionic/app-scripts/dist/sass.js”路径的“sass.js”文件,在postcssOptions参数中添加“from: undefined”。添加后效果如下:
报错的原因:
cordova在6.4.0(cordova-android在6.1.2)之后,会要求安装Gradle,基于Gradle来编译、打包android。(具体版本号有待考证,但是需要安装Gradle属实)
解决办法:
1、手动下载gradle
gradle-x.x-bin.zip (x.x代表版本)
根据需要下载某一版本
地址: (https://services.gradle.org/distributions)
我下载的是gradle-4.1
下载完成后,解压到任意文件夹下
2、添加环境变量
PATH=D:\gradle-4.1\bin
3、关闭cmd
4、打开cmd,输入gradle -v,查看是否安装成功
5、继续使用ionic cordova build android。
INSTALL_FAILED_UPDATE_INCOMPATIBLE
原因:就是你的安装包与之前设备上的安装包签名不一致。百度的时候,有的人说:运行太多次也会出现上述的问题,但我没遇到过。
简单处理:
如果你的程序只是自己跑着玩的,不是很重要的程序,那么你就改个包名就好了。之前,我都是这样处理的。
步骤:如图:
但是实际工作中,是不允许我们改包名,比如关联到了微信,支付宝,百度地图等,我们的包名是有提交到他们的官网上的。
那么怎么办呢?
提供一个比较坑的方法:如果是测试手机,那么格式化测试手机就好了。
以下是比较完整的一次排查过程:
问题:调试的时候,用的是默认签名的方式(即debug签名),导出的时候,用的是自己的debug签名,在同一台手机上安装不上。
解决过程:
如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。
------> 别人都是卸载之后就可以安装上了,但是我的手机不行。
------> 我 :卸载了旧的,也root,删掉了data/data/包名。
------> 安装提示:替换应用,销售小助手1.0替换为1.0..提示程序未安装。
------> 是不是 系统 保存了相关的 包名和签名信息 ?
------> 是的话,也百度不到这个信息放哪里了。
继续百度:发现包名信息存放在 /data/system/packages.xml 中,需要root手机才可以从手机上看到这个文件。
------> 我们删除该应用包含的包名信息就好了。
步骤:
1. 采用 "adb uninstall 包名" 卸载之前的安装包,然后试一下是否能安装,不行再执行下一步。 --- 正常,执行这步就能解决问题
2. 在 /data/system/packages.xml 文件中删除该应用包含的包名信息就好了
2.1 我的做法:root手机,我的是魅族,直接可以root。之后安装RE管理器,进入/data/system/packages.xml把该文件复制到其他地方,共享到电脑,电脑上修改后,在覆盖原文件。
参考做法:我的手机不行。 -- 都要root手机
2.2 使用adb pull命令将这个文件导出,修改完,并用 adb push导入。
2.3 上述步骤不行,先adb remount (意思是 重新挂载系统分区)再adb pull命令将这个文件导出,修改完,并用 adb push导入。
2.4 上述步骤不行,
---> 执行 adb shell 命令 -- 执行的是Linux的命令
---> su (手机应该会弹出权限信息提示~~告诉你需要管理权限,并确认) -- 获得超级权限
---> ls -l (查看当前目录下所有可见文件的详细属性) drwxrwx--x (d--文件夹)
这边怎么跑出一个system?回答:没有听说过Android除了Root还有system权限 你说的是user权限吧
参考:http://bbs.csdn.net/topics/360175988
---> mount -o remount,rw /data (重新将文件夹为可读可写。) 我的手机出现( Operation not permitted),没办法下一步
---> chmod 777 /data
或者参考别人的做法:http://blog.sina.com.cn/s/blog_4ba5b45e0102ek4k.html
2.5 在不行,使用2.1方法。
3. 重新安装新的应用即可