1.JNI
在项目中.so文件的调用不兼容64位CPU的情况,报错:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
解决办法是:
在Android{}的范围内,添加:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//noinspection all
task copyNativeLibs(type: Copy) {
// third party lib so
from(
new
File(projectDir,
'libs'
)) { include
'armeabi/*.so'
}
into
new
File(buildDir,
'native-libs'
)
}
tasks.withType(JavaCompile) {
compileTask ->
//noinspection all
compileTask.dependsOn copyNativeLibs
}
//noinspection all
tasks.withType(com.android.build.gradle.tasks.PackageApplication) {
pkgTask ->
pkgTask.jniFolders =
new
HashSet<file>()
pkgTask.jniFolders.add(
new
File(buildDir,
'native-libs'
))
}</file>
|
2.关于CordovaWebView监听加载进度问题
cordova有个接口onMessage 可以监听到加载过程中各种事件
public Object onMessage(String id, Object data){}
id:事件的类型,有如:onPageStarted,onPageFinished,exit,onReceivedError
data(JSON类型):是事件具体返回的参数,有如:onReceivedError事件下,data.getInt("errorCode")== -6时候表示网络加载过程中失败了。
3.关于NPM更新或安装错误办法
- Install latest version of node
- Run: npm cache clean
- Run: npm install cordova -g
- npm uninstall -g Cordova 卸载掉再install
4.提示deviceready has not fired after 5 seconds
在config.xml配置上
<allow-navigation href="*" /> <allow-navigation href="http://*/*" />
5.cordova/channel这个模块些许小坑
channel是cordova的事件监听,类似于观察者模式。
曾经遇到一个问题:
channel.createSticky('onCordovaAppVersionReady');创建了一个事件
channel.waitForInitialization('onCordovaAppVersionReady');表示这个事件如果不完成,哥就停住,必须完成这个事件cordova才能启动完成往下走。
OK那么执行下面一段代码试试
cordova.exec(
(success)=>{
channel.onCordovaAppVersionReady.fire();//成功了就调用fire ,告诉监听器,这事件完成了
}
, (error)=>{
channel.onCordovaAppVersionReady.fire(); //失败了也告诉下,让程序继续往下走,but 这个exec执行原生的程序如果RareloopAppVersion模块没找到会直接不抛给error回调,这时候会造成无法fire,你懂的,waitForInitialization一直收不到消息,程序就stop住了
}, "RareloopAppVersion", "getAppVersion", []);
6.android端的settings.gradle小坑
在比较老的cordova版本中会有小坑
在settings.gradle中可以看到当前主工程android 默认依赖include ":CordovaLib",如果有新需求需要再依赖一个工程,比如SockLib,这时候按照流程来导入是木有一点问题的,settings.gradle里面会include “:SockLib”。
但是,当你用cordova add plugin ** 命令安装一个插件时,问题就来鸟,你会发现settings.gradle里面的include “:SockLib”木有了!!!!!!
原因是什么呢?研究发现在cordova/lib/builders/GradleBuilder.js里面会自动重置settings.gradle。
当然新版的已经修复这个问题了。