一、安装ADT
如果从事Windows开发这个行业的人角度来说,安装个开发工具,本来这个应当是非常简单的事情。但是到了手机开发,嘿嘿,首先是下载ADT,天朝网络,搜索谷歌是搜索不到的;想方设法到其他地方去下载很多过时的,安装完了也是不能用的,运行SDK Manager.exe,你就知道天朝网络的厉害了,谷歌肯定是知道有网络不通的地方,但是就是要你难过,非要通过网络来升级,听说谷歌退出中国了,我想谷歌最好去死掉算了。总之,安装安卓开发工具是个消耗耐心和时间的体力活,说起来就满眼是泪。
二、启动Eclipe,制作一个工程.
图1.
图2.
其中,theme,选 :None,这样做出来的插件会多出一个appcompat_v7,如果选择Minnimum Required SDK是API14以上,就不会有这个累赘。
图3.
因为是要制作插件,选择”Create Project in Workspace”,不在这个选择,后面改也可以。
图4.
在后面的选is Libray也可以,但是后面选的,生成的jar文件要明显更大些。
后面一路默认。
图5:
按Project->build All,选定appcompat_v7,build All再Build Project,再选定plugin工程,Build Project, 应当是可以生成plugin.jar,如果不可以生成,应当是开发环境有问题,继续回头折腾,不行的话,买VPN运行SDK Manager.exe升级。
如果不选定appcompat,Build几把,直接选plugin去Build的话,将出现:
坑1:build project:就会不能通过编译,出现:
C:\Users\gxp\workspace\cj\res\values-v14\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
图6:
选定plugin,右键菜单,propreties -> Java Build Path -> Libratries -> Add External JARS...,选定:
C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin\class.jar
图7:,编辑源代码:
package com.example.plugin;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public int Max(int a,int b)
{
if(a>b)return a;
return b;
}
}
二,建立Unity工程:
图7:建立plugin工程
图8:增加调用函数:
新建一个空的GameObject,插入1个Script.cs,添加如下代码
void OnGUI()
{
Rect rct = new Rect(0, 0, 200, 200);
if (GUI.Button(rct, "Test"))
{
Debug.Log("This Test ..........");
#if UNITY_ANDROID
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
int res = activity.Call<int>("Max", new object[] { 10, 20 });
Debug.Log("Max" + res);
#endif
}
}
图9:
在unity的asset目录下建立Plugings->Android目录,将上面build产生的plugin.jar和android的plugin工程的目录下AndroidManifest.xml和res目录,放到这个目录下,libs目录可以不放。
图10:
修改AndroidManifest.xml:
重点是修改这句,就是对于andorid的包和MainActivity名称。
android:name="com.example.plugin.MainActivity"
图11:
坑2:unity编译失败。如果一切按照默认,最后就是这么个结果。这是所谓的资源编译失败,网上一搜索大把这种。最简单的解决办法是图2时Minnimum Required SDK是API14以上,或者将API14编译后的res拷贝到Unity的plugins->andorid目录下也可以。
图12:
运行unity,按钮,可以看到输出Max 值是20,这就大工告成了。