【发布时间】:2017-09-07 14:02:21
【问题描述】:
我为 Unity3D 创建了一个 Android 插件。该插件通过调用 bindService() 启动后台服务。为了声明此服务,我将<service> 元素作为<application> 元素的子元素放在我的android 模块 的AndroidManifest.xml 文件中。然后我从模块中创建了一个 jar 文件并将其放在 Assets\Plugins\Android 文件夹中。
问题是 Unity 创建的 AndroidManifest 文件中缺少 <service> 元素。这是为什么?
Unity 应该已经从 jar 文件中提取了我的清单,并根据Unity documentation 将其与自己的清单文件合并:
您可以将预编译的 Android 库项目放入 资产-> 插件-> Android 文件夹。预编译意味着所有 .java 文件 必须已编译成位于 bin/ 或 项目的 libs/ 文件夹。 AndroidManifest.xml 来自这些 文件夹将自动与主清单文件合并 项目已建成。
所以结果清单文件应该包含<service> 元素(但它不像之前所说的那样)。
以下是我的模块及其清单文件:
我使用以下 gradle 代码(来自here)将模块转换为 jar 文件:
task createJar(type: Copy) {
from('build/intermediates/bundles/default/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'locationPlugin.jar')
}
注意:我的问题与this question 不重复。我没有制作自定义清单,也没有修改 Unity 制作的清单。 我的问题是为什么 unity 没有将我编译的模块(.jar 文件)的清单合并到它自己的清单中。
【问题讨论】:
-
将 Manifest 文件放入 Assets\Plugins\Android 看看会发生什么
-
@Programmer 根本不是重复的!我没有制作自定义清单,也没有修改 Unity 制作的清单。我的问题是为什么统一不将我的模块的清单合并到它自己的清单中。
-
@Programmer:将我的清单放入该文件夹会导致我的模块清单完全覆盖 Unity 清单。我不想要那个。我不想创建自定义清单。相反,我希望 Unity 将我的清单(来自压缩的 jar 模块)合并到它自己的清单中。
-
来自 Unity 文档:“AndroidManifest.xml 文件也应该放在 Assets->Plugins->Android 文件夹中(放置自定义清单会完全覆盖默认的 Unity Android 清单)。”我不想那样。
-
第三,如果您不想覆盖,您应该添加子文件夹并将您的清单放在那里。请参阅here 了解更多信息
标签: android unity3d plugins android-manifest android-unity-plugin