安卓插件推荐开发工具:Android Studio,本人使用的版本是 4.0.1

1、创建空项目,请选择Empty Activity

2、创建新模块unity,请选择Android Library

3、复制unity依赖jar包到模块unity的目录libsunity中

classes.jar所在路径:

/Applications/Unity/Hub/Editor/2020.3.9f1c1/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar

另外unity 2019.3后的版本classes.jar不包含UnityPlayerActivity类了,解决方式如下:

【1】复制UnityPlayerActivity.java到模块src路径下

其位置在/Applications/Unity/Hub/Editor/2020.3.9f1c1/PlaybackEngines/AndroidPlayer/Source/com/unity3d/player

【2】使用unity 2019.3之前旧版本的jar包,本人使用的是旧版本的jar包:unity3d.jar

4、修改模块下的build.gradle文件

//添加一个本地仓库,并将libsunity目录作为仓库地址
repositories{
    flatDir {
        dirs 'libsunity'
    }
}
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    compileOnly files('libsunity/unity3d.jar')//只在编译的时候用到
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}

5、扩展UnityPlayerActivity,接入第三方SDK

import com.unity3d.player.UnityPlayerActivity;

import java.util.List;


public class MainUnityActivity extends UnityPlayerActivity {}

安卓调用unity方法:

UnityPlayer.UnitySendMessage("AndroidInterface","OnInitResult",json);

配置安卓清单AndroidManifest.xml:

<activity android:name=".MainUnityActivity"
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <meta-data
        android:name="unityplayer.UnityActivity"
        android:value="true" />
</activity>

6、构建aar包,并且复制到Unity项目的Assets/Plugins/Android目录下

7、Unity调用安卓方法

AndroidJavaClass jc = new AndroidJavaClass(“com.unity3d.player.UnityPlayer”);

AndroidJavaObject _javaObject = jc.GetStatic<AndroidJavaObject>(“currentActivity”);

javaObject.Call(“login”, platformId)

8、在Unity打包设置中使用自定义安卓清单

原因:由于我们的插件安卓清单中定义了Main Activity,如果不使用自定义安卓清单的话,打出的apk包安装成功后会出现2个应用入口,

这是因为Unity默认安卓清单中也定义了Main Activity,打包时会将插件安卓清单和默认安卓清单进行合并处理,造成应用安卓清单中有了2个Main Activity

【1】编辑器中build参数设置

【2】AndroidManifest.xml中删除activity配置,仅保留如下配置

<manifest
xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.unity3d.player”
xmlns:tools=”http://schemas.android.com/tools”>
<application>

</application>
</manifest>

9、build出apk安装包,进行测试


版权声明:本文为kdiller原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/kdiller/article/details/122474139