1

好的,我想知道是否有人设法拉出这个东西?我正在制作原生扩展,我的原生 JAR 通过反射使用 Google Play 服务。我已将 Google Play Services 库添加到我的原生扩展中,platform.xml如下所示:

<platform xmlns="http://ns.adobe.com/air/extension/3.1">
    <packagedDependencies>
        <packagedDependency>android-support-v4.jar</packagedDependency>
        <packagedDependency>google-play-services.jar</packagedDependency>
    </packagedDependencies>
    <packagedResources>
        <packagedResource>
            <packageName>com.google.android.gms</packageName>
            <folderName>google-play-services-res</folderName>
        </packagedResource>
    </packagedResources>
</platform>

我的android构建文件夹的结构如下:

android
- nativeLib.jar
- android-support-v4.jar
- google-play-services-res (folder)
- google-play-services.jar
- library.swf

当我构建没有 Google Play 服务库(大约 5.1 mb)的 ANE 时,我看到我的 ANE 有例如 800 kb。在像这样添加 Google Play Services 依赖项后,ANE 大约有 6 mb,这对我来说表明这些 JAR 以platform.xml某种方式捆绑在本机扩展中。现在,我的原生 JAR 有一些功能,我可以查看从 Google Play 服务库调用方法是否失败。当我从我制作的 AIR Android 应用程序中调用它并在其中集成了这个生成的 ANE 时,它总是失败。

因此,我的nativeJAR 和google-play-servicesJAR 在将它们打包到我的 ANE 之前彼此相邻,但是在从我的本地 jar 触发方法之后,事实证明它不知道 google-play-services.jar 在任何地方。

仅作记录,我在将 AIR 与本机库桥接时没有任何问题,所有调用都正常工作,并且我向 ActionScript 文件公开的界面功能齐全,只是本机库根据 Google Play 执行某些操作是否找到服务,在我的情况下 - >它们永远找不到。

任何想法我可能做错了什么以及如何解决这个问题?

提前致谢。

4

2 回答 2

1

你可以只使用这个 ANE:

https://github.com/distriqt/ANE-GooglePlayServices

我们已经将这些库和资源都打包在里面了?

于 2015-08-21T01:28:22.590 回答
1

我设法使用以下代码使 Google Play 服务正常工作(仅使用必要的 JAR 文件):

https://github.com/Oldes/ANEAmanitaAndroid-public/tree/GooglePlay

您可以使用以下拉取请求详细信息查看我为使其从最小的“hello”ANE 工作所做的工作:

https://github.com/Oldes/ANEAmanitaAndroid-public/pull/1

我从 SDK 中获得了 GPS jar 文件,从 AAR 档案中提取它们,例如:

extras\google\m2repository\com\google\android\gms\play-services-base\9.4.0\play-services-base-9.4.0.aar

在每个aar(这只是一个zip)文件中,我只是像在我的项目中classes.jar一样复制和重命名。play-services-base-9.4.0.jar

同样要让 GPS 正确运行,您必须在应用清单中指定正确的应用程序 ID,如下行

于 2016-10-20T11:53:49.220 回答