Unity忽略导致丢失的android插件清单文件<;服务>;元素在其android清单中

Unity忽略导致丢失的android插件清单文件<;服务>;元素在其android清单中,android,unity3d,plugins,android-manifest,android-unity-plugin,Android,Unity3d,Plugins,Android Manifest,Android Unity Plugin,我已经为Unity3D创建了一个Android插件。此插件通过调用bindService()启动后台服务。为了声明此服务,我将元素作为的子元素: 您可以将预编译的Android库项目放入 资产->插件->Android文件夹。预编译是指所有.java文件 必须已编译成位于bin/or中的jar文件 项目的libs/文件夹。从这些 当发生以下情况时,文件夹将自动与主清单文件合并 该项目已建成 因此,结果清单文件应该包含元素(但它不像前面所说的那样) 以下是我的模块及其清单文件: 我使用以下gra

我已经为Unity3D创建了一个Android插件。此插件通过调用bindService()启动后台服务。为了声明此服务,我将
元素作为
的子元素:

您可以将预编译的Android库项目放入 资产->插件->Android文件夹。预编译是指所有.java文件 必须已编译成位于bin/or中的jar文件 项目的libs/文件夹。从这些 当发生以下情况时,文件夹将自动与主清单文件合并 该项目已建成

因此,结果清单文件应该包含
元素(但它不像前面所说的那样)

以下是我的模块及其清单文件:

我使用以下gradle代码(from)将模块转换为jar文件:

task createJar(type: Copy) {
    from('build/intermediates/bundles/default/')
    into('libs/jars/')
    include('classes.jar')
    rename('classes.jar', 'locationPlugin.jar')
}

注意:我的问题不是重复的。我没有制作海关清单,也没有修改Unity制作的清单我的问题是为什么unity不将我编译的模块(.jar文件)的清单合并到它自己的清单中。

我找到了答案。我创建的Jar文件不包含清单文件(我通过7zip打开.Jar文件验证了这一点)。因此Unity在第一时间没有看到任何清单文件能够将其合并到自己的清单文件中

为了解决这个问题,我创建了一个Android存档(AAR)文件,而不是jar文件,如下所示:

  • 打开现有应用程序模块的build.gradle文件。在高层, 您应该看到以下内容:

    apply插件:“com.android.application”

  • 更改插件分配,如下所示:

    应用插件:“com.android.library”

  • 单击“将项目与渐变文件同步”

  • 现在进入“Gradle项目”窗格(右侧)构建模块,找到相关的Gradle模块并进入任务>构建>构建。双击它来运行它。.aar文件现在已生成

    1) 查找此模块的.aar文件(位于mylibrary\build\outputs\aar文件夹中)。我选择了发行版。它被称为
    mylibraryrelease.aar
    。您可以通过7zip打开它来验证Android清单文件是否存在

    2) 将.aar文件复制到
    Assets\Plugins\Android
    文件夹中

    就这样!Unity现在将模块的清单文件合并到自己的清单中。您可以在Unity项目的Temp\stagingara中找到生成的清单文件

    一件非常重要的事情是确保
    元素包含服务类的完全限定名,即包名+类名:

    <service android:name="com.servicelocation.zerokey.mylibrary.MyLocationService"/>
    
    
    
    例如,您可以在Unity中创建一个空项目,并从资产存储区安装。您可以看到,google已将其.aar文件放在资产>插件>Android下,该文件包含:

    以下是本清单的内容:


    将清单文件放在Assets\Plugins\Android中,然后查看内容happens@Programmer这根本不是复制品!我没有制作海关清单,也没有修改Unity制作的清单。我的问题是为什么unity不将我的模块清单合并到它自己的清单中。@程序员:将我的清单放入该文件夹会导致我的模块清单完全覆盖unity清单。我不想那样。我不想创建自定义清单。相反,我希望Unity将我的清单(来自压缩jar模块)合并到它自己的清单中。Unity文档:“AndroidManifest.xml文件也应该放在Assets->Plugins->Android文件夹中(放置自定义清单完全覆盖默认的Unity Android清单)。”我不希望这样。第三,如果不想覆盖,您应该添加子文件夹并将清单放在那里。有关更多信息,请参阅