SharpAdb / AdvancedSharpAdbClient

AdvancedSharpAdbClient is a .NET library that allows .NET, Mono and Unity applications to communicate with Android devices. It's improved version of SharpAdbClient.
https://sharpadb.github.io
Apache License 2.0
198 stars 54 forks source link

deviceClient.StartApp("com.android.app"); doesn't work #90

Open evolution1987 opened 9 months ago

evolution1987 commented 9 months ago

Describe the bug

HI! I have updated package from 2.5.8 to 3.0.9 buy found that deviceClient.StartApp("com.android.app"); doesn't open apk on smartphone There are no errors in log. I use NET Framework 4.8

Steps to reproduce the bug

  1. Install facebook apk
  2. deviceClient.StartApp("com.facebook.katana");

Expected behavior

No response

Screenshots

No response

NuGet package version

3.0.9

.NET Platform

.NET Framework 4.8.x

Platform type

Windows

System version

windows 10 pro

IDE

Visual Studio 2022

Additional context

No response

wherewhere commented 9 months ago

It works on my device...

https://github.com/SharpAdb/AdvancedSharpAdbClient/assets/27689196/bf3e1a35-db1d-4db1-a2d8-4fc8c9ebfcdb

evolution1987 commented 9 months ago

On my visual studio Start app works on 2.5.8 version but not in 3.0.9

wherewhere commented 9 months ago

.net4.8 also works. Try using client.StartApp(device, "com.bilibili.app.in")

Screenshot_20240208-195941_Termux.png

evolution1987 commented 9 months ago

Here is my code. App installed but can't run. The problem is on all android smartphones package version 3.0.9, in 2.5.8 there is no problem but problem is with getting elements on adroid 9

logger.Info($"Thread {Thread.CurrentThread.ManagedThreadId} Start work");
string adb = textBox1.Text;
if (!AdbServer.Instance.GetStatus().IsRunning)
{
    AdbServer server = new AdbServer();
    StartServerResult result = server.StartServer($"{adb}", false);
    if (result != StartServerResult.Started)
    {
        Console.WriteLine("Can't start adb server");
    }
}

var client = new AdbClient();
var serial = client.GetDevices().FirstOrDefault().Serial;
client.Connect(serial);
var deviceData = client.GetDevices().FirstOrDefault();
string fbApp = textBox2.Text;
var deviceClient = new DeviceClient(client, deviceData);
//install APK
PackageManager manager = new PackageManager(client, deviceData);
try
{
    manager.InstallPackage($"{fbApp}", callback: null);
    logger.Info($"Thread {Thread.CurrentThread.ManagedThreadId} installed apk");
}
catch (Exception ex)
{
    logger.Error($"Can't send keyevent:{ex.Message}");
}
//start Facebook
logger.Info($"Thread {Thread.CurrentThread.ManagedThreadId} start Facebook");
try
{
    deviceClient.StartApp("com.facebook.katana");

} catch (Exception ex)
{
    logger.Error($"Thread {Thread.CurrentThread.ManagedThreadId} {ex.Message}");
}
wherewhere commented 9 months ago

So what's your old code?

evolution1987 commented 9 months ago

This code with 3.0.9 version and StartApp doesn't work

wherewhere commented 9 months ago

But it works on my device. I need to know the difference to figure out what happened... And why you connect a connected device?

wherewhere commented 9 months ago
var serial = client.GetDevices().FirstOrDefault().Serial; // You get the first connected device's serial.
client.Connect(serial); // Then you connect it again.
var deviceData = client.GetDevices().FirstOrDefault(); // Now I don't know which device you would get...

And StartApp is sending monkey -p xxx 1 to the Android shell. You can try to using adb shell monkey -p xxx 1 on adb command line.

evolution1987 commented 9 months ago

You are right but in any case I can't start apk after installing, comman doesn't run application, nothing happens. But all works on 2.5.8 So I think there is some promler in latest version of Advanced Sharp Adb I try to found whre is problem Can you show actual examples on real smartphone or maybe you need test on facebook apk?

wherewhere commented 9 months ago
var client = new AdbClient();
AdbServer.Instance.StartServer("adb/to/your/path", false);
client.Connect("ip:port")
var device = new DeviceClient(client, client.GetDevices().First());
device.StartApp("packagename");
evolution1987 commented 9 months ago

Tell me please, in method client.Connect("ip:port") can I use name of device as ip:port?

wherewhere commented 9 months ago

No, you can only use ip and port like 192.168.1.19:37146. If you connected with USB, you can ignore it.

evolution1987 commented 9 months ago

So, if I connect my smartphone via USB I can ignore the line client.Connect("ip:port")?

wherewhere commented 9 months ago

Yes.

evolution1987 commented 9 months ago

Thank you very much, I will try to discover my problem again

evolution1987 commented 9 months ago

Hello! I can run app using shell as you said me, but comand StartApp from documentaion doesn't work for me. In any case, you can help me, thanks

tinngv commented 8 months ago

Same issue, 2.5.8 runs well, but 3.0.9+ cannot start the app event if the shell command runs ok. Now I still use 2.5.8. :(

wherewhere commented 8 months ago

I don't know what happened...

tinngv commented 8 months ago

Change code to await device.StartAppAsync("packagename") it works fine :)

wherewhere commented 8 months ago

I have no idea...