在Android Studio中为Unity开发Android插件(涉及Android的OpenCV)

时间:2015-02-22 22:34:24

标签: android opencv plugins unity3d android-studio

目标应用程序:为Android设备开发Unity应用程序.Unity应用程序将使用OpenCV进行各种图像处理功能。

计划方法:

  1. 在Android Studio中为Android应用程序开发OpenCV。这将有一个与Unity共享数据的桥接类。

  2. 将android studio项目导出到jar

  3. 在Unity中使用jar和其他资源作为插件

  4. 使用Unity中的Android Java支持类,使用android中的桥接类访问所需的图像处理功能。

  5. 构建Android平台的统一应用程序

  6. 实验完成:

    1. 已经在Android Studio中为Android安装了OpenCV。

    2. 通过生成apk来测试设备上的示例应用程序。

    3. 使用DLL为基于Windows的应用程序统一测试插件概念。 Dll概念适用于Unity。

    4. 最终实验 -

      4。使用build \ intermediates \ explosion-aar ...中生成的classes.jar作为Unity中的插件。 它从unity构建生成一个apk。 apk安装在设备上但无法打开。(无法在应用程序菜单中看到它)

      根据以下链接中的答案使用此.jar方法  How to export library to Jar in Android Studio?

      问题:

      1. 大多数Android插件教程都使用Eclispe并导出到jar函数。这个jar文件可以作为一个插件使用。
      2. 查询:

        1. 我发现了可以包含在gradle脚本中的jar任务。 但我不确定如何使用它?在Android工作室中创建jar任务似乎有很多版本。如何在android中使用opencv实现项目?

        2. 我也很困惑.jar或.aar会解决我的目的吗?

        3. 我应该尝试像android库这样的其他方法来实现android,Opencv和Unity集成。

        4. 我对解决方案的看法:

          1. 在Android Studio中生成相应的jar将解决问题。

          2. 否则回去在eclipse中开发android的opencv

          3. 有用的链接

            Can Android Studio be used to create Unity-plugin compatible JARs out of Library projects?

            以下项目方法几乎与我想要实现的方法相同 https://github.com/thorikawa/unity-opencv-android

            对此有任何帮助将不胜感激。

            更新 2015年2月24日

            借助此链接 Can Android Studio be used to create Unity-plugin compatible JARs out of Library projects?

            我能够整合Unity和Android。

            android studio项目现在包含两个类,一个活动类和一个包含各种getter函数的普通java类。

            我可以从unity调用普通java类的任何函数。

            但无法从统一开始活动课程。

            我的想法

            1. 我认为Unity在统一安装android时会生成自己的清单文件。

            2. 相应地更改android studio清单文件可能会解决问题。

            3. 查询

              1. 如何从Unity中启动android库中的活动?

              2. android studio如何生成单独提供的清单文件,以便Unity将其与自己生成的清单合并而不会产生任何冲突?

              3. 尝试的事情

                1. 在统一构建时,如果没有提供android studio生成的清单文件,则应用程序正常运行并与具有getter函数的简单java类通信。可以在Unity中获取值。

                2. 如果默认清单文件与classes.jar一起提供,则应用程序已安装但在打开时崩溃。甚至应用程序名称也更改为android studio清单文件提供的名称。

                3. 如果有人能帮助我,我将不胜感激。此外,我想如果我解决这个步骤,整合opencv for android将不会非常艰难。

                  祝你好运, Swaroop

1 个答案:

答案 0 :(得分:0)

首先,你不能使用.aar文件,除非你有Unity5(我没有,但我读到了添加了aar支持)。为了创建jar,我使用same approach that use posted here,它对我有用。

如果您有Unity5,如果您的项目设置为Android库,它将在构建时输出.aar。它将显示在模块目录的build/outputs/aar/目录中。您需要将这些文件复制到Assets/Plugins/Android文件夹

如果您想在Unity中打开一个活动,因为您在.jar中添加了活动需要在清单中声明它。如果您已经为项目使用自定义清单,只需将其添加到应用程序标记内。

否则,您需要为项目创建自定义清单。首先,您需要复制Unity在编译游戏时生成的Android Manifest,它位于文件夹:

YourProjectname/Temp/StagingArea/AndroidManifest.xml

将其从那里复制到Unity内的Assets/Plugins/Android文件夹,并添加您的库活动:

<activity android:name="yourLibraryPackagename.YourActivity"</activity> 

进入应用程序标记内的清单,您应该能够打开您的活动。