使用Unity3d时," native" (纯java)Android功能可以通过插件访问。如documentation中所述,
有几种方法可以创建Java插件,但每种情况下的结果都是最终得到一个.jar文件,其中包含插件的.class文件
当我在eclipse中创建Android应用程序项目并设置它是一个库时,它会自动在.jar
文件夹中生成bin
文件。我知道这是Android工具链上下文中的临时文件,但这是Unity需要的文件,以便查看类并构建它自己的内部JNI魔法。 (如果需要更清楚地了解该过程,整个过程概述得很清楚here。)
不幸的是,尽管我已经知道,Android Studio不会生成此文件。有没有办法可以告诉它给我这个文件,或者也许是其他一些方法来生成Unity可以使用的代码?
答案 0 :(得分:6)
是的,您可以使用Android Studio从库中生成jar。 在我的例子中,jar文件非常好地隐藏在app构建文件夹中,位于
下 <ProjectRootDir>/<AppModuleName>/build/exploded-aar/<ProjectName>/<LibraryModuleName>/unspecified/classes.jar
我的示例设置:
如果您现在构建您的应用程序,它还将构建库,您的应用程序构建文件夹将包含我在上面解释的位置下的jar文件(在我的情况下:PROJECT_ROOT / app / build / explosion-aar / SampleLibrary / library /未指定/ classes.jar)。
答案 1 :(得分:6)
使用Unity 5.3+,您不再需要构建.jar,而是可以使用由Android Studio Android Library模块自动创建的.aar文件。我发现这比使用jar方法更容易:
这是我第一次听说.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)
简单方法:
<强>结果强>
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)。