unity项目导入到android,studio导入eclipse带第三方库

作者: 新金沙平台  发布:2019-09-08

android studio 部分

由于自个儿一度原来已经有八个项目了,所以未来把unity生成的连串插进去。(若是是新品类,直接把装有module都导进去,注意一下底下的第二,三点,就完毕了)

  1. 各自导入几个子module。
  2. 修改build.gradle中的sdk version,还应该有manifest中的sdk版本。改成和你主module的sdk版本同样。然后让住module做注重。
  3. 借使有报重复方法的错误的话。改一下对应library中的manifest中的包名吧。应该为class.jar包中也可以有大同小异的包名。笔者自个儿是一向没有用gvr-permissionsupport那个module的。好像没啥影响。
  4. 轮换住项目中的文件。财富文件,jniLibs文件,libs的多少个jar包
  5. 修改主项目manifest。(小编的unity加了google sdk,所以manifest会有一点点不相同。我们望着unity导出来的门类的manifest来改就好)
 <uses-feature android:glEsVersion="0x00020000" /> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true" /> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true" /> <uses-feature android:name="android.software.leanback" android:required="false"/> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- VR feature tags. --> <uses-feature android:name="android.software.vr.mode" android:required="false" /> <uses-feature android:name="android.hardware.vr.high_performance" android:required="false" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" /> <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" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:launchMode="singleTask" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="com.google.intent.category.CARDBOARD" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> </activity> <meta-data android:name="IMMERSIVE_MODE" android:value="true" /> </application>
  1. 布局增多三个layout
 <LinearLayout android: android:layout_width="match_parent" android:layout_height="match_parent" android:background="#a6a9af" android:orientation="vertical"/>

activity中承袭UnityPlayerActivity。把unity的景观当成是android的三个view来使用。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout u3dLayout = (LinearLayout)findViewById(R.id.u3d_layout); u3dLayout.addView(mUnityPlayer); }

BINGO!

时刻仓促,写得不完美。希望大家多多指教。Unity和android交互 简洁版在此地。笔者的unity,googleV景逸SUV学习计算目录在此间。

最终点击build导出apk,若是已经延续上android设备的话,能够直接build and run实行导出和起步。

错误2、

support-annotations库和v4包冲突

错误示例:Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/AttrRes.class

不当提示说有重新的援用这里针对了android/support/annotation/AttrRes.class

行使火速键Ctrl N急速搜索项目中存有的AttrRes文件作者这里出现了三个,所以很有望是这里的难点

八个是在v7包下v4包下android.support.annotation中另个是在D:新金沙平台,kaifagongjuandroid-sdk-windowsextrasandroidsupportannotations中也便是在大家的android sdk个中早已停放了该公文。

涸泽而渔办法:选拔其一删除。别的类似只借使重新难题都能够用这几个措施消除。

参照小说: Android Support库——support annotations

unity部分

so easyfile -> build setting, platform中选用android,侧面右侧栏选用google android project。

点击PlayerSetting,在编排界面会有各样选项,minimun sdk之类的。自行选取一下。。个中 的bundle identifier是肯定要写的。正是生育的安卓项目标包名。

新金沙平台 1

接下来点击export。选择项目标地方。就搞掂了。

新金沙平台 2修改后的AndroidManifest新金沙平台 3res目录结构

错误3、
示例:Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:Program FilesJavajdk1.8.0_11binjava.exe'' finished with non-zero exit value 3

该类万分一般是在导入从前的eclipse项目时,由于lib过多产出重复引进,或情势超越规定的64k,出现溢出的景色。也可以有十分的大希望是tools版本过低的标题。

缓和方案:自己争持项目下一一model的buildToolsVersion版本是或不是一律,不均等的话修改成最新的。

在app的model下

