哪个地方可学习网站建设,做天猫网站多少钱,伍菲网站建设,网页制作模板的扩展名前言 项目之前使用Eclipse导出的jar文件来做与Android交互#xff0c;最近因为工作需要需使用Android Studio的aar文件#xff0c;网上参考了部分文章#xff0c;也结合自己的理解重新整理一下具体的方法#xff0c;通过写一个测试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 Plugins content!;}
} 四、修改build.gradle设置工程导出为aar 1apply plugin: com.android.application 修改为 apply plugin: com.android.library 2删除 applicationId com.zcode.unityandroidplugindemo 3修改后的build.gradle为 apply plugin: com.android.libraryandroid {compileSdkVersion 24buildToolsVersion 24.0.1defaultConfig {minSdkVersion 18targetSdkVersion 24versionCode 1versionName 1.0testInstrumentationRunner 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.1testCompile junit:junit:4.12compile 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.GetStaticAndroidJavaObject(currentActivity)) {//调用成员方法jo.Call(ShowToast, Hello World!);}}}//获得插件侧的返回字符串if (GUI.Button(new Rect(0, 40, 200, 20), Get Plugins Information)) {//Unity侧调用Android侧代码using (AndroidJavaClass jc new AndroidJavaClass(com.unity3d.player.UnityPlayer)) {using (AndroidJavaObject jo jc.GetStaticAndroidJavaObject(currentActivity)) {//调用静态方法information_ jo.CallStaticstring(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的错误导致项目真机引起宕机PSUnity打包APk时并不会检查Android插件中是否完整包含其它aar库 2.确定所有的aar库中的android:minSdkVerion与android:targetSdkVersion一致 转载于:https://www.cnblogs.com/xtqqkss/p/6387271.html