androidstudio导出jar包到unity详解与常见问题

大家好,本人刚刚开始写博客,还有很多不懂,今天写的是我将AndroidStudio项目导入Unity的步骤和遇到的一些问题,遇到的那几个问题有些是自己理解的,可能有错误,如果有人发现了,希望能指出来,谢谢大家。

这里我先写下我遇到的一些问题和解决方法,然后再写将AndroidStudio的步骤。

遇到的问题:

 

问题1:classes.jar目录在哪

Jar目录:unity的安装路径:\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下的classes.jar 

 

问题2:出现如下错误

 

androidstudio导出jar包到unity详解与常见问题_第1张图片

看上图,没找到AppCompat这个style,将其删除掉即可。

---------------但不确定为什么找不到这个style,我猜想可能是没有AppCompat这个jar包的原因,因为其依赖不是通过jar包的形式放进项目的,而是远程下载的,而Unity只识别jar包。但我自己还没去尝试,不知道是不是这个原因。

 

问题3:在Unity返回到Android的方法中为什么无法操作主线程的UI?

答:Unity返回来的那个方法是在一个线程中,所以可以使用Handler到主线程中然后进行操作。参考: http://www.cnblogs.com/wufeng0927/p/5188866.html

 

问题4:Android中依赖了compile files('libs/okhttputils-2_6_2.jar')这个包,但为什么在Unity中确报没有这个包的错误?错误提示:java.lang.NoClassDefFoundError和java.lang.NoClassDefFoundError

答: 参考异常汇总第一条。

虽然直接依赖了这个包,但在lib中确没有这个包,虽然在Android中是允许的,但在Unity中必须要Lib到这个包,否则会找不到。

1、在工程下新建lib文件夹,将需要的第三方包拷贝进来。

2、将引用的第三方包,添加进工作的build path。选中jar包->Build Path

3、(关键的一步)将lib设为源文件夹。如果不设置,则程序编译可以通过,但运行的时候,会报:选中lib文件夹->source code

java.lang.NoClassDefFoundError

 

问题5:为什么Android导入unity后,利用Intent跳转Activity确找不到这个Activity,报了ava.lang.NoClassDefFoundError和java.lang.NoClassDefFoundError这两个错误?

答:参考:http://www.cnblogs.com/bicker/p/4071230.html,我跳转的Activity继承自AppCompatActivity,因为继承的类并不是jar包,而是Android直接依赖的,而Android导入Unity后,只编译了Lib下的jar包,而不编译Android中的依赖,所以如果要使用AppCompatActivity则需去下载相应的jar包。

问题6:Android导入unity后,为什么我build出来的APK是两个APK?

答:因为Unity的包名和Android项目的包名不同。

 

问题7:我一开始使用了高通AR摄像头,然后将Android的项目导入到unity中,此时,我将Plugins->Android中高通的Manifest删掉了然后将Android项目的Manifest和aar导入了进来,然后在Android上运行,运行后一直报了Vuforia初始化失败的错误,如图:

 

报这个错的原因是你Android的配置清单没有打开Camera的权限,因此将打开ARCamera的权限导入进去即可,如果你在AndroidStudio中运行可以看到以下的日志:

androidstudio导出jar包到unity详解与常见问题_第2张图片

权限如下:

 

 

正文

 

a.AS工程导入classes.jar包

Jar目录:unity的安装路径:\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes下的classes.jar 

b.修改MainActivity继承自UnityPlayerActivity,并注释掉setContentView()(如果不注释掉,则运行Unity时显示不了Unity的东西)

androidstudio导出jar包到unity详解与常见问题_第3张图片

 

注:如果不注释setContentView(),你也可以直接使用layout.addView()的方式将Unity布局加到Android中

 

c.由于我们要让AS打包,供Unity使用,所以要修改Gradle,双击build.gradle

androidstudio导出jar包到unity详解与常见问题_第4张图片

 

d.修改全出的地方:

androidstudio导出jar包到unity详解与常见问题_第5张图片

application —>library 

applicationId 这一行删掉

如图

androidstudio导出jar包到unity详解与常见问题_第6张图片

 

e.由于打包后就不由Gradle来构建项目了,所以还要修改一下 AndroidManifest 和res文件夹 ,这里修改AndroidManifest,将application中的style属性给删掉,因为Unity中并没有这个东西,具体原因不知道为什么。

androidstudio导出jar包到unity详解与常见问题_第7张图片

 

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

>

android:label="@string/app_name"

android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

 

 

f.点击Build->Build APK

androidstudio导出jar包到unity详解与常见问题_第8张图片

 

构建好后会弹出提示,点击在文件夹中显示 

androidstudio导出jar包到unity详解与常见问题_第9张图片

找不到的可以在项目目录下找,以我为例:

E:\AndroidExample\ExportToUnity\app\build

然后进入outputs->aar文件夹,就有打包好的文件了,这个*.arr 是AS的打包文件。

androidstudio导出jar包到unity详解与常见问题_第10张图片

 

g.以好压的方法打开这个xxx.aar,进入libs下删除掉其中的classes.jar。如果不删掉,当导入Unity后,会出现文件重复的错误。

androidstudio导出jar包到unity详解与常见问题_第11张图片

androidstudio导出jar包到unity详解与常见问题_第12张图片

删掉该jar包。

-------------------至此,AS的操作完成。

 

h.新建Unity,在Assets中新建Plugins->Android目录,并将xxx.arr和AS里的AndroidManifest放进去 

androidstudio导出jar包到unity详解与常见问题_第13张图片

i.新建一个小场景并保存

androidstudio导出jar包到unity详解与常见问题_第14张图片

j.点击File –> Build Setting,选择Android,switch platform,点击Player Setting ,修改Bundle Identifier(包名建议与AndroidStudio包名一致,否则运行后会出现两个APK)和修改创建安卓项目时指定的最小API(API必须一致否则会报错)。

androidstudio导出jar包到unity详解与常见问题_第15张图片

--------------------------运行收工

你可能感兴趣的:(打包设置,安卓发布)