可以使用Android Studio从库项目中创建兼容Unity插件的JAR吗?

时间:2014-05-05 22:44:13

标签: android jar unity3d android-studio

使用Unity3d时," native" (纯java)Android功能可以通过插件访问。如documentation中所述,

  

有几种方法可以创建Java插件,但每种情况下的结果都是最终得到一个.jar文件,其中包含插件的.class文件

当我在eclipse中创建Android应用程序项目并设置它是一个库时,它会自动在.jar文件夹中生成bin文件。我知道这是Android工具链上下文中的临时文件,但这是Unity需要的文件,以便查看类并构建它自己的内部JNI魔法。 (如果需要更清楚地了解该过程,整个过程概述得很清楚here。)

不幸的是,尽管我已经知道,Android Studio不会生成此文件。有没有办法可以告诉它给我这个文件,或者也许是其他一些方法来生成Unity可以使用的代码?

6 个答案:

答案 0 :(得分:6)

是的,您可以使用Android Studio从库中生成jar。 在我的例子中,jar文件非常好地隐藏在app构建文件夹中,位于

<ProjectRootDir>/<AppModuleName>/build/exploded-aar/<ProjectName>/<LibraryModuleName>/unspecified/classes.jar

我的示例设置:

  • 仅包含最小Android应用程序(包括MainActivity)的应用程序模块
  • 包含库代码
  • 的库模块
  • 从您的应用添加您的资源库的相关性,例如add:编译项目(&#39;:library&#39;)

如果您现在构建您的应用程序,它还将构建库,您的应用程序构建文件夹将包含我在上面解释的位置下的jar文件(在我的情况下:PROJECT_ROOT / app / build / explosion-aar / SampleLibrary / library /未指定/ classes.jar)。

答案 1 :(得分:6)

使用Unity 5.3+,您不再需要构建.jar,而是可以使用由Android Studio Android Library模块自动创建的.aar文件。我发现这比使用jar方法更容易:

  • 在Android Studio项目中,创建一个Android库模块:文件&gt;新&gt;新模块&gt; Android库
  • 确保您的minSdkVersion和targetSdkVersion符合您的Unity项目设置
  • 将您的类等添加到模块并构建
  • 成功构建应在build / outputs / aar /中创建一个.aar文件。我的模块创建了mkunityplugin-release.aar
  • 打开Unity项目,然后将.aar文件直接拖到Project视图中的Assets / Plugins / Android上。这将创建一个您可以在检查器中查看的资产;它将显示插件的信息,并应检查Android平台
  • 为Android构建Unity项目。我的第一次尝试失败,因为我有一个不同的targetSdkVersion所以我得到一个构建错误,说明清单无法合并;我在我的Android Studio build.gradle中修复了它,然后它工作了

这是我第一次听说.aar可以直接使用https://www.reddit.com/r/Unity3D/comments/3eltjz/how_to_add_an_android_library_project_folder_to/

答案 2 :(得分:4)

您可以使用Android Studio创建jar文件。 只需在应用程序的build.gradle文件中添加这些任务即可。

//task to delete the old jar
task deleteOldJar(type: Delete) {
    delete 'build/libs/AndroidPlugin.jar'
}

//task to export contents as jar
task exportJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('release/')
    include('classes.jar')
    ///Give whatever name you want to give
    rename('classes.jar', 'AndroidPlugin.jar')
}

exportJar.dependsOn(deleteOldJar, build)

添加上述行后,您可以使用相同名称的任务导出jar。 您可以在how to create an Android Plugin For Unity using Android Studio

上查看TGC上的这篇文章

答案 3 :(得分:1)

简单方法:

  1. 创建新的Android Studio项目
  2. 文件&gt;新&gt;新模块并选择Android库
  3. 将&lt; UnityPath &gt; \ Editor \ Data \ PlaybackEngines \ AndroidPlayer \ Variations \ mono \ Release \ Classes \ classes.jar 复制到&lt; 项目路径&gt; \&lt; Android库模块名称&gt; \ compileOnly(之前创建此文件夹)
  4. 将此jar 添加为库 enter image description here
  5. 打开此模块设置 enter image description here
  6. 设置仅编译 enter image description here
  7. 构建&gt;制作模块&lt; Android库模块名称&gt;
  8. <强>结果

    Jar-path:&lt; 项目路径&gt; \&lt; Android库模块名称&gt; \ build \ intermediates \ intermediate-jars \ debug \ classes.jar

    Aar-path:&lt; 项目路径&gt; \&lt; Android库模块名称&gt; \ build \ outputs \ aar

答案 4 :(得分:0)

apply plugin: 'com.android.application'更改为apply plugin: 'com.android.library'。在app下的build.gradle中。

答案 5 :(得分:-1)

我对Android Studio不太确定,但在ADT中我通过右键单击项目来使用导出功能。有了它,您可以创建.jar并将其放在任何您想要的位置。 Unity需要它在一个特定的文件夹上才能在设备上运行时看到它(不幸的是我不记得它,但它应该像Assets / Plugins / Android)。