前文:
unity3d项目需要调用到android原生的方法,而unity3d不提供这些类型的api,所以就需要android原生代码的支持了,类似,手机震动之类的动效,或者类似第三方sdk的支付等。
推荐android开发人员使用eclipse而不是使用androidStudio来进行jar的打包开发,因为eclipse打包jar更加方便,而相对AndroidStudio稍加繁琐一点,当然,命令行打包jar的大牛请忽略这点。
思路:
unity3d需要android的支持,所以我们android需要封装好方法,处理好一些sdk的调用罗辑(初始化,注册清单文件,权限配给等等),然后用类似写接口的形式,暴露出一些接口供unity3d调用。而android需要打包成jar,提供给unity3d 以下资源文件:libs,res,AndroidManifest.xml 。这些东西会在unity3d的android目录下被开发者手动创建一个类似android项目结构的文件夹:该目录下有:libs,res ,AndroidManifest.xml 值得注意的是,这三份是从android的项目拷贝过去的。此外还有一个bin目录,该目录下存放着android原生代码打包的jar包(如何打包,该打包什么?我们下面会讲到,这个绝对是一个坑)
项目环境搭建:
新建eclipse的android项目工程: 注意点
- 包名请与unity3d项目包名保持一致
- 如无特殊要求,项目要求minSdkVersion 为4.0.3或以上,避免导入V7包
- 让unity3d开发人员提供classes.jar
- 项目主页面,也就是写方法供unity3D调用的类,必须继承UnityPlayerActivity类,生命周期oncreate()只实现 super.onCreate(savedInstanceState);,请注意不要实现setcontentView()
- 清单文件需要做如下配置:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-feature android:glEsVersion="0x00020000" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen.multitouch"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen.multitouch.distinct"
android:required="false" />
该方法类需要加入<mate-data>节点
<activity
android:name="com.xxxxx.xxx.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
、
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
具体实现
因为还在开发阶段,这个代码不贴,以后更新。
如何打包
- 确保项目代码无误后,右键项目,选择export
-
出现如图,点击“JAR file”
-
不要选择任何文件!不要选择任何文件!不要选择任何文件!单独选中src目录!是的,我们只需要src目录,其他东西完全不要!
-
右键finish打包,然后找到eclipse项目工程目录,选中以下三个文件打包并发送给unity3D开发人员