网站做百度推广吗/重庆森林为什么不能看

网站做百度推广吗,重庆森林为什么不能看,成都的设计院有哪些,做企业网站安装什么系统好前言 项目之前使用Eclipse导出的jar文件来做与Android交互,最近因为工作需要需使用Android Studio的aar文件,网上参考了部分文章,也结合自己的理解重新整理一下具体的方法,通过写一个测试Demo来表述Android Studio创建aar的过程与…

前言

  项目之前使用Eclipse导出的jar文件来做与Android交互,最近因为工作需要需使用Android Studio的aar文件,网上参考了部分文章,也结合自己的理解重新整理一下具体的方法,通过写一个测试Demo来表述Android Studio创建aar的过程与及Unity如何使用aar文件,希望对刚好有这个需求的人能起到部分帮助与引导,同时如果文中有误希望也能不吝赐教。

版本信息

  Unity 5.3.1f1,

  Android Studio 2.2.3

Android Studio导出可供Unity使用的aar插件

一、 创建Android Studio工程

1)第一步,点击File->New->New Project,打开"Create New Project"对话框,选择合适的Application name与Company Domain,保证Package name与Unity项目中的Bundle Idenifier一致
2)第二步,选择Phone and Tablet,并选择合适的Minimum SDK(也可以在创建后的build.gradle中设置)
3)第三步,选择“Empty Activity”
4)第四步,保持默认的Activity Name与Layout Name即可
5)最后,点击"Finish"创建工程

二、添加Unity的classes.jar引用

  1)把Unity引擎目录下中的”Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar“文件拷贝至Android Studio工程中的libs目录

  2)右击"Project"视图,打开"Open Module Settings", 添加“classes.jar”依赖

    

三、编写Android侧代码(修改MainActivity代码)

import android.os.Bundle;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}// 显示Toast消息public void ShowToast(final String message){runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();}});}// 返回一个字符串(静态方法)public static String GetInformation(){return "This is a Plugin's content!";}
}

 四、修改build.gradle,设置工程导出为aar

1)apply plugin: 'com.android.application'  修改为     apply plugin: 'com.android.library'

  2)删除 applicationId "com.zcode.unityandroidplugindemo"

  3)修改后的build.gradle为

apply plugin: 'com.android.library'android {compileSdkVersion 24buildToolsVersion "24.0.1"defaultConfig {minSdkVersion 18targetSdkVersion 24versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {exclude group: 'com.android.support', module: 'support-annotations'})compile 'com.android.support:appcompat-v7:24.1.1'testCompile 'junit:junit:4.12'compile files('libs/classes.jar')
}

五、修改AndroidManifest.xml

1)修改样式
我们需要在 AndroidManifest 中的 application 结点修改应用的主样式为系统样式,因为导出的 AAR 文件将不带自定义的样式,在我们的 Unity 项目中生成最终 apk 的时候会出现样式找不到的错误。
同时需要删除res\Values目录下的styles.xml文件
2)在主 activity 结点下添加<meta-data>信息,否则在 Unity 导出 APK 时会报找不到manifest 文件的错误信息

六、导出供Unity使用的*.aar文件

     1)点击“Build -> Build APK”,生成aar文件

     2)由于Unity在打包APK时会自动包含自身的classes.jar,所以需使用压缩软件打开aar文件删除libs目录下的classes.jar文件

Unity导入插件,并调用

一、创建Unity工程

二、导入插件到Unity工程中

1)新建Plugins目录与Android子目录
2)拷贝aar文件与AndroidManifest.xml文件至Android目录下

三、编写测试代码

     1)新建一个“Call.cs”的脚本文件

     2)在“Call.cs”脚本中编写调用Android侧代码

using UnityEngine;
using System.Collections;public class Call : MonoBehaviour {string information_ = null;void OnGUI() {//调用显示一个文本为“Hello World!”的Toestif(GUI.Button(new Rect(0, 0, 200, 20), "Show Toest - Hello World!")) {//Unity侧调用Android侧代码using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) {//调用成员方法jo.Call("ShowToast", "Hello World!");}}}//获得插件侧的返回字符串if (GUI.Button(new Rect(0, 40, 200, 20), "Get Plugin's Information")) {//Unity侧调用Android侧代码using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")) {//调用静态方法information_ = jo.CallStatic<string>("GetInformation");}}}//显示返回的字符串GUI.Label(new Rect(220, 40, Screen.width - 220, 20), information_);}
}

四、导出APK

1)设置Bundle Identifier(保持与插件PackageName一致)
2)设置合适的Minimum API Level(保持与插件)

五、测试

Demo地址

  http://pan.baidu.com/s/1dFxc7JF

结尾

  Android侧调用Unity侧的方式在此就不多做赘述,网上相关的文章也很多。

  Android插件工程中使用第三方的aar库中遇到的Bug解决方案

    1.需手动拷贝至Unity项目Plugin/Android目录下,不然会找不到该库引起NoClassDefFoundError的错误,导致项目真机引起宕机(PS:Unity打包APk时并不会检查Android插件中是否完整包含其它aar库)

    2.确定所有的aar库中的android:minSdkVerion与android:targetSdkVersion一致

  

转载于:https://www.cnblogs.com/xtqqkss/p/6387271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM系列(四):沙箱安全机制笔记

