googlesamples / googlesamples/unity-jar-resolver

FR: Add more helper API relate to config files patching into this package

Open
#690 1 comment 0 reactions 0 assignees View on GitHub
type: feature request
Dominant language
C#
Stars
1.5k
Forks
371
Avg merge
14h 21m
Merged PRs (30d)
3

Description

### Feature proposal

* EDM4U Component: Android Resolver, iOS Resolver

Since this package is very widely used for everyone developing in android and ios. `Dependencies.xml` mechanic is very amazing. So I think it would be more beneficial if this package also have mechanism to do patching to `Info.plist` and `AndroidManifest.xml` also various `res/values/` xml files

Specifically things that related to adding and verifying key/value, query if the key and value already existed. Handling of android namespace (using `System.Xml` directly is very difficult at this). And generating required values of 3rd party packages for android and ios, which always required for package like google signin and firebase

It wouldn't need to be xml declarative pattern, I wish we would just have some C# editor API we can use to write our own `IPostprocessBuildWithReport`

Such as

```C#
using EDM4U.Helper.Android;

//// IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject

var xmlElement = AndroidManifestHelper.GetOrCreateMetaDataWithAndroidName("com.google.android.gms.games.APP_ID");
// get meta-data in manifest/application that has attribute android:name=com.google.android.gms.games.APP_ID

xmlElement.SetAndroidValue(appId); // Extension method to set android:value=XXXXXXXX
```

```C#
using EDM4U.Helper.iOS;

//// IPostprocessBuildWithReport.OnPostprocessBuild

var info = new PlistDocument();
info.ReadFromFile(plistPath);

var plistArrayCFBUT = info.root.GetOrCreateArray("CFBundleURLTypes"); // extension method in PListHelper
if(!plistArrayCFBUT.values.Any( /* any dict with CFBundleURLTypes contain reversedClientID */ ))
{
var dict = plistArrayCFBUT.AddDict();
dict.SetString("CFBundleTypeRole","Editor");
dict.GetOrCreateArray("CFBundleURLSchemes").AddString(reversedClientID);
}
```

Actually I have seen similar feature exist in firebase core. I think it would be better if it was moved into this repo so that it can be utilized by almost all of google dependent package

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.