放下Eclipse,用Android Studio开发Unity Android插件

本篇使用的 IDE 版本为 Android Studio 1.5.1,Unity 5.4,使用更高的版本理论上不会有很大问题。


在 Unity5 出来之前,我一直都是使用 Eclipse 来写 Android 插件为 Unity 提供支持,但随着 Android Studio 的出现,Google 官方宣布将停止对 Eclipse ADT 的维护,也就是说,用 Android Studio 来开发 Android 应用才是趋势。而 Unity 也跟上了这点,在 Unity5 推出时,表示支持 Android AAR(Android Archive:是一个 Android 库项目的二进制归档文件,为 Android 项目提供模块化支持)格式的文件作为 Unity 插件,而 AAR 格式的文件,正可以使用 Android Stdio 进行生成。

简单而言,AAR 文件我们可以理解成原来使用的 JAR+资源文件,我们不再需要在 Unity 项目中建立多个文件进行插件目录的构建,我们只需要简单地把从 Android Studio 导出的 AAR 文件和对应的 AndroidManifest 文件加到 Plugin/Android 目录下即可。

我们看下具体操作:
1、新建
首先我们要在 Android Studio 上新建一个工程(Project)或模块(Module),这个我想不用过多说明吧,会使用 IDE 的应该都会。

2、修改样式
我们需要在 AndroidManifest 中的 application 结点修改应用的主样式为系统样式,因为导出的 AAR 文件将不带自定义的样式,在我们的 Unity 项目中生成最终 apk 的时候会出现样式找不到的错误。


Android应用主样式

修改了配置清单后,我们还要对 styles 文件进行样式的注释移除,以防万一。


styles目录位置
styles文件,注释即可

【Ps:除了样式,我们还要在主 activity 结点下添加<meta-data>信息,否则在 Unity 导出 APK 时会报找不到manifest 文件的错误信息】

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

3、添加 Unity 的 classes.jar 引用
使用过 Eclipse 开发 Android 插件的应该都知道,需要导入 Unity 自带的 classes.jar 包才能对 Unity 的封装方法进行引用。classes.jar 目录位置如下:
C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\classes.jar
直接烤到 Android Studio 的 app\libs 目录下,然后再 build.gradle 文件下添加依赖:

gradle文件位置
添加依赖

完成这些步骤,我们就可以使用 Unity 提供的封装方法了。

4、实现 Unity 所依附的 UnityPlayerActivity
在 Unity 中,整个应用都基于 UnityPlayerActivity,我们可以对自己的 Activity 继承 UnityPlayerActivity 实现我们一些特定的需求,也就是我们需要为 Unity 项目提供的功能。具体的内容大家可以参考 qinyuanpei 前辈的这篇文章,里面详细描述了怎样对 Android 和 Unity 实现交互。

5、修改 build.gradle 文件,为导出 AAR 做最后准备
最后我们需要修改上面提到的 build.gradle 文件,指定我们需要导出的是 AAR 文件。
如果我们一开始新建的是一个 Project,那么默认导出的是一个 APK,所以我们需要对导出进行设定:
修改

apply plugin: 'com.android.application'

apply plugin: 'com.android.library'

删掉

applicationId "com.xxx.xxx"  //你的包名

最后我们得到的 gradle 文件是这样的:

apply plugin: 'com.android.library'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile files('libs/classes.jar')
}

6、导出 AAR 文件
依次点击 Build->Build APK 生成我们需要的 AAR 文件

导出

生成的 AAR 文件会保存在 app\build\outputs\aar 目录下,名为 app-debug.aar

7、移除classes.jar引用
导出的 AAR 文件中,会包含我们之前导进去的 classes.jar,但是在 Unity 中已经存在该文件,我们需要把它移除,不然会发生冲突。我们用解压软件把 AAR 文件以压缩包的形式打开,删除 libs 下的 classes.jar 文件即可。

libs目录

8、把 AAR 文件导入 Unity 项目中
最后就是把我们生成的 AAR 文件导入到 Unity 项目中了,把 AAR 文件和 AndroidManifest 文件直接拷到 Plugins/Android 下即可

文件目录结构

至此我们就完成了 Android 插件的引入。
后续的交互操作,网上有很多教程,我这里就不再赘述了。


后续:
我在测试时导出的 apk 文件在安装的时候总是安装失败,在捣鼓了一天后发现这是 Unity 指定的安装路径的问题:
在 PlayerSetting 下的 Android 配置中有一项 Install Location,默认为 Prefer External,当我改成 Automatic 后问题就没有了,具体是什么原因,还没弄懂,先 mark 下,有知道的朋友欢迎留言交流。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容