今天主要给大家分享JVM的沙箱安全机制笔记 1、沙箱机制的概念 Java安全模型的核心就是Java沙箱(sandbox)。 沙箱机制就是将Java代码限定只能在虚JVM虚拟机中特定的运行范围&#xff0c;并且严格限制代码对本地系统资源访问&#xff0c;通过这样的方式来保证对Java代码的有效隔…

JVM系列(五):native关键字用法介绍

今天继续给大家分享JVM中native关键字用法介绍 1、native概念 native关键字修饰的Java方法是一个原生态方法&#xff0c;方法对应的实现Java作用范围达不到&#xff0c;而是在用其他编程语言&#xff08;如C和C&#xff09;文件中实现。Java语言本身不能直接对操作系统底层进行…

ASP.NET Core 介绍和项目解读

1. 前言2. ASP.NET Core 简介 2.1 什么是ASP.NET Core2.2 ASP.NET Core的特点2.3 ASP.NET Core 项目文件夹解读 2.3.1 项目文件夹总览2.3.2 project.json和global.json2.3.1 Properties——launchSettings.json2.3.4 Startup.cs &#xff08;1&#xff09; 构造函数&#xff08…

JVM系列(六):JVM内存区域中程序计数器介绍

今天继续给大家分享JVM的相关知识&#xff0c;今天介绍一下JVM内存区域的程序计数器。 1、程序计数器概念 JVM中的程序计数寄存器&#xff08;Program Counter Register&#xff09;中Register的命名来源于CPU的寄存器&#xff0c;寄存器用来存储指令相关的现场信息。 CPU只…

JVM系列(七):虚拟机栈的相关知识介绍

今天继续给大家分享JVM系列的相关知识&#xff0c;今天介绍一下虚拟机栈的介绍。 1、虚拟机栈的概念 虚拟机栈也称为Java栈&#xff0c;Java每个main方法被执行的时候&#xff0c;JVM都会同步创建一个栈帧&#xff08;Stack Frame&#xff09;&#xff0c;通过存储局部变量表…

JVM系列(八):堆(Heap)的相关知识介绍

目录 1、JVM堆的概念 2、JVM堆的特点 3、JVM堆的内部结构 3.1 组成 3.2 堆内存内部空间所占比例 3.3 永久代和元空间区别 4、堆空间的大小设置 5、堆空间垃圾回收 1、JVM堆的概念 JVM中的堆是用来存放对象的内存空间&#xff0c;几乎所有的Java对象、数组都存储在JVM的…

电脑技巧:Hyper-V安装UOS操作系统图文教程

今天给大家分享微软官方Hyper-v虚拟机管理软件安装UOS操作系统图文教程&#xff0c;感兴趣的朋友也可以下载试一试&#xff0c;当然有啥问题也可以互相沟通交流&#xff01; 1、首先任务管理切换到性能选项卡&#xff0c;查看虚拟化是否已经启用&#xff0c;如果没有启用的话&…

JVM系列(九):MinorGC、MajorGC、FullGC垃圾回收介绍

今天给大家继续分享MinorGC、MajorGC、FullGC相关知识&#xff0c;如有不对的地方欢迎指正&#xff01; 1、MinorGC &#xff08;新生代垃圾回收&#xff09; JDK1.8 堆内部结构 从年轻代空间&#xff08;包括 Eden 和 Survivor 区域&#xff09;回收内存被称为 Minor GC&…

JVM系列(十):JVM垃圾回收算法相关知识

今天给大家继续分享JVM垃圾回收算法相关知识&#xff0c;如有不对的地方欢迎指正。 JVM垃圾回收算法主要有标记清除、复制算法、标记整理、分代收集四种&#xff0c;下面来逐一介绍。 1、标记清除&#xff08;Mark-Sweep&#xff09; 标记清除作为最基础的垃圾回收算法&#…

Java8 拼接字符串 StringJoiner

StringJoiner是Java8新出的一个类&#xff0c;用于构造由分隔符分隔的字符序列&#xff0c;并可选择性地从提供的前缀开始和以提供的后缀结尾。省的我们开发人员再次通过StringBuffer或者StingBuilder拼接。 我们查看一下一下代码&#xff0c;试着猜一下。 1.简单的字符串拼接…

分享Git常见的项目托管平台

今天给大家分享Git常见的项目托管平台&#xff0c;大家一起来看看吧&#xff01; 1、GitHub GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。是全球最大、代码质量最高的Git开源项目平台。遗憾的…

网络技巧:教你给路由器装上电池,断电照样可以上网

家里要是停电了&#xff0c;你的WiFi还能上网吗&#xff1f;想都不用想&#xff0c;“肯定不能”估计所有人都会这样回答。如果小编跟你说即使停电了&#xff0c;也有个小方法让你能够用WiFi&#xff0c;你会相信不&#xff1f;下面大家一起来看看吧&#xff01; 其实&#xff…

电脑软件:推荐一款磁盘空间分析工具——WizTree

目录 1、WizTree是啥&#xff1f; 2、WizTree的特点 2.1 磁盘空间利用率分析 2.2 扫描速度快 2.3 支持多文件系统格式 2.4 树状图显示 2.5 大文件快速查找 2.5 支持文件名模糊搜索 2.6 支持导出文件和 MFT 数据 2.7 支持导入文件和 MFT 数据 2.8 命令行支持 3、总结…