Xamarin.UITest 和签名 Android 应用
当 Xamarin.UITest 使用 Android APK 执行测试时,它使用与应用一起运行的测试服务器来执行测试。 Android 不允许这样做,除非测试服务器和 APK 使用相同的 Android 密钥存储进行签名。 通常,Xamarin.UITest 使用相同的调试密钥存储对 APK 和测试服务器进行有效登录。
但是,某些应用仅在使用特定 Android 密钥存储签名时才能工作。 使用 Google 地图应用就是一个示例。 此外,在本地运行,如果要连接到已安装的应用,可能需要指定密钥存储,以便测试服务器可以使用与该 APK 匹配的服务器进行签名。
可以直接指定密钥存储,也可以指定可改为使用的签名信息文件。 签名信息文件的目的是避免公开 Android 密钥存储与密码。
首先,我们将在本地检查密钥存储,然后在测试App Center。 使用密钥存储是最简单的开始方法。 完成该工作后,可能需要完成创建和使用签名信息文件的额外步骤。 切勿同时指定这两者。
Android 密钥存储
Local
使用 Xamarin.UITest 在本地运行以指定 Android 密钥存储时,对 语句使用 方法 KeyStore ConfigureApp.Android ,如以下示例所示:
配置App.Android.Keystore (路径、spass、kpass、别名) 。StartApp () ;
AndroidAppConfigurator.KeyStore
public AndroidAppConfigurator KeyStore (String path、 String storePassword、 String keyPassword、 String keyAlias)
配置用于对提供的 apk 文件进行签名的密钥存储。 密钥存储不是必需的,但将确保 apk 文件是无更改的且保持不变。 如果提供了密钥存储,则它用于对与设备上应用一起安装的 apks 辅助密钥进行签名。 如果未提供密钥存储,Xamarin.UITest 将生成密钥存储并重新对 apk 签名。
App Center Test
用户的问题:
"你好,我运行了 Android Xamarin.UITest App Center Test Cloud。 出于某种原因,设备未加载 Google 地图。 为什么?"
在这种情况下,问题在于 APK 已使用其他 Android 密钥App Center Test Cloud重新登录。 若要使用正确的密钥存储,在提交测试时在 CLI 命令中指定它。
CLI 测试运行命令 appcenter 的示例添加:
--store-password mystorepass --key-alias myalias --key-password mykeypass --store-path /Users/myname/test_keystore
必须指定这四个命令行选项,以使用这种方法:
--store-password <arg>- 密钥存储的密码。 对应于-storepassjarsigner 中的 参数。--key-alias <arg>- 密钥存储中密钥的别名。 对应于-aliasjarsigner 中的 参数。--key-password <arg>- 密钥存储中匹配私钥的密码。 对应于-keypassjarsigner 中的 参数。--store-path <arg>- 密钥存储文件的路径。
签名信息文件
可以创建和指定签名信息文件,而不是使用 Xamarin.UITest 指定 Android 密钥存储。 这具有相同的效果,但不在命令行中使用密钥存储和密码。 此过程需要创建签名信息文件。
首先,test-cloud.exe Xamarin.UITest NuGet的 NuGet 包文件夹中找到该包。 它将在 Xamarin.UITest 文件夹下的 tools 文件夹中。 然后,使用它生成签名信息文件。 如果更改使用的 Xamarin.UITest 版本,则需要生成新的签名信息文件。