这是一个值得深思的问题,Unity可以通过aar的方式引用Android库以此来实现对原生Android的访问.
这看起来和直接添加Java代码效果上并没有什么区别,但是这种方式有一个非常大的弊病,aar是编译打包后的文件,其中并不包含源代码,这样的方式将会导致后面需要修改插件代码时无法修改.如果需要修改则需要找到原来用于生成aar的源代码,然后修改源代码重新生成一个aar文件再替换掉Unity中的aar文件.
如果我们能直接在Unity中添加Java代码,那么上述问题迎刃而解.
Android插件的开发当然开发还是离不开Android Studio的,所以首先,新建一个工程,然后在这个工程中添加一个Android Library.
这和aar的构建过程是一样的.
如果不懂Android开发的话可以搜索下如何创建Android的aar文件,这里不多做说明.
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'
}
}
}
修改了AndroidManifest位置,Unity还是不会认为它是一个Android库,还需要添加一个project.properties文件到库的根目录,这个文件内容很简单,就两个配置,一个target version,一个表示自己是否为Android Library.举例,添加如下两行配置即可:
登录后复制
target=android-19
android.library=true
Android创建的工程里都会默认添加上test和androidTest的目录,然而这个目录只是用于测试使用的,没有必要将其弄到Unity工程中.所以将src/test
和src/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,完美!
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删