我使用 Travis 通过模拟器在 Android 上运行 JUnit 测试。到目前为止,这效果非常好。但是,如何确定 sdk-tools-linux-*.zip 的最新版本是什么?目前,我使用的是版本4333796。SDK工具版本与Android SDK版本或构建工具版本之间是否有任何依赖关系?
- name: Tests on Android
jdk: openjdk8
env:
- ANDROID_TOOLS=4333796
- ANDROID_SDK_VERSION=29
- ANDROID_BUILD_TOOLS_VERSION=29.0.3
- ANDROID_HOME=$HOME/android-sdk
- PATH=${ANDROID_HOME}:${ANDROID_HOME}/emulator:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools:${PATH}
before_install:
- sudo apt-get install -y --no-install-recommends bridge-utils libpulse0 libvirt-bin qemu-kvm virtinst ubuntu-vm-builder > /dev/null
- sudo apt-get install -y libxtst6 libnss3-dev libnspr4 libxss1 libasound2 libatk-bridge2.0-0 libgtk-3-0 libgdk-pixbuf2.0-0 > /dev/null
- sudo adduser $USER libvirt
- sudo adduser $USER kvm
- wget -q "https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_TOOLS}.zip" -O android-sdk-tools.zip
- unzip -q android-sdk-tools.zip -d ${ANDROID_HOME} …Run Code Online (Sandbox Code Playgroud) android android-emulator android-sdk-2.3 android-sdk-tools travis-ci
如何从 Groovy 应用程序调用接受供应商作为可变参数的 Java 方法?
我的Java方法:
public class Framework {
public static void run(Supplier<?>... suppliers) {
System.out.println(Arrays.stream(suppliers).map(supplier -> supplier.get()).collect(Collectors.toList()));
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Groovy 应用程序:
class Application {
static void main(String[] arguments) {
Framework.run { 42 }
}
}
Run Code Online (Sandbox Code Playgroud)
IntelliJ 没有显示任何错误。但是,当我尝试执行我的 Groovy 应用程序时,出现异常:
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: static Framework.run() is applicable for argument types: (Application$_main_closure1) values: [Application$_main_closure1@aecb35a]
Possible solutions: run([Ljava.util.function.Supplier;), dump(), find(), any(), grep(), grep(java.lang.Object)
at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1525)
at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1511)
at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:50)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
at …Run Code Online (Sandbox Code Playgroud)