Мне нужно написать пару тестов на фреймворке Xamarin UI Test
, чтобы проверить apk на эмуляторе. Я пытался установить свой apk двумя способами:
1 установка adb.exe path\com.company.mobiledemo.apk
2 через Xamarin UI Test
if (platform == Platform.Android)
{
AndroidApp app = ConfigureApp.Android
.ApkFile("path\\com.company.mobiledemo.apk")
.Debug()
.EnableLocalScreenshots()
.DeviceSerial("emulator-5554")
.StartApp();
return app;
}
При первом подходе apk установлен и работает правильно. Но когда apk установлен с помощью кода выше, apk будет установлен, но не запустится, просто остановится после заставки.
Я понятия не имею, почему, потому что оба используют один и тот же файл apk.
NUnit: 3.13.3
NUnit3TestAdapter: 4.2.1
Xamarin.UITest: 2.2.6
Emulator OS: Android 6.0 Api 23
@WendyZang-MSFT Я не добавлял никаких ссылок. Не уверен, что это необходимо. Все, что я всегда делал, это подключал apk в Xamarin UI Test
proj с помощью кода выше.
Хорошо, я нашел решение. Это немного запутано, и, возможно, есть более простое решение. Проблема, как я понял, заключается в том, что ваш apk и apk бэкэнда Instrumentation должны быть подписаны одним и тем же сертификатом.
Мои шаги:
Я установил apk через команду adb: >adb.exe install ~\..\com.company.mobiledemo.apk
Затем изменил AppInitializer.cs
вот так:
if (platform == Platform.Android)
{
string keystore = "~\\..\\..\\some.keystore";
AndroidAppConfigurator appConfigurator = ConfigureApp.Android
.KeyStore(
keystore,
"storePassword",
"keyPassword",
"\"keyAlias\""
)
.InstalledApp("com.company.mobiledemo.apk")
.Debug()
.EnableLocalScreenshots();
AndroidApp app = appConfigurator.StartApp(AppDataMode.Clear);
return app;
}
Затем попытался запустить тест и получил ошибку:
System.Exception : Failed to execute: C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\bin\jarsigner.exe -sigalg SHA1withRSA -digestalg SHA1 -signedjar "C:\Users\{user}\AppData\Local\Temp\uitest\a-287A943C412ED6ED5DEB1675E7FDF91843FD0807\20344\SignedTestServer.apk" -storepass bla-bla -keypass bla-bla -keystore "~..\Mobile\Mobile.Android\Certificate\some.keystore" "C:\Users\{user}\AppData\Local\Temp\uitest\a-287A943C412ED6ED5DEB1675E7FDF91843FD0807\TestServer.apk" ""Key Alias"" - exit code: 1
Please type jarsigner -help for usage
Only one alias can be specified
Ничего страшного.
C:\Users{user}\AppData\Local\Temp\uitest\
Вы увидите что-то вроде этого:
Скопируйте команду из сообщения об ошибке выше, перейдите в C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\bin
или каталог, где находится jarsigner.exe
Выполнить команду после System.Exception : Failed to execute:
SignedTestServer.apk
и скопируйте его в папку, содержащую dummy.apk
FinalTestServer.apk
PS Закрыть папку C:\Users\{user}\AppData\Local\Temp\uitest
до 9.
Вы следовали всем шагам UITest? Вы добавили ссылку на проект из проекта UITest в проект Xamarin.Android? docs.microsoft.com/en-us/appcenter/test-cloud/frameworks/uitest/…