Unity 编写并使用Android包
Author: ziang.hu
Date: 19.1.15 15:39
使用软件版本:
Unity : 2017.4
Android Studio : v3.2.1
编写Android的aar包
1. 创建安卓项目和Module
PS:其中安卓项目包名并不是很重要,可以随便设置。
选好对应的SDK后新建项目,Activity选择Empty Activity。(其他Activity也行,但是其实并不会使用Activity,无所谓)
2. 新建Library Module
File -> New -> New Module,选择Android Library。
PS:这个module是真正用来打包的,Minimum SDK要设置成和Unity一样,包名可以设置成一样也可以不设置*。
至此,项目下面就有两个Module,app和mylibrary。之后的大部分操作都在mylibrary这个文件夹中操作。
3. 引用Unity中的jar包
去Unity的安装目录搜索classes.jar,可以找到Unity的jar包。(如果有多个的话,任取一个即可)
复制该包到mylibrary/libs下,然后将classes.jar添加成module的第三方库。(右键 -> Add as Library)
4. 配置build.gradle
接下来需要修改mylibrary下的build.gradle配置文件,修改的地方如下。
android {
// 编译SDK版本,和Unity同步(Unity中的版本一般比较低)
compileSdkVersion 24
defaultConfig {
// 最小SDK版本,和Unity同步
minSdkVersion 18
// 目标SDK版本,和编译SDK版本相同
targetSdkVersion 24
versionCode 1
// 版本名称,和Unity同步
versionName "1.0"
}
}
// ...
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
// Unity中不需要appcompat支持,删除或注释下面一行
// implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/classes.jar')
}
5. 编写实际的代码
准备工作做好后,接下来就可以编写实际要用到的代码了。
复制app文件夹下的MainActivity到mylibrary中的指定位置。(Activity就这个作用了)
修改包名,修改MainActivity中的基类为UnityPlayerActivity,并添加引用,删掉setContentView函数。
修改后的文件如下:
package com.mycom.mylibrary;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
PS:AS里面有自动添加包依赖的功能,具体可以百度。
之后就可以在MainActivity中添加所需要的功能,举例如下:
package com.mycom.mylibrary;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// static 函数/变量
public static int sa = 10;
pub