android { compileSdkVersion 23 buildToolsVersion '25.0.2' defaultConfig { minSdkVersion 14 targetSdkVersion 23 //multidex设为启用 multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } // 保证其他的lib没有被preDex,分配限制内存 dexOptions { preDexLibraries = false javaMaxHeapSize "4g" }}

相同的时间引进包

dependencies { compile 'com.android.support:multidex:1.0.0'}

project下加入

// 保证dex_files文件中指定的文件都加载到Main Dex中afterEvaluate { tasks.matching { it.name.startsWith }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters  = '--multi-dex' dx.additionalParameters  = "--main-dex-list=$projectDir/dex_files".toString() }}

终极在Application中重写attachBaseContext方法这里提出自定义五个新的MyApplication继承Application,

public class SoftApplication extends Application { ...... protected void attachBaseContext(Context base) { super.attachBaseContext; MultiDex.install; }}

最终在AndroidMainfest.xml中把application修改成大家和好的

 <application android:name="com.MyApplication" android:allowBackup="true" android:icon="@drawable/img_logo" android:label="@string/app_name" android:theme="@style/AppTheme" > ......</application>

参照文章:1、化解AndroidStudio增添ProjectLibary后在编译时蒙受的各样难题之消除方法索引(finished with non-zero exit value and so on...)2、什么是MultiDex3、Android 使用android-support-multidex解决Dex超过方法数的界定难点,令你的利用不再爆棚4、finished-with-non-zero-exit-value-3

新金沙平台 4效果

错误1、
错误示例:Java.util.concurrent.ExecutionException: java.lang.Illegal State Exception: Multi dex requires Build Tools 21.0.0 / Current: 20的异常

杀鸡取蛋办法:修改 build.gradle

Android {compileSdkVersion 20buildToolsVersion '21.0.0'

接下来会唤醒更新tools,点击更新就行了。

展开调控台,输入adb logcat -s Unity,然后展开apk,点击button,这一年就足以观看刚刚的日记输出了。(ps:越多的adb logcat的语法能够本人百度google查看)

第一新建叁个android项目,file-->new-->new project,这里新建项目标名号为UnityAndroid,包名叫cn.unity.android,平素点击next到finish就ok了。

新金沙平台 5text新金沙平台 6最终的ui显示

新金沙平台 7添加canvas

终极获得的AndroidManifest和res的格式如下

<meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 

往canvas中加多两个text和二个button,并调动他们的大小和地点,用于之后的事件操作和显示。

新金沙平台 8logcat新金沙平台 9logcat输出

点击player settings举行局地android 导出的设置。在此间我们设置apk的名为UnityDemo,呈现为横屏,设置包名称为cn.unity.demo,要注意的是把install location设置为Automatic,不然apk会安装战败,同一时候必要钦定apk的签字。

接下去须求导出aar包和jar包,为接下去unity调用提供格局。点击build-->build apk,然后在app-->build-->outputs-->aar目录下的到app-debug.aar文件

新金沙平台 10名称新金沙平台 11横屏新金沙平台 12包名新金沙平台 13签名

public void OnTimeResult (string result) { Text text = GameObject.Find ("TimeShow").GetComponent<Text> (); text.text = result; Debug.Log ("UnityTime-->" result); }
public void showToast(final String text) { new Handler(Looper.getMainLooper.post(new Runnable() { public void run() { if (mToast == null) { mToast = Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT); } else { mToast.setText; } mToast.show(); UnityPlayer.UnitySendMessage("Canvas","OnTimeResult",text); } }); }

地点代码的情趣是得到名叫TimeShow的靶子,然后将该指标上的Text脚本的公文字更始为获取的result。所以大家供给将从前的Text对象名称改为TimeShow

public void OnTimeResult (string result) { Text text = GameObject.Find ("TimeShow").GetComponent<Text> (); text.text = result; }

本文由新金沙平台发布于新金沙平台,转载请注明出处:unity项目导入到android,studio导入eclipse带第三方库

关键词: 新金沙平台 js金沙国际