<
Ai课堂android Unity接入小结 与路上的坑
>
上一篇

Flutter学习笔记 环境配置
下一篇

Repo 的 manifest

AI课堂 Unity包 更新

AI课堂 Android Unity 接入

其实就是将 aar so jar 资源 引入到Android工程

android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['../app/libs', '../lib_unity/libs', '../lib_agora/libs']
        }
    }
}
//module中引入的aar和so也需要在app中指定路径
repositories {
    flatDir {
        dirs '../lib_unity/libs', '../lib_agora/libs'
    }
}
dependencies {
    //AI课堂 Unity包
    implementation project(':lib_unity')
}
repositories {
    flatDir {
        dirs '../lib_unity/libs', '../lib_agora/libs'
    }
}
dependencies {
    //AI课堂 Unity声网包
    api project(':lib_agora')
    //aar
    api(name: 'UniWebView', ext: 'aar')
}
repositories {
    flatDir {
        dirs '../lib_agora/libs'
    }
}

其余的 版本号等 跟项目统一一下就行了


路上的坑

退出时闪退

原因

查看 UnityPlayerActivityonDestroy 是这样的

// Quit Unity
@Override protected void onDestroy ()
{
    mUnityPlayer.quit();
    super.onDestroy();
}

UnityPlayer#quit点开 里面有一行代码

this.kill();

点开看是这样的

Process.killProcess(Process.myPid());

就是杀掉当前进程

解决办法

注意继承他的类也需要需要在同一个进程

- 法2:

  处理掉杀进程的代码, 继承 `UnityPlayer` 重写 `kill()` 空重写
```java
public class NoKillUnityPlayer extends UnityPlayer {
    public NoKillUnityPlayer(Context context) {
        super(context);
    }

    @Override
    protected void kill() {
    }
}

然后替换掉 UnityPlayerActivity 里创建实例的代码

// Setup activity layout
@Override protected void onCreate(Bundle savedInstanceState)
{
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);

//    mUnityPlayer = new UnityPlayer(this);
    mUnityPlayer = new NoKillUnityPlayer(this);
    setContentView(mUnityPlayer);
    mUnityPlayer.requestFocus();
}
Top
Foot