一.什么是Activity

Activity是一个Android四大组件之一,它提供了一个界面,用户可以通过该界面进行交互以执行某些操作,例如拨打电话,拍照,发送电子邮件或查看地图等行为,包含着行为功能的逻辑组织,由各种控件组件拼凑起来的窗口。

相关文章链接:https://www.jianshu.com/p/476087b4c087

二.什么是AndroidManifest

 AndroidMainfest是Android程序的全局配置表,提供了Android程序运行的必要信息,例如活动,服务,广播接收机,内容提供商等功能注册,既是Android程序运行前系统必须拥有的信息。

相关文章链接:https://blog.csdn.net/aiyan1111111/article/details/52858003 

三.Unity与Android的交互方式 

AndroidStudio导出jar包,Unity接入Jar包,使用Jar包封装好的功能,Unity官方不推荐使用jar包,个人觉得适用于结构不复杂的情况。

 AndroidStudio导出Arr包,Unity接入Arr包,使用Arr包封装好的功能,Unity官方推荐,个人觉得适用于结构复杂的情况。

 Unity导出安卓工程,在AndroidStudio中对导出工程进一步改造,在AndroidStudio导出APK

在Unity使用arr包或者jar包的类库时,都离不开AndroidJavaClass与AndroidJavaObject两个工具类

AndroidJavaClass主要是读取arr包或者jar包中的类对象,用来读取静态属性或方法

AndroidJavaObject主要作用于生成实例对象,用来读取对象的实例属性或方法

       //加载com.huowu.player.MainActivity类        AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.huowu.player.MainActivity");        //实例com.huowu.player.test对象        AndroidJavaObject androidJavaObject = new AndroidJavaObject("com.huowu.player.test");        //调用com.huowu.player.MainActivity类中的Test静态方法        androidJavaClass.CallStatic("Test");        //调用com.huowu.player.MainActivity类中的Show静态方法,并传参        androidJavaClass.CallStatic("Show","你好");        //调用com.huowu.player.MainActivity类中的Add静态方法,并传参,返回结果值        int sum = androidJavaObject.CallStatic("Add", 1, 2);        //调用com.huowu.player.test类中的TestInstance实例方法        androidJavaObject.Call("TestInstance");        //调用com.huowu.player.test类中的ShowInstance实例方法,并传参        androidJavaObject.Call("ShowInstance", "你好");        //调用com.huowu.player.test类中的Add实例方法,并传参,返回结果值        int sumInstance = androidJavaObject.Call("AddInstance", 1, 2);

 

获取Unity导出的Activity对象,固定写法如下

        //Unity要导出的MainActivity类        AndroidJavaClass androidJavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");        //获取MainActivity的实例对象        AndroidJavaObject currentActivity = androidJavaClass.GetStatic("currentActivity");

 

四.Unity发布Android基础概念

Unity发布Android的APK时,会使用Android的SDK进行构建,发布出来的APK只包含一个Activity,俗称MainAcitivity,在发布过程中,Unity会引入内置的Jar库,位置在Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes

其中的classes.jar就是Unity需要引入构建的Android的jar包,里面包含了Unity需要的库类,关键类UnityPlayerActivity就是Android程序的主要入口类,也就是MainActivity。

 Unity发布Android的APK时

如果在Plugins/Android( Unity特殊目录 ),不存在AndroidManifest文件,会使用Unity默认的AndroidManifest文件。

默认的AndroidManifest文件目录在:Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk

如果存在AndroidManifest文件,那么Unity会使用它代替默认的AndroidManifest文件,这个AndroidManifest,必须带有活动以及标签

参考AndroidManifest

<?xml version="1.0" encoding="utf-8"?>                                                                                                

 

  Unity发布Android的APK时,关于AndroidManifest的合并,分为两种情况

一种不合并,导出Jar包时,Unity只会识别Plugins/Android里的AndroidManifest作为描述清单或者使用默认的AndrodManifest文件,这时需要在描述清单需要添加权限,或其他服务,需要创建自定义的AndroidManifest,就是Plugins/Android目录下的AndroidManifest添加(参考上一步)。

一种合并,导出Arr包时,Arr包里面会带有AndroidManifest文件,推荐使用7z压缩器打开查看,里面的目录结构如下

在导出APK时,Unity会解析Arr包的资源,并把它们的AndroidManifest文件合并到Plugins/Android目录下的AndroidManifest文件或者Unity默认的AndroidManifest文件中,这样每个Arr包AndroidManifest请求的权限或者服务最后会合并到一个AndroidManifest中。

 

五.Android程序的签名

所有的程序有必须有数字签名,这是程序的身份认证。

签名对于包中的每个文件都进行处理,此确保包中的内容不被替换 。

同一签名的包,可以用来替换或者更新程序。 

如何生成自己的签名文件,相关链接:https://blog.csdn.net/snow12342234/article/details/50763144 

六.发布APK的两种方式(Unity2017.4.1)

在2017.4.1版本中,有两种Build System构建方式可以选择,Interal和Gradle

Internal不需要签名,仅需Android SDK支持,不能导出工程 ,适用于仅适用到Unity开发的项目

Gradle需要签名(2017.3.x之前的版本都需要), 需要Android SDK与Gradle支持,可以导出Android Studio工程,适用于需要与Android功能交互的的项目

七.注意事项

Unity在导出APK时,会合并所有Arr包的AndroidManifest,如果存在两个启动活动入口的,会在安装时出现两个APK,确保只存在一个启动活动入口,如何确定,在AndroidManifest文件中带有

                                

这两个标签的Activity都是启动入口。

更多相关文章

  1. android 绕过R文件,通过代码获取styleable的属性
  2. Android(安卓)Studio中aidl的使用示例
  3. Android系列之如何使用Alarm
  4. android菜鸟学习笔记4----android项目结构
  5. android 混淆器的使用 proguard.flags
  6. android文件系统system-ramdisk-userdata三者之间的关系
  7. Android(安卓)log
  8. java 文件的分割和合并
  9. 命令行执行Android程序

随机推荐

  1. 关于handler
  2. Android设置字体
  3. android 软键盘 InputMethodManager
  4. AlertDialog背景的修改
  5. android电话服务
  6. Android绘制文本对象FontMetrics介绍及繪
  7. 如何学Android
  8. android textview 特出显示
  9. Android不支持web页滚动
  10. Android调用系统摄像头拍照并剪裁压缩