我们构建组除了负责bk-ci插件开发,还负责监控使用构建平台的所有项目的打包流水线、质量检查流水线的执行情况。
最初,这些都是让实习生来手动查看质量流水线的执行情况、再做表,跟进、然后手动发到群里。
今年中,我在研究了bk-ci的API后,已经将其改为自动抓取和生成报表,但仅作为参考。 报表使用Velocity
模版引擎生成,是一个HTML
文件,然后通过邮件发送。
不过邮件的实效性并不强,有时候会积累很多封邮件,也不知处理了没有。
阅读全文
我们构建组除了负责bk-ci插件开发,还负责监控使用构建平台的所有项目的打包流水线、质量检查流水线的执行情况。
最初,这些都是让实习生来手动查看质量流水线的执行情况、再做表,跟进、然后手动发到群里。
今年中,我在研究了bk-ci的API后,已经将其改为自动抓取和生成报表,但仅作为参考。 报表使用Velocity
模版引擎生成,是一个HTML
文件,然后通过邮件发送。
不过邮件的实效性并不强,有时候会积累很多封邮件,也不知处理了没有。
阅读全文
Gradle
是一个非常灵活、强大的构建系统,但其概念也相对复杂,但只要抓住核心,做好区分,就不会觉得混乱。
下面的构建脚本,是否觉得难以理解:
buildscript {
构建脚本依赖的仓库
repositories {
mavenCentral()
}
// 构建脚本依赖
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
}
}
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
implementation 'com.google.guava:guava:30.1-jre'
testImplementation 'junit:junit:4.13.2'
}
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.jvm' version '1.5.10'
}
当请求URL返回的cookie中expires
为如下格式时,
Expires=Mon, 26 Apr 2021 14:34:27 GMT
报错:
Invalid 'expires' attribute: Mon, 26 Apr 2021 14:34:27 GMT
按网上说法修改CookiePolicy
或CookieSpec
,实际都无效果。这是因为使用的httpclient库并不支持这种新格式(定义于RFC 6265
)。
可以使用Apache HttpClient5
解决此问题,此版本已支持最新格式。这是一个新版本,有不同的artifactId
。
Maven中使用如下方式引用依赖:
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5-fluent -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5-fluent</artifactId>
<version>5.1.3</version>
</dependency>
为什么不打开编辑器呢?
因为构建机GPU配置太差了,打不开……
这里介绍个直接修改UE4配置文件的方法。
在BaseEngine.ini
中,设置如下变量即可:
[/Script/AndroidPlatformEditor.AndroidSDKSettings]
SDKAPILevel=latest
NDKAPILevel=android-21
SDKPath=(Path="D:/Android/SDK")
NDKPath=(Path="D:/Android/NDK")
JavaPath=(Path="D:/Android/OpenJDK")
特别注意JDK路径的Key
是JavaPath
,而非官方文档上写的JDKPath
,我这里使用的为UE4.27,测试可用。
调用apktool工具签名apk时遇到sun/misc/BASE64Encoder
报错。
是因为此类只在jdk1.8之前的版本存在,jdk9以后的版本,就不存在了。
检查环境的JDK版本为11,所以会报错。
解决办法也明了,安装JDK8。
这里介绍个Windows 10下一键安装JDK8的方法,直接cmd窗口执行以下命令即可:
winget install AdoptOpenJDK.OpenJDK.8
安装后,JDK位于C:\Program Files\AdoptOpenJDK\jdk-8.0.292.10-hotspot
Windows10 WSL2安装Linux发行版,报错WslRegisterDistribution failed with error: 0x800701bc
此报错原因是未下载安装WSL2 Linux内核更新包。
可访问此处下载。
或直接下载,链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
阅读全文
共享组件、工具和SDK
的路径不能更改
可以通过删除注册表解决,注册表路径:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup
右键 SharedInstallationPath
和 CachePath
删除即可。
与Ant
只有build.xml
,Maven
只有pom.xml
不同,使用gradle
的项目一般有以下几个文件:
gradlew
gradlew.bat
build.gradle
gradle.properties
gradle/gradle-wrapper.jar
gradle/gradle-wrapper.properties
在调用顺序上,gradlew
(Windows下为gradlew.bat
)读取gradle.properties
配置文件内容,然后执行build.gradle
构建脚本,而build.gradle
脚本可以从gradle.properties
中读取属性值。此设计的好处是用户无需预先安装gradle到本地,gradlew脚本会自动下载。下文会详述。
1、kotlin
是基于JVM的编程语言,与Java类似,且可与Java互操作;
2、kotlin-plugin
是IDEA和Android Studio的IDE(集成开发环境)支持插件;
3、gradle
是构建工具,与Ant
、Maven
类似,用于代码到编译、测试、打包等;
4、kotlin-gradle-plugin
是使用gradle构建kotlin项目必须添加的gradle插件。
下面详细介绍:
阅读全文
Gradle
中配置依赖,如果不指定版本,是会报错找不到依赖的。
但如果依赖很多,还需要去仓库一个个看依赖库的最新版本是多少。
那么gradle是否支持直接使用依赖的最新版本呢?
答案是肯定的,不过在gradle
的文档中并没有在显著位置标识。
方式就是在version
处填加号+
,gradle
就会去自动识别最新版本去下载。
全部指定最新版本后,再根据日志去解决个别依赖冲突报错,事半功倍。
阅读全文