让 SignalR 在 Android Studio 中工作的步骤

Steps to get SignalR working in Android Studio

我正在尝试将 SignalR 引入我的 Android Studio 项目。

我成功地遵循了 getting started with SignalR 上的教程,所以现在我可以使用 Hub。该教程中的客户端是 javascript,我在 PC 和我的 Android phone 上通过 WiFi 在网页(在 Chrome 中)工作正常家庭局域网。

然后我去让 Android java 客户端工作。我已经在 Android Studio 中有一个 Android 应用程序项目,我想与那个正在工作的 Hub 进行讨论,作为下一步的测试。

我下载了 Microsoft 官方 java client for Android 压缩包。

然后我提取它并将其作为项目加载到 Android Studio 中。它构建没有错误。

问题 #1:这个项目只给我一个 AAR,而不是一个 JAR。我已经弄清楚如何在 Android Studio 中使用 jar,所以如果此时有创建 jar 的方法,我可能可以完成这项工作。

此时我将依赖项包含到我的应用程序项目中。 readme.md 表示:

Add the signalr-client-sdk.jar, signalr-client-sdk-android.jar gson library as a gradle dependency to the project.

所以我试着尽可能地遵循它。这是我的 build.gradle:

compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/signalr-client-sdk.jar')
compile files('libs/signalr-client-sdk-android-release.aar')

问题 #2:在 Android Studio 中将 aar 作为模块导入到我的应用程序项目中后,它仍然没有看到必要的命名空间来使主语句工作。这是主要语句(Android 中 SignalR 的 hello world,编译器方面):

Platform.loadPlatformComponent(new AndroidPlatformComponent());

起初它没有接收到任何东西,然后它接收了 import microsoft.aspnet.signalr.client.Platform; Platform。它仍然不知道要 importAndroidPlatformComponent 做什么,所以我一直坚持到我能克服这个问题。

如您所知,Android Studio 中有很多文件,在我知道您想查看哪些文件之前,我不想把它们全部吐出来。如果你告诉我你想看哪些文件,我会将它们添加为编辑。

你可以从这里下载 jar 文件link

步骤 1

在您的包中创建一个 libs 文件夹,然后将这些 jar 文件粘贴到此处。

步骤 2

现在在 build.gradle

的依赖项中添加 "compile files"

现在按下 "Sync Project with Gradle file"

步骤 3

即使在成功同步和导入 jar 之后,您仍然会遇到一些导入错误等。 现在尝试 Invalidate cache 和 restart.After 几次它会很好并导入所有 类

步骤 4

现在您将看到 Platform.loadPlatformComponent() 的导入;没有任何问题

我只使用 Android Studio 和 GitHub 项目中的文件就可以完成这项工作。

为了子孙后代,我必须这样做。

  1. 提取zip file from github
  2. 将Android Studio 中的内容作为单独的项目打开,然后Build。它产生:
    • signalr-client-sdk-android-debug.aarjava-client\signalr-client-sdk-android\build\outputs\aar
    • signalr-client-sdk.jarjava-client\signalr-client-sdk\build\libs
  3. 将这 2 个文件复制到您应用的 libs 文件夹中。
  4. 进入模块的 build.gradle 并添加:
repositories {
    flatDir{
        dirs 'libs'
    }
}
dependencies {
    compile 'com.google.code.gson:gson:2.3.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name: 'signalr-client-sdk-android-release', ext: 'aar')
}
  1. 工具,Android,同步项目与 Gradle 文件,成功后我做了一个 建造.

  2. 最后,这行代码给了我 ALT+Enter 提示来生成 imports 这行代码:

Platform.loadPlatformComponent(new AndroidPlatformComponent());

这给了我:

import microsoft.aspnet.signalr.client.Platform;
import microsoft.aspnet.signalr.client.http.android.AndroidPlatformComponent;

哇!

我也只使用 Android Studio 和 GitHub 项目中的文件,但我的 gradle 依赖项设置如下:

            implementation files('libs/signalr-client-sdk.jar')
            implementation files('libs/signalr-client-sdk-android.aar')