如何优雅的在Unity中编写Java代码

目录

文章目录

  • 如何优雅的在Unity中编写Java代码
    • 目录
    • 为什么要在Unity中写Java代码
    • 那么如何添加Java代码到Unity
      • 创建Android Library
      • 修改AndroidManifest.xml的位置
      • 添加project.properties文件
      • 删除不必要的文件和依赖
    • 创建链接

为什么要在Unity中写Java代码

这是一个值得深思的问题,Unity可以通过aar的方式引用Android库以此来实现对原生Android的访问.

这看起来和直接添加Java代码效果上并没有什么区别,但是这种方式有一个非常大的弊病,aar是编译打包后的文件,其中并不包含源代码,这样的方式将会导致后面需要修改插件代码时无法修改.如果需要修改则需要找到原来用于生成aar的源代码,然后修改源代码重新生成一个aar文件再替换掉Unity中的aar文件.

如果我们能直接在Unity中添加Java代码,那么上述问题迎刃而解.

那么如何添加Java代码到Unity

创建Android Library

Android插件的开发当然开发还是离不开Android Studio的,所以首先,新建一个工程,然后在这个工程中添加一个Android Library.

这和aar的构建过程是一样的.

如果不懂Android开发的话可以搜索下如何创建Android的aar文件,这里不多做说明.

修改AndroidManifest.xml的位置

Android 默认构建的AndroidManifest.xml的存放位置是在src/main/下,但是存放在这个目录的话Unity将会认为这个库缺少AndroidManifest而报错.

我们需要将AndroidManifest移动到插件的根目录.

然后修改根目录下的build.gradle文件,配置AndroidManifest的路径,如下

android {
    compileSdkVersion 28


    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.test.runner.AndroidJUnitRunner"

    }

    //-------------------插入开始------------------
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
        }
    }
    //-------------------插入结束------------------
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

添加project.properties文件

修改了AndroidManifest位置,Unity还是不会认为它是一个Android库,还需要添加一个project.properties文件到库的根目录,这个文件内容很简单,就两个配置,一个target version,一个表示自己是否为Android Library.举例,添加如下两行配置即可:

target=android-19
android.library=true

删除不必要的文件和依赖

Android创建的工程里都会默认添加上test和androidTest的目录,然而这个目录只是用于测试使用的,没有必要将其弄到Unity工程中.所以将src/testsrc/androidTest目录删除.

打开build.gradle文件,将testImplementation和androidTestImplementation的依赖全部删除.

创建链接

到上面为止,这个库已经可以直接放到Assets/Plugins/Android/下了,Unity可以将其识别为Android Library.

但是,每次修改完都要将它拷贝到Assets/Plugins/Android/中,岂不是很傻.

如何实现同步呢?

答案是创建文件夹的链接,当然这个链接绝对不是windows的快捷方式,windows的智障快捷方式就是给操作系统自己用的,大部分第三方软件都无法使用.

那么如何创建文件夹链接?

在window下创建方式如下

mklink /D <LINK_PATH> <SOURCE_PATH>

在linux下创建方式如下

ln -s <SOURCE_PATH> <LINK_PATH>

LINK_PATH指链接的路径,这个路径必须没有真实文件夹或者文件;

SOURCE_PATH指源文件夹路径.

两个系统的路径顺序是相反的应当注意.

知道了如何创建链接,那么接下来就是,先将Android Studio中的Android Library拷贝到Unity工程的Assets/Plugins/Android/目录下,然后删除掉Android Studio工程中的Android Library,再然后使用上面所说的创建链接的方式将Unity工程中的文件链接到Android Studio的工程中.

回到Android Studio,修改Library的代码或者添加文件都能直接同步到Unity工程中,在Unity工程中修改也能同步到Android Studio,完美!

更多推荐

如何优雅的在Unity中编写Java代码