我为 Unity3D 创建了一个 Android 插件。该插件通过调用bindService()启动后台服务。为了声明此服务,我已将该<service>
元素作为元素的子元素放在我的 android 模块<application>
的 AndroidManifest.xml 文件中。然后我从模块创建了一个 jar 文件并将其放在Assets\Plugins\Android文件夹中。
问题是<service>
Unity 创建的 AndroidManifest 文件中缺少该元素。这是为什么?
Unity 应该从 jar 文件中提取我的清单,并根据Unity 文档将其与自己的清单文件合并:
您可以将预编译的 Android 库项目放入 Assets->Plugins->Android 文件夹中。预编译意味着所有 .java 文件必须已编译为位于项目的 bin/ 或 libs/ 文件夹中的 jar 文件。构建项目时,这些文件夹中的 AndroidManifest.xml 将自动与主清单文件合并。
所以结果清单文件应该包含该<service>
元素(但它不像之前所说的那样)。
以下是我的模块及其清单文件:
我使用以下 gradle 代码(来自此处)将模块转换为 jar 文件:
task createJar(type: Copy) {
from('build/intermediates/bundles/default/')
into('libs/jars/')
include('classes.jar')
rename('classes.jar', 'locationPlugin.jar')
}
注意:我的问题不是这个问题的重复。我没有制作自定义清单,也没有修改 Unity 制作的清单。我的问题是为什么统一不会将我编译的模块(.jar 文件)的清单合并到它自己的清单中。