zoukankan      html  css  js  c++  java
  • Unity3D调用Android Java代码 深圳

    最近公司准备接入91手机平台的支付系统,这边要实现在安卓上Unity调用Java代码,Unity刚刚上手,Android开发也接触不多,在网上找了不少资料,但都不是很详细,总觉得缺了些什么,经过两天摸索,基本完成功能,所遇问题颇多,在此一一总结
     
    1.开发安卓环境的搭建
    2.关于安卓开发
    3.Unity调用安卓的各种问题
     
    1. 安卓开发环境的搭建,在这里随便装了个Eclipse和ADK那些杂七杂八的,这个是真的很简单,网上的资料非常多,这里我可以很负责任地略过,随便参照网上的一个环境搭建,跑一个安卓的 Hello World,就OK了,下面随便给出两篇作为参考
     
     
     
    2. 看了一下安卓开发的入门资料,对安卓的开发有一个大概的了解,理解了几个简单的概念,Activity,Intent,R.java,AndroidManifest.xml
     
    Activity 是活动,相当于一个窗口,配置为MAIN的Activity也相当于main函数
     
    Intent 表示意图,例如我希望从这个Activity切换到另外一个Activity,这就是一个意图,这里简单理解为窗口切换的一个中介吧
     
    R.java 是Eclipse自动生成的一个类,用来索引资源,在res目录下的添加任何资源都会在这里生成一个索引,它的好处是不容易写错资源名字,导致找不到资源,这个类也经常出问题,后面会提及
     
    AndroidManifest.xml 是安卓应用程序的配置文件,配置了程序有哪些Activity,哪个是入口,需要哪些权限等等
     
    3.进入主题了!
     
    在开始调用任何安卓代码之前,确保你可以把你的程序编译成安卓的apk,在安装完安卓环境之后,Unity需要进行一些设置才可以编译,第一次编译需要设置ADK的目录,打开Preferences设置
     
     
    如果你运气够好的话,在编译的时候就可以发现第一个错误,我的Unity是3.5的,它要求Android4.0的ADK,下载4.0的ADK后可以编译,这里经过验证,打包出来的apk是可以在安卓2.0上面运行的,关于目标机器的最低安卓版本,可以在PlayerSettings->Minnimum API Level设置
     
     
    点击OK然后在弹出的窗口中选择ADK的路径即可,我的路径是下图,Unity会在platforms下面找相关的文件
     
     
    打开File->Build Settings->Android->Build会生成apk文件,将apk安装到手机或者虚拟机,然后可以运行查看效果。不要直接点右三角来运行你的程序了,调用安卓的代码是执行不了的(听说有一个插件可以直接在PC上面调试,但未曾用过)
     
    好了,现在可以开始编写安卓代码了,以宣雨松的那个demo为例子 

    http://www.xuanyusong.com/archives/667

     
    步骤如下:
    1.创建Android 项目
     
    2.导入Unity的classes.jar(这里他只说了mac下的方法,win下我的目录是 Unity\Editor\Data\PlaybackEngines\androidplayer\bin)
     
    3.编写代码和相关的XML(这一点他把代码都贴出来了,可以直接复制)
     
    4.Build安卓项目,在bin/classes目录下打包所有class成jar 在该目录下执行 
    jar -cvf class.jar *

    5.将打包好的class.jar 放到Assert目录下的 Plugins/Android 下,可以是任意名字和目录,Unity会在这里查找所有的jar作为插件,另外将安卓项目的res文件夹以及AndroidManifest.xml拷贝到Plugins/Android目录下
     
    6.编写调用Java的测试脚本,并拖到场景中的对象上(直接拖到摄像机上面就可以了)
     
    7.设置好程序的PlayerSettings,Identification Bundle Identifier*,设置为你的包名(我猜想,不设置这里,在AndroidManifest设置Activity的android:name,在类名前加上完整的包名应该是可以的)
     
    8.Build编译成apk,然后安装到手机或者虚拟机上,运行,查看Log cat
     
    中间遇到了N个问题:
     
    1.项目出现红色的叉叉,代码资源都没错误
    Problems窗口出现一个错误 Unparsed aapt error(s)! Check the console for output.
     
     
    更新ADT后问题解决,因为更新了ADK,导致ADK和ADT的版本冲突
     
     
    2.项目出现红色感叹号,源码和资源都没有问题,经过排查得出是引用的jar包的问题,重新配置一下jar包,clean一下,红色感叹号消失
     
     
     
    3.R.java文件丢失的问题,此问题比较常见,引入的第三方库有问题(不存在,重复引用等),res资源文件出错等等,会导致R.java丢失,修复问题后Clean一下项目会重新生成R.java
     
    4.运行时闪退的问题,这一般是java的运行时错误导致,在Log cat可以看到错误信息 Unable to start activity ComponentInfo ...... 这一行是错误的原因,这里的原因是空指针
     
     
    5.引用到了其他jar包,在打包成apk之前需要把引用到的jar包一起放到Unity工程的Android目录下,不然会找不到
     
    关于代码的理解:

    1. currentActivity 在Unity代码中我们通 AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");来获取当前的活动,这里的"currentActivity"表示当前的活动
     
    2. setContentView 这个函数会传入一个布局的ID,这个一般对应一个layout.xml配置文件,当调用这个函数的时候,会根据布局配置文件来初始化界面

    3.关于classes.jar 这里的classes.jar是封装了class文件一个包,类似于win下的dll,linux下的so,这里包的名字是随意的,但包的位置一定要在Andorid目录下





     
  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/ybgame/p/2932273.html
Copyright © 2011-2022 走看看