External Dependency Manager for Unity
========
# Overview
The External Dependency Manager for Unity (EDM4U)
(formerly Play Services Resolver / Jar Resolver) is intended to be used by any
Unity plugin that requires:
* Android specific libraries (e.g
[AARs](https://developer.android.com/studio/projects/android-library.html)).
* iOS [CocoaPods](https://cocoapods.org/).
* Version management of transitive dependencies.
* Management of Unity Package Manager (UPM) Registries.
Updated releases are available on
[GitHub](https://github.com/googlesamples/unity-jar-resolver)
# Background
Many Unity plugins have dependencies upon Android specific libraries, iOS
CocoaPods, and sometimes have transitive dependencies upon other Unity plugins.
This causes the following problems:
* Integrating platform specific (e.g Android and iOS) libraries within a
Unity project can be complex and a burden on a Unity plugin maintainer.
* The process of resolving conflicting dependencies on platform specific
libraries is pushed to the developer attempting to use a Unity plugin.
The developer trying to use you plugin is very likely to give up when
faced with Android or iOS specific build errors.
* The process of resolving conflicting Unity plugins (due to shared Unity
plugin components) is pushed to the developer attempting to use your Unity
plugin. In an effort to resolve conflicts, the developer will very likely
attempt to resolve problems by deleting random files in your plugin,
report bugs when that doesn't work and finally give up.
EDM provides solutions for each of these problems.
## Android Dependency Management
The *Android Resolver* component of this plugin will download and integrate
Android library dependencies and handle any conflicts between plugins that share
the same dependencies.
Without the Android Resolver, typically Unity plugins bundle their AAR and
JAR dependencies, e.g. a Unity plugin `SomePlugin` that requires the Google
Play Games Android library would redistribute the library and its transitive
dependencies in the folder `SomePlugin/Android/`. When a user imports
`SomeOtherPlugin` that includes the same libraries (potentially at different
versions) in `SomeOtherPlugin/Android/`, the developer using `SomePlugin` and
`SomeOtherPlugin` will see an error when building for Android that can be hard
to interpret.
Using the Android Resolver to manage Android library dependencies:
* Solves Android library conflicts between plugins.
* Handles all of the various processing steps required to use Android
libraries (AARs, JARs) in Unity 4.x and above projects. Almost all
versions of Unity have - at best - partial support for AARs.
* (Experimental) Supports minification of included Java components without
exporting a project.
## iOS Dependency Management
The *iOS Resolver* component of this plugin integrates with
[CocoaPods](https://cocoapods.org/) to download and integrate iOS libraries
and frameworks into the Xcode project Unity generates when building for iOS.
Using CocoaPods allows multiple plugins to utilize shared components without
forcing developers to fix either duplicate or incompatible versions of
libraries included through multiple Unity plugins in their project.
## Unity Package Manager Registry Setup
The [Unity Package Manager](https://docs.unity3d.com/Manual/Packages.html)
(UPM) makes use of [NPM](https://www.npmjs.com/) registry servers for package
hosting and provides ways to discover, install, upgrade and uninstall packages.
This makes it easier for developers to manage plugins within their projects.
However, installing additional package registries requires a few manual steps
that can potentially be error prone. The *Package Manager Resolver*
component of this plugin integrates with
[UPM](https://docs.unity3d.com/Manual/Packages.html) to provide a way to
auto-install UPM package registries when a `.unitypackage` is installed which
allows plugin maintainers to ship a `.unitypackage` that can provide access
to their own UPM registry server to make it easier for developers to
manage their plugins.
## Unity Plugin Version Management
Finally, the *Version Handler* component of this plugin simplifies the process
of managing transitive dependencies of Unity plugins and each plugin's upgrade
process.
For example, without the Version Handler plugin, if:
* Unity plugin `SomePlugin` includes `EDM4U` plugin at
version 1.1.
* Unity plugin `SomeOtherPlugin` includes `EDM4U`
plugin at version 1.2.
The version of `EDM4U` included in the developer's project depends upon the
order the developer imports `SomePlugin` or `SomeOtherPlugin`.
This results in:
* `EDM4U` at version 1.2, if `SomePlugin` is imported then `SomeOtherPlugin`
is imported.
* `EDM4U` at version 1.1, if `SomeOtherPlugin` is imported then
`SomePlugin` is imported.
The Version Handler solves the problem of managing transitive dependencies by:
* Specifying a set of packaging requirements that enable a plugin at
different versions to be imported into a Unity project.
* Providing activation logic that selects the latest version of a plugin
within a project.
When using the Version Handler to manage `EDM4U` included in `SomePlugin` and
`SomeOtherPlugin`, from the prior example, version 1.2 will always be the
version activated in a developer's Unity project.
Plugin creators are encouraged to adopt this library to ease integration for
their customers. For more information about integrating EDM4U
into your own plugin, see the [Plugin Redistribution](#plugin-redistribution)
section of this document.
# Requirements
The *Android Resolver* and *iOS Resolver* components of the plugin only work
with Unity version 4.6.8 or higher.
The *Version Handler* component only works with Unity 5.x or higher as it
depends upon the `PluginImporter` UnityEditor API.
The *Package Manager Resolver* component only works with
Unity 2018.4 or above, when
[scoped registry](https://docs.unity3d.com/Manual/upm-scoped.html)
support was added to the Unity Package Manager.
# Getting Started
Before you import EDM4U into your plugin project, you first
need to consider whether you intend to *redistribute* `EDM4U`
along with your own plugin.
## Plugin Redistribution
If you're a plugin maintainer, redistributing `EDM4U` inside your own plugin
will ease the integration process for your users, by resolving dependency
conflicts between your plugin and other plugins in a user's project.
If you wish to redistribute `EDM4U` inside your plugin,
you **must** follow these steps when importing the
`external-dependency-manager-*.unitypackage`, and when exporting your own plugin
package:
1. Import the `external-dependency-manager-*.unitypackage` into your plugin
project by
[running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that
you add the `-gvh_disable` option.
1. Export your plugin by [running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html), ensuring that
you:
- Include the contents of the `Assets/PlayServicesResolver` directory.
- Add the `-gvh_disable` option.
You **must** specify the `-gvh_disable` option in order for the Version
Handler to work correctly!
For example, the following command will import the
`external-dependency-manager-1.2.46.0.unitypackage` into the project
`MyPluginProject` and export the entire Assets folder to
`MyPlugin.unitypackage`:
```
Unity -gvh_disable \
-batchmode \
-importPackage external-dependency-manager-1.2.46.0.unitypackage \
-projectPath MyPluginProject \
-exportPackage Assets MyPlugin.unitypackage \
-quit
```
### Background
The *Version Handler* component relies upon deferring the load of editor DLLs
so that it can run first and determine the latest version of a plugin compon
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
PRISON ESCAPE PLAN Unity迷你密室逃脱益智解谜游戏项目源码C# 支持Unity版本2018.3.5f1及以上 越狱计划 制定逃离监狱的计划并提防看守。画出逃生路线并帮助囚犯逃跑。那么教授有什么计划吗? 商品描述 制定逃离监狱的计划并提防看守。 画出逃生路线并帮助囚犯逃跑。那么教授有什么计划吗? 特征 64位 团结2018 完整的高级游戏 50+ 关卡 App Store 热门游戏 精美的图形 Admob 和 Unity 广告
资源推荐
资源详情
资源评论
收起资源包目录
PRISON ESCAPE PLAN Unity迷你密室逃脱益智解谜游戏项目源码C# (2000个子文件)
12560bac22942ae41bbd5bad953a16d5 4KB
18e5f01d8d360d942a9637fdc0488378 4KB
198b195fbfdea724eaf3fc58cbc59dc5 22KB
2fdc7d04424d85e41b4bc15da6bc2bca 11KB
622460741fcfd4542985c43ec5012461 10KB
63d4e34c1a558bf438d2ca2727ababda 9KB
6b3ea2692aa188e4697eea93adf51ed9 9KB
6d20613ad72661b4193f83a35313003b 24KB
6d4d62f76b0aa7348b2bd1ec901e149c 11KB
82c98619b03285046ad47a5c74a23276 8KB
a187246822bbb47529482707f3e0eff8 4KB
a1bc8cb3e23f04a4bb03f396e70dc48b 8KB
com.google.android.gms.play-services-ads-19.1.0.aar 2.65MB
com.google.android.gms.play-services-ads-lite-19.1.0.aar 835KB
androidx.core.core-1.0.0.aar 618KB
com.google.android.gms.play-services-basement-17.0.0.aar 271KB
com.google.android.gms.play-services-measurement-base-17.1.0.aar 221KB
androidx.fragment.fragment-1.0.0.aar 153KB
com.google.android.gms.play-services-gass-19.1.0.aar 146KB
googlemobileads-unity.aar 74KB
androidx.browser.browser-1.0.0.aar 61KB
androidx.viewpager.viewpager-1.0.0.aar 52KB
androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar 43KB
com.google.android.gms.play-services-measurement-sdk-api-17.1.0.aar 42KB
com.google.android.gms.play-services-tasks-17.0.0.aar 39KB
androidx.loader.loader-1.0.0.aar 33KB
androidx.customview.customview-1.0.0.aar 32KB
androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar 32KB
androidx.drawerlayout.drawerlayout-1.0.0.aar 32KB
androidx.versionedparcelable.versionedparcelable-1.0.0.aar 27KB
androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar 23KB
com.google.android.gms.play-services-ads-identifier-17.0.0.aar 17KB
androidx.print.print-1.0.0.aar 15KB
androidx.legacy.legacy-support-core-ui-1.0.0.aar 11KB
androidx.documentfile.documentfile-1.0.0.aar 11KB
NativeShare.aar 11KB
androidx.cursoradapter.cursoradapter-1.0.0.aar 10KB
androidx.lifecycle.lifecycle-livedata-2.0.0.aar 9KB
androidx.lifecycle.lifecycle-runtime-2.0.0.aar 9KB
androidx.lifecycle.lifecycle-livedata-core-2.0.0.aar 8KB
com.google.android.gms.play-services-ads-base-19.1.0.aar 8KB
androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar 8KB
androidx.interpolator.interpolator-1.0.0.aar 7KB
androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar 7KB
androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar 7KB
androidx.arch.core.core-runtime-2.0.0.aar 5KB
androidx.legacy.legacy-support-core-utils-1.0.0.aar 4KB
Android_2020_04_21_11_04_22.ahbuildinfo 63KB
Android_2020_04_05_06_37_02.ahbuildinfo 56KB
iOS_2020_05_12_17_23_04.ahbuildinfo 35KB
GoogleMobileAds.Editor.asmdef 172B
GoogleMobileAds.asmdef 112B
ProjectSettings.asset 21KB
NavMesh.asset 8KB
QualitySettings.asset 6KB
AH_EditorData.asset 6KB
AHPRO_Readme.asset 6KB
InputManager.asset 6KB
EditorUserBuildSettings.asset 5KB
GraphicsSettings.asset 2KB
FP_Promo.asset 2KB
AHPRO_Promo.asset 2KB
Physics2DSettings.asset 1KB
NavMeshAreas.asset 1KB
Heureka_Readme.asset 1KB
DynamicsManager.asset 1KB
Example Settings 2.asset 1KB
GameWin.asset 1KB
GameOver.asset 1KB
UnityConnectSettings.asset 853B
PresetManager.asset 824B
DOTweenSettings.asset 780B
EditorSettings.asset 643B
GoogleMobileAdsSettings.asset 601B
EditorBuildSettings.asset 536B
TagManager.asset 420B
P3dRenderingPipeline.asset 391B
AudioManager.asset 377B
VFXManager.asset 273B
TimeManager.asset 195B
NetworkManager.asset 159B
ClusterInputManager.asset 120B
sharedassets1.assets 16.44MB
sharedassets0.assets 13.41MB
sharedassets3.assets 6.42MB
sharedassets2.assets 802KB
globalgamemanagers.assets 64KB
ba245a238e684f2458648bef88e91993 23KB
Assembly-CSharp-Editor.csprojAssemblyReference.cache 213KB
Assembly-CSharp-Editor-firstpass.csprojAssemblyReference.cache 202KB
Assembly-CSharp.csprojAssemblyReference.cache 191KB
GoogleMobileAds.Editor.csprojAssemblyReference.cache 189KB
Assembly-CSharp-firstpass.csprojAssemblyReference.cache 185KB
GoogleMobileAds.csprojAssemblyReference.cache 158KB
DesignTimeResolveAssemblyReferencesInput.cache 27KB
Assembly-CSharp-Editor.csproj.CoreCompileInputs.cache 42B
GoogleMobileAds.Editor.csproj.CoreCompileInputs.cache 42B
GoogleMobileAds.csproj.CoreCompileInputs.cache 42B
Assembly-CSharp-Editor-firstpass.csproj.CoreCompileInputs.cache 42B
Assembly-CSharp.csproj.CoreCompileInputs.cache 42B
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
小云同志你好
- 粉丝: 1065
- 资源: 1061
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功