Android与JavaScript交互数据上限(Base64图片传输问题)

使用webview.loadUrlJavaScriptBase64格式的较大图片时,有的Android版本上不反馈任何错误信息,只是页面接收不到任何信息,传入的脚本不执行任何操作。

有的则报错,如下:

继续阅读Android与JavaScript交互数据上限(Base64图片传输问题)

Missing essential plugin: org.jetbrains.android

今天升级到 Android Studio Arctic Fox | 2020.3.1 出现了如下错误:

继续阅读Missing essential plugin: org.jetbrains.android

Office 2007 VBA上传文件

 

参考链接


Android Studio项目使用命令行运行测试

使用 Gradle 运行单元测试

借助 Android Plugin for Gradle,您可以通过命令行在 Gradle 项目中运行单元测试。如需详细了解如何为应用构建单元测试,请参阅构建有效的单元测试

下表总结了如何使用 Gradle 运行单元测试:

单元测试类型 要运行的命令 测试结果所在的位置
本地单元测试 调用test任务:

HTML 测试结果文件:path_to_your_project/module_name/build/reports/tests/目录。

XML 测试结果文件:path_to_your_project/module_name/build/test-results/目录。

插桩单元测试 调用 connectedAndroidTest 任务:

HTML 测试结果文件:path_to_your_project/module_name/build/reports/androidTests/connected/目录。

XML 测试结果文件:path_to_your_project/module_name/build/outputs/androidTest-results/connected/目录。

参考链接


使用命令行运行测试

修复Robolectric 4.6.x报错Failed to transform bcprov-jdk15on-1.68.jar

参照 Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-4.5.1,Powermock-1.6.6单元测试环境 配置执行单元测试。

项目使用 Android Studio 4.1.3 ,Android Gradle构建工具(AGP)版本

单元测试使用的 Robolectric4.5.x 升级到 4.6.x ,编译时产生如下报错:

问题排查了一下,发现 Robolectric 4.6.x 引入了 bcprov-jdk15on-1.68.jar ,这个库是使用 Java 15 编译的。

如果项目在 gradle.properties 中配置了 android.enableJetifier=true (目的是转换第三方不支持 AndroidX 的依赖,用以使整个工程升级到 AndroidX ), 当 Jetifier 小于等于 Jetifier 1.0.0-beta10时,无法反编译高于 Java 13 编译的代码库,进而引起上面的报错。

目前(2021/07/22)最新的 Android Studio 4.2.2 ,Android Gradle构建工具(AGP)版本

依旧没有完成适配工作。

官方回复是 Android Gradle构建工具(AGP) 7.x版本修复,估计要到Android Studio 4.3 版本了。

目前的解决方法是在 gradle.properties 中配置 Jetifier 忽略 bcprov 库。比较庆幸的是 bcprov 库跟 AndroidX 没什么关系,因此忽略这个库是安全的。

如下:

参考链接


关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决

关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。

一般发生在 Robolectric 3.x 版本上,比如 Robolectric 3.8

解决方案:

打开对应模块的build.gradle文件

参考链接


关于Android Studio单元测试中“Method d in android.util.Log not mocked.”问题的解决。

Android Studio 4.2.2 解决库依赖冲突问题

最近在引入某些库的时候,发现额外的库被引入,造成编译冲突,想具体知道是由于哪个库引起的。参照原来的Android Studio(Gradle)解决库依赖冲突问题 提示信息比较模糊,不方便定位,尤其是只在测试模块中引入某些库,业务代码不引入的情况下。

比如我们在 Android Studio 4.2.2 单元测试引入了 Robolectric 4.3.1/4.5.1,结果在业务代码不使用任何的 AndroidX 依赖的情况下,编译会报错

这个依赖是通过 Robolectric 4.3.1/4.5.1 引入的,解决方法是调整到 Robolectric 3.8

Android Studio 4.2.2 自带的 Project Structure 提示更加详细,可以明确的指出到底是哪个库引入,如下图:

继续阅读Android Studio 4.2.2 解决库依赖冲突问题

在macOS Big Sur(11.4)编译Hummer

最近在macOS Big Sur(11.4)编译Hummer

Android版本编译:

如果报错如下:

参考 ABIs [arm64-v8a] are not supported for platform. Supported ABIs are [armeabi-v7a, x86].

如果运行测试用例时报错如下:

解决方案为在项目中增加:

IOS版本编译:

参考链接


WordPress绑定多个域名,多个域名可同时独立访问

在未修改wp-config.php之前WordPress博客默认是不能实现多个域名独立访问的,即使我们绑定了多个域名,访问时也会自动跳转到安装站点时默认的域名,就连同一个域名带www和不带www都是自动跳转到默认域名。(这一点的不便之处深有体会,我找了几天才找到这个解决办法)

那如果我们需要WordPress绑定多个域名,并且都能度独立访问怎么办?

要想实现WordPress绑定多个域名,并且都能度独立访问也不难。我们只需修改wp-config.php文件即可,在站点根目录找到“wp-config.php”文件,然后根据自己需要添加下面任意一段代码即可。

一、实现任意域名访问

说明:在wp-config.php文件中加下面代码,就能实现绑定解析的域名都能正常访问博客,而且不会串联到其他域名。

二、限制特定域名访问

也可以只指定某些域名可以访问。注意把$domain = array('linqingmaoer.cn', 'www.linqingmaoer.cn');括号内的域名改成你自己需要绑定的域名。这样就可以设置成你添加的这几个域名能正常访问。而其他未添加的域名则无法访问。

2. 在完成上面的工作以后,你的网站已经可以实现多域名访问了,但是还是有一个问题,那就是静态资源,在wordpress上传的图片插入文章里面,地址是固定的,修改域名以后,并不会修改图片的域名,所以还需要修改静态文件地址,使用以下代码可以解决:

把这段代码加入上面的代码下面即可。

注意上述代码需要添加在

的前面。

注意,上述配置之后,可能会出现跨域相互访问问题,需要配置跨域访问属性,如下:
指定多个域名(http://client1.xxx.comhttp://client2.xxx.com等)跨域访问,则只需在server.php文件头部添加如下代码:

参考链接


WordPress 5.7.2多域名指向同一网站根据来源域名不同返回不同的网站标题

以前备案了多个独立网站,每次注册的时候,提交备案域名的网站标题都是不同的。现在多个网站同时指向了同一台服务器,现在就需要根据来源域名的不同,返回不同的网站标题信息,解决方法就是写自定义的拦截插件。

在主题functions.php中添加如上代码,用来自定义分隔符号和对已生成的title标题进行二次修改。

参考链接