在 Eclipse 中使用 aar - 为啥第 3 方活动在构建时解决而不是运行时解决?

Posted

技术标签:

【中文标题】在 Eclipse 中使用 aar - 为啥第 3 方活动在构建时解决而不是运行时解决?【英文标题】:Using aar in Eclipse - why does the 3rd party activity resolve at build time but not run time?在 Eclipse 中使用 aar - 为什么第 3 方活动在构建时解决而不是运行时解决? 【发布时间】:2016-03-21 22:49:13 【问题描述】:

我有一个成熟的应用程序,它需要引入一个 SDK 来包装相机并使其在运行时进行一些漂亮的处理。 SDK 以一些 aar 文件的形式提供给我,但我的应用程序仍然存在于 Eclipse 中。由于我大量的品牌结构和此集成的截止日期,完全迁移到 android Studio 所需的不确定时间表将无法正常工作(目前),因此我将转换 aars 并通过 Eclipse 在我的应用程序中使用它们.

我遇到的问题是我需要在库中启动活动,但即使我修复了所有构建时间参考问题,当我运行应用程序时,一旦我到达应该启动的点活动I get this error。

我已经通读并仔细检查了几十个解释如何使用 aar 文件的方法,我认为我已经遵循了每个步骤,包括:

    解压缩 aar 文件并将它们装扮成单独的库项目,包括带有资源的文件结构、清单和 .jar 使需要库的项目添加它们 将库项目中包含的 .jars 添加到构建路径中(大多数文章中都没有列出此步骤,并且不是构建项目所必需的,但它对我的问题没有帮助) 在您的 AndroidManifest.xml 中声明库引入并在其 AndroidManifest.xml 中声明的活动

正如我所说,在构建时一切看起来都很好,所以我不确定还有什么要检查的。因为我读到 Gradle 和 Android Studio 混搭在一起表现得非常好,所以我有一种预感,我应该在清单之间进行调节,但我不知道如果是这样的话会是什么。我想知道我是否正确地声明了第 3 方的活动,但我不确定如何测试它,因为我认为测试它的唯一方法是为命名空间提供乱码,但即便如此也没有投诉。我也尝试过剖析 .apk 以查看 .dex 文件,但我无法破译任何有用的信息。

【问题讨论】:

【参考方案1】:

我的猜测是库可能无法在 Eclipse 中正确构建 - 甚至在它作为依赖项添加到应用程序项目之前。

尝试查看out/classes/* 并确保您有相关活动的 .class 文件。我认为 .class 实际上应该在库中,并最终出现在应用程序项目的 out/ 目录中。

如果有任何本机文件 (x.so)(我想可能会有漂亮的相机东西),您可以查找包含在库的 out/ 目录中的 x.so 文件和应用程序项目以及 library.jar 文件。

此用例可能考虑的另一个选项:https://github.com/ksoichiro/gradle-eclipse-aar-plugin

【讨论】:

我设法弄明白了(请参阅我的答案),但您对需要的 .so 文件是正确的,不幸的是许多“.aar -> 库”指南没有提到它。 【参考方案2】:

我们的应用似乎有一个错误版本的 appcompat-v7 支持库。其中的 .jar 与 SDK 附带的大小不同,并且缺少一些资源。我不知道我们是如何以这种方式结束的,也不知道这个糟糕的版本是从哪里来的。一旦我更换它,一切都变得很好。

后来,正如 Stad Kurdziel 在他的回答中所说,我确实遇到了需要将 .so 文件放入我从 .aar 文件中生成的库中,但这导致了另一个错误(异常明确指出.so 丢失),我独立得出了解决方案。

【讨论】:

以上是关于在 Eclipse 中使用 aar - 为啥第 3 方活动在构建时解决而不是运行时解决?的主要内容,如果未能解决你的问题,请参考以下文章

Android Eclipse 导入 AS Gradle AAR 库手冊

Android1分钟不用改任何代码在Eclipse中使用AAR

在 Android Studio 中自动更新 aar 文件

Eclipse接facebook登录SDK

Android Eclipse 导入 AS Gradle AAR 库手册

Android Eclipse 导入 AS Gradle AAR 库手册