当前运行环境无法运行启用“自定义组件模式”的uni-app应用
HBuilderX1.9.0及以上版本uni-app项目启用“自定义组件模式”,运行为APP时做了底层性能优化,可能出现兼容性问题引起白屏现象。
HBuilderX1.9.4及以上版本会自动检查基座环境是否支持启用“自定义组件模式”,如果不支持则会弹出以下提示框
解决方案:
将uniapp-release.aar
放于app/libs
目录下,并在app/build.gradle
中添加以下依赖:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
/*uniapp所需库-----------------------开始*/
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation "com.facebook.fresco:animated-gif:1.13.0"
/*uniapp所需库-----------------------结束*/
// 基座需要,必须添加
implementation 'com.github.bumptech.glide:glide:4.9.0' // 基座依赖
implementation 'com.alibaba:fastjson:1.1.46.android'
}
参考:
uni-app运行环境版本和编译器版本不一致
HBuilderX1.7.0及以上版本uni-app添加了运行环境版本和编译环境版本的校验机制,当两个版本不一致时会弹出以下提示:
名词解释:
手机端SDK版本
是指5+Runtime的版本号。云打包提交云端打包时确定的,也就是说生成apk/ipa之后,APP运行环境就不会改变了。离线打包时是你下载的sdk的版本。只有默认真机运行基座、云打包机的引擎是和HBuilderX升级而自动升级的。如果你使用了自定义基座、sdk离线打包,需要手动升级,或者重新用新版制作自定义基座,或者下载最新版sdk。
下图为离线打包时的SDK版本号:
HBuilderX版本
如果项目是HBuilderX创建的,则是HBuilderX的版本号,更新HBuilderX会改变;如果是cli创建的项目,即根目录是package.json
,那么编译环境版本号是创建cli时生成的,或者上一次执行npm update
生成的。不管HBuilderX如何升级,cli项目的编译器并不会跟随HBuilderX升级而升级,需手动升级。
下图为HBuilderX的版本号
找了半天cli的版本,不知道在哪,经过仔细观察,应该是这个了:
npm地址:@dcloudio/vue-cli-plugin-uni
将其拆一下,就成了:
2.6.9.20200424005
吐槽:uni-app的版本是个迷,版本号不规范到了极点,哎,脑阔疼。
解决方案:
如果使用本地打包,确保本地的SDK的版本号与cli或HX的版本号一致。
如果使用云端打包,如果正式打包,版本号将与云端SDK版本号一致;如果使用自定义基座,版本号将与你系统中的HX版本号一致)。
如果想要忽略提示,可以在manifest.json
中配置:
{
...
"app-plus" : {
...
"compatible": {
"ignoreVersion": true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
},
},
}
参考:
exception function:createInstance
错误详情:
[ERROR] reportJSException >>>> exception function:createInstance, exception:Exception: TypeError: undefined is not an object (evaluating 'location.host')
错误原因:在浏览器端,使用window、location等浏览器对象(BOM)是允许的,但是在Android端,并不能使用这些API,可以使用条件编译进行处理。
网上看到一个类似的错误是:在uni-app中,props是无法访问this的,而在h5中是可以的,所以这个错误会在uni-app的APP端出现,而h5是正常的。详情参见:[ERROR] reportJSException >>>> exception function:createInstance, exception:Exception: TypeError: undefined is not an object (evaluating ‘this.$tokenInfoObj’)