Problem codes and how to fix them#

Every problem the template reports has a short code, such as identity.company or build.agp-namespace. You see it in Template Hub (under each problem), in Tools > Idle RPG > Pre-flight Check, in the Console lines of the Build Error Explainer and in Tools > Idle RPG > Build Errors. The ? next to a code opens its entry here.

A code with a name at its end (defines.missing-package.Android.IDLE_GPGS, packages.git-dependency.com.some.package) is explained under its family (defines.missing-package, packages.git-dependency).

Do it with AI (skill prepare-release, set up once): ask your agent "Run Pre-flight for Android, apply the safe fixes and explain the rest." Or look up each code below.

Still stuck? Template Hub > Help > Copy diagnostic report, then paste it on the support page (https://idle.nextapplab.eu/support). The report leaves out keys, e-mail addresses and your bundle id.

Pre-flight and Template Hub#

Pre-flight checks the project before a release build. Blockers stop Android and iOS release builds; warnings are worth a look; notes are only information. Many problems have a Fix button in Template Hub > Release.

Identity#

The template arrives with a placeholder identity: company Your Company, game Idle RPG, bundle id com.yourcompany.idlerpg. Make it yours (Template Hub > Home, step 1) replaces all three at once.

identity.bundle-id#

The package name (Android) or bundle identifier (iOS) is the template's placeholder. Blocker.

com.yourcompany.idlerpg (or any id starting with com.yourcompany.) is not yours, and the stores need an id only you use. Fix: Template Hub > Home > step 1 Make it yours sets your own (for example com.yourstudio.yourgame), or Template Hub > Project. By hand: Project Settings > Player > Other Settings > Package Name / Bundle Identifier.

identity.company#

The company name is the template's placeholder. Blocker.

"Your Company" is the placeholder. The company name is also where the save file lives on some platforms, so set it before your first release (changing it later moves the save). Fix: Template Hub > Home > Make it yours, or Template Hub > Project > Company.

identity.product#

The product name is the template's. Warning.

The game is still called "Idle RPG" under its icon. Fix: Template Hub > Project > Game name (or Make it yours).

identity.icon-missing#

No app icon. Warning.

The build would ship with Unity's default icon. Fix: Project Settings > Player > Default Icon, a 1024x1024 PNG.

identity.icon-template#

The app icon is the template's sample. Warning.

Your store page would look like every other copy of the template. Fix: set your own in Project Settings > Player > Default Icon.

identity.logo-template#

The title logo is the template's sample. Warning.

The title screen draws the template's logo, which shows the demo's name, not your game's. Fix: Template Hub > Look & Feel > Logo, a PNG of the same size.

legal.missing#

No Legal Info asset. Blocker.

Both stores require a privacy policy link inside the app, and the game's Settings screen reads it from the Legal Info asset. Fix: Template Hub > Project fills it in. By hand: Assets > Create > Idle RPG > Legal Info, fill in your addresses and put it in the Content Database's Legal field.

The template arrives with placeholder addresses on example.com (https://example.com/privacy, https://example.com/terms, support@example.com) so the Settings rows show in the demo. Each one is a blocker until you replace it.

legal.privacy-missing#

The privacy policy address is empty. Blocker.

Both stores reject an app without one. Fix: host your policy (templates in Documentation/Legal) and paste its address in Template Hub > Project > Privacy policy.

legal.privacy-template#

The privacy policy is the template's placeholder. Blocker.

The address is still on example.com, and both stores reject an app without a real privacy policy. Fix: host your own policy (templates in Documentation/Legal) and paste its address in Template Hub > Project > Privacy policy.

legal.terms-missing#

The terms of service address is empty. Warning.

Settings hides the Terms row. Fix: host your terms (templates in Documentation/Legal) and paste the address in Template Hub > Project > Terms.

legal.terms-template#

The terms of service are the template's placeholder. Blocker.

Settings would open example.com for your players. Fix: host your own terms and paste the address in Template Hub > Project > Terms, or empty the field to hide the row.

legal.support-missing#

The support address is empty. Warning.

Players cannot reach you from Settings. Fix: Template Hub > Project > Support e-mail.

legal.support-template#

The support address is the template's placeholder. Blocker.

Your players' support mail would go to support@example.com, which nobody reads. Fix: put your own address in Template Hub > Project > Support e-mail, or empty the field to hide the row.

legal.invalid#

A legal address cannot open. Blocker.

A privacy, terms or support address is not a valid web address or e-mail. Fix it in Template Hub > Project.

Store and ad keys#

keys.levelplay#

The LevelPlay app key is the template's. Warning.

Ad revenue would go to the template's account. Fix: paste your own app key from the LevelPlay dashboard > Apps into the store and ads profile's Android and iOS App Key (Template Hub > Monetization > Ad keys).

keys.levelplay-missing#

Ads are Real but the LevelPlay app key is empty. Blocker.

The template ships the ad keys empty; without one the game shows no ads at all. Fix: paste your app key and rewarded ad unit from the LevelPlay dashboard > Apps into Template Hub > Monetization > Ad keys, or set Ads back to Fake or Off in Template Hub > Services.

keys.admob#

The AdMob app id is the template's. Warning.

Ad revenue and the consent form would run against the template's AdMob account. Fix: paste your own app id from AdMob > Apps into Assets > Google Mobile Ads > Settings, or leave the field empty if you do not use the consent form.

keys.demo-redeem-code#

A demo gift code is still active. Warning.

The template's two sample codes, DEMO100 and DEMOLIMITED, are known to every buyer of the template. Fix: press Delete the demo codes (Template Hub > Release), or replace them under Game Config > Redeem Codes. See Redeem codes.

keys.cloud-project#

The project is linked to the template's Unity Cloud project. Warning.

Cloud Build, Analytics and every Unity Gaming Service would run against the template's account. Fix: Edit > Project Settings > Services, link your own project, or unlink it to play offline.

keys.play-games#

The Google Play Games id is the template's. Warning.

Sign-in fails for your app. Fix: Window > Google Play Games > Setup > Android setup with the resources from your own Play Console (it rewrites the file).

keys.iap-tangle#

The receipt validation key is the template's. Blocker when receipt validation is on, otherwise a warning.

Unity IAP would reject every real purchase in your app as invalid. Fix: paste your Google Play licence key (Play Console > Monetise > Monetisation setup) into the Receipt Obfuscator and press Obfuscate License Keys: Hub > Monetization > Open Receipt Obfuscator opens it (in Unity 6: Project Settings > Services > In-App Purchasing > Google Play > Receipt Obfuscator).

Release#

release.fake-store#

A release build would use the fake store. Blocker.

The fake store grants every purchase for free. Fix: Template Hub > Services > Store: install the store package, then Use it. By hand: GameBootstrap > Release Profile = StoreAndAdsServices (or your own profile).

release.no-bootstrap#

No scene in the build starts the game. Warning.

None of the scenes in Build Profiles > Scene List has a GameBootstrap. Fix: add your game scene (the one Make it yours made, or the template's Scenes/Game.unity) to the scene list, first.

release.profile-broken#

The release profile cannot load. Warning.

GameBootstrap names a Release Profile whose asset or script is missing, so builds use another one. Fix: reassign GameBootstrap > Release Profile (Template Hub > Services > Use it does this for the store and ads).

release.profile-unread#

The release profile was not checked. Warning.

A build cannot open scenes to read it. Fix: run Tools > Idle RPG > Pre-flight Check (or Template Hub > Release) in the editor before building.

release.blocked#

The release build did not start: Pre-flight found blockers. Template Hub.

Fix: Template Hub > Release: fix every blocker (many have Fix), then build again. Development builds are never stopped.

release.build-failed#

Unity's build failed. Template Hub.

The Build Error Explainer has the reason: Template Hub > Help > Open Build Errors (or the yellow line in the Console) shows the code and its fix.

profile.skipped#

The release profile was not checked. Note.

Fix: switch the build target to Android or iOS (File > Build Profiles) to check which store and ad services a release build uses.

Monetization#

monetization.invalid-store-id#

A product's store id is refused by Google Play or the App Store. Blocker.

Store ids use lower-case letters, digits, dots and underscores and start with a letter. Fix: Template Hub > Monetization > the product > Edit… and change its store id (every reference follows).

monetization.remove-ads-consumable#

The Remove Ads product can be bought again. Blocker.

Remove Ads must be non-consumable, or Restore purchases cannot give it back after a reinstall. Fix: Template Hub > Monetization: make that product non-consumable, or choose another product as Remove Ads. The Hub also answers with this code when you pick a monthly card, the Growth Pass or an event pack as Remove Ads: those are bought again and again, so pick another product.

monetization.iap-missing#

Unity IAP is not installed, so there is no Receipt Obfuscator to open. Template Hub.

The obfuscator that protects your Google Play licence key comes with Unity IAP. Fix: Template Hub > Services > Store > Install…, then press Open Receipt Obfuscator in Monetization again. Or open Edit > Project Settings > Services > In-App Purchasing, and under Google Play > Receipt Obfuscator paste your licence key (Play Console > Monetise > Monetisation setup) and press Obfuscate License Keys.

monetization.invalid-ad-key#

That ads key does not look like one, or is still the template's. Template Hub.

Fix: copy the app key and the rewarded ad unit id again from your LevelPlay dashboard (Template Hub > Monetization > Open the LevelPlay dashboard) and press Save keys.

Online services#

online.ugs-not-compiled#

Unity Gaming Services is not installed. Note.

The game runs offline with a local save, which is fine. To go online, open Template Hub > Services > Online and follow its steps.

online.receipt-identity#

The server receipt check names another app. Blocker when Check receipts on the server is on.

Deploy/Idle.rc tells the game server whose purchases to accept (your Android package name, iOS bundle id and Google Play licence key), and it does not match your game, usually because the bundle id changed in Player Settings or a template update replaced the file. The server would refuse or skip your purchases. Fix: press Write my ids (Template Hub > Release, or Hub > Monetization > Advanced), then deploy Idle.rc from Services > Deployment. When the file is missing, the Fix runs Export Live Config. See Server receipt validation.

services.not-installed#

That service is not installed yet. Template Hub.

A service can only be used once its package is installed and its code compiled. Fix: Template Hub > Services, press Install on its row (Package Manager opens on the package; you click Install there) and wait for the row to turn green.

services.mode-unavailable#

That service cannot run that way right now. Template Hub.

Services: each service's Off | Fake | Real pill offers only the choices that really take effect, and its Details say why the others are not offered. This code is the answer when a choice cannot stay, for example Fake for Firebase while its config files are in the project (it always sends; turn Send analytics off instead), Fake for Play Games while its define is set, Real for Online before the project is linked to Unity Cloud, or Fake for notifications (there is no stand-in). Fix: do what the message says, then choose again.

services.package-too-old#

A service package is older than the template needs. Warning.

The game does not use it until it is updated. Fix: Template Hub > Services shows the version needed; update it in Package Manager.

services.ugs-analytics-events#

Define the game's analytics events in Unity's dashboard. Note.

Unity Analytics drops any custom event it has no definition for (the dashboard's Invalid tab). Fix: Template Hub > Services > Analytics lists every event with its parameters and a Copy button; create them once per environment in the Unity dashboard > Analytics > Event Manager. Firebase needs nothing.

Packages#

packages.git-dependency#

A package comes from a git address. Warning.

A project that gets it from git needs git installed on every computer that opens it. Fix: use a published version of the package from Package Manager, or copy its code into Assets. (Template Hub hides the template developers' own tools here; they are listed in Release > Advanced.)

packages.local-file#

A package comes from a file on this computer. Warning.

It will not reach a teammate or another computer. Fix: use a published version, or copy its contents into Assets.

packages.missing-local#

A package points to a file that is not there. Blocker.

The project cannot load its packages. Fix: correct the path in Packages/manifest.json, or remove that line (Window > Package Manager > Remove).

packages.scoped-registry#

Package Manager reaches out to an extra registry. Note.

Every computer that opens the project must be able to reach it. Keep it if you added it on purpose (for example OpenUPM for Google Mobile Ads).

packages.manifest-unreadable#

Packages/manifest.json could not be read. Note.

Its git and local packages were not checked. Fix: open it and make sure it is valid JSON (a missing comma is the usual cause).

Scripting defines#

(defines.missing-package is listed with the build errors below.)

Content#

content.no-database#

No Content Database. Blocker.

The game has nothing to boot from. Fix: import the template again, or run Tools > Idle RPG > Dev > Build Demo Content.

content.problem#

A content problem. Blocker.

Something in the game's content would break the game (a missing reference, a repeated id, an empty slot); the problem's own sentence says which asset. Fix: run Tools > Idle RPG > Validate Content, click the line in the Console to select the asset, and correct it.

content.more-problems#

More content problems than are listed. Blocker.

Fix: run Tools > Idle RPG > Validate Content to see them all.

content.sheet-grid#

The animation strip does not fit the animation's frames. Template Hub.

A replacement animation is one row of frames, side by side, each exactly the size of the frames it replaces (the Hub shows it under the animation, for example 112×112). The number of frames may change. Fix: make the strip as tall as one frame and a whole number of frames wide, save it as PNG and drop it on the animation again.

content.form-limit#

This hero already has as many evolved forms as the game shows. Template Hub.

The game's Evolve panel shows two branches per hero. Fix: remove a form first (its ✕ on Content > the hero > Evolutions; it goes to the Trash), then add the new one.

content.frame-size#

These frames cannot make one animation strip. TemplateApi.Content.StripFromFrames.

Either the frames are not all the same size (every frame of one animation is drawn on one canvas: do not mix frames of two animations or two downloads), the first frame is empty (the feet are measured on it), or a frame's drawing would be cut by the game's frame once its feet stand on the ground line (16 px above the bottom). Pixel art is never shrunk. Fix: give the frames of one animation only; for a drawing that is too big, make the character smaller (generate it at a smaller size, or with the weapon held closer) and try again.

Features#

features.missing#

No feature list, or the feature list is not connected. Note.

Without the list every feature is on and nothing is gated. Fix: Template Hub > Features > Create the feature list. If the Hub finds your list on disk (after an update or a branch switch) the button says Connect the feature list: it connects the one you have and never makes a second one.

features.cycle#

A feature needs itself. Warning.

Its dependencies loop back to it, so it is always off. Fix: remove one of the dependencies in the Feature Set asset.

features.unknown-dependency#

A feature needs a feature that does not exist. Warning.

So it is always off. Fix: correct the id, or remove it from its dependencies, in the Feature Set asset.

features.unlock-order#

Features are listed out of unlock order. Warning.

The list's order is the order a player meets them. Fix: move the row up or down so the waves and Ascensions go up.

features.unknown#

That is not one of this game's features. Template Hub.

Fix: use one of the ids Template Hub > Features lists (castle, summon, missions, ...).

features.unknown-tab#

That is not one of the bar's tabs. Template Hub.

The tabs are castle, heroes, battle, shop and talents, and your own tabs by their feature's id (boss_quest); Template Hub > Features > Advanced > Tabs along the bottom lists them. The five built-in tabs keep their own pictures: replace them in Look & Feel (tab_castle, tab_heroes, ...), not in Features.

features.battle-tab#

Battle cannot be hidden. Template Hub.

It is the screen the game runs on; it always shows.

features.too-many-tabs#

The bottom bar already shows 7 tabs, its most. Template Hub and Warning.

Seven tabs still leave every button a thumb wide on the narrowest phone; an eighth would not. The count is the tabs the list shows, whether or not their feature is on right now, so turning a feature on never overfills the bar. Fix: in Template Hub > Features > Advanced > Tabs along the bottom, hide a tab you do not need (untick it), then make your feature again. Or make the feature without its own tab (untick Own tab next to New Feature). A list edited by hand past seven shows the first seven (Battle always) until you hide some.

features.unknown-icon#

That icon is not in the UI kit. Template Hub.

A tab of your own wears a picture of the UI kit, by name. Fix: pick it from the list on the feature's card in Template Hub > Features. To draw your own, replace one of the kit's icons in Look & Feel, or add a 20 x 20 PNG named <icon>@20.png next to it in Art/Icons/ui/ and run Look & Feel > Art importers > UI kit.

features.tab-without-screen#

A tab of your own has no screen. Console, at Play.

The feature list shows the tab and its feature is on, but no code registered its screen (GameTabs.Register), so the bar leaves it out rather than show a button that opens nothing. Usually the feature's code does not compile: fix the red Console errors first. If you renamed or deleted the feature's ...Screen.cs, hide the tab in Template Hub > Features.

features.bad-tab-id#

A screen tried to register a tab with an id that cannot name one. Console, at Play.

A tab id is its feature's id: lowercase letters, digits and _, starting with a letter, and not one of the built-in tabs (castle, heroes, battle, shop, talents). The screen must derive from GameTabScreen. Fix the id in the screen's GameTabs.Register<...>("your_id", "Name") line so it matches the feature's id in Template Hub > Features.

Texts#

texts.missing#

Texts missing in a language. Warning.

The game would show them as #key#. Fix: Template Hub > Texts, or the Fill with English for now button, and translate later.

texts.placeholder-mismatch#

A translation lost its {0}. Warning.

A translation must keep the English text's {0}, {1} ... where numbers and names go. Fix them in Template Hub > Texts.

texts.missing-glyphs#

Characters the pixel font cannot draw. Warning.

They would show as empty boxes. Fix: use other characters, or a font that has them.

texts.too-long#

Texts much longer than English. Note.

They may not fit their buttons or panels. Check them in Play, or pick shorter words.

texts.duplicate-key#

The same key twice in one language. Note.

Only the first row is read. Fix: delete the other row.

texts.unknown-language#

That language is not in the game. Template Hub.

Fix: add it first with Template Hub > Texts > Add a language.

texts.unknown-key#

That text key does not exist. Template Hub.

Also the answer when a hero's (or item's...) Name Key names a key with no text: the game would show the key itself. Fix: check the key in Template Hub > Texts (search finds it), or press Create the text under the Name Key field (it creates the text with the current name), or pick one of the listed keys.

texts.key-in-code#

That text key is used by the game's code, so it cannot be renamed. Template Hub.

Renaming it would show #key# on screen. Fix: change the text instead of the key (Template Hub > Texts).

Template Hub#

These codes answer an action in the Hub (or a call to TemplateApi from a script or an AI assistant).

hub.ok#

Done.

hub.nothing-to-do#

Already done; nothing changed.

hub.play-mode#

Stop Play to edit.

Changes made while the game is playing would not show until the next Play, which looks like nothing happened. Stop Play, then try again.

hub.compiling#

Unity is compiling scripts.

Wait until the spinner in the bottom-right corner stops, then try again.

hub.internal-error#

Something unexpected went wrong.

Nothing was left half-done (the change was undone). Copy the red error from the Console together with Template Hub > Help > Copy diagnostic report and paste both on the support page.

hub.not-implemented#

This part of the Hub comes in a later update.

The message says how to do it by hand meanwhile.

hub.no-game#

No game was found.

There is no game scene in Build Settings and no Content Database. Fix: import the template again, or add your game scene first in File > Build Profiles > Scene List.

hub.invalid-value#

That value cannot be used.

It is empty, too long or has characters it may not have; the message says which.

hub.invalid-bundle-id#

The stores refuse that package name.

Use at least two parts separated by dots, each starting with a letter and made of letters, digits and _ (no spaces or dashes), for example com.yourstudio.yourgame. The template's placeholder com.yourcompany.idlerpg is not accepted.

hub.already-yours#

Make it yours already ran.

Your game lives in your own folder; Home's step 1 shows where.

hub.target-exists#

The folder for your game already exists.

Make it yours will not overwrite a folder it did not make. Choose another game or company name, or move that folder away first.

hub.rewire-incomplete#

The copy still points at a template file.

Press Make it yours again; it finishes the copy. If it keeps happening, send the diagnostic report to support.

hub.template-missing#

The template's own scene, content or settings are missing.

Import the template again from Package Manager > My Assets, then run Make it yours.

hub.file-error#

A file could not be copied, moved, read or written.

It may be open in another program or read-only, or the folder it goes to may not exist (a CSV saved to a folder that was removed). Close other programs, make the file writable or pick another folder, then try again. Nothing was saved.

hub.no-such-issue#

That problem is not there any more.

Pre-flight ran again and no longer finds it.

hub.no-fix#

That problem has no automatic fix.

It needs a decision only you can make; its sentence says what to change.

hub.would-break#

That change would break the game's content, so nothing was changed.

The message says in plain words what would break and how to fix it ("Not changed: Ascension rewards would grow faster than the enemies get tougher..."); the validator's own lines stay in the result's issues for support and AI tools. Fix: choose another value, or fix the problem it names first.

hub.id-taken#

Another item of the game already has that id.

Ids are unique per kind. Fix: choose another name or id (the Hub suggests one with _2 at the end).

hub.invalid-id#

That id has characters it may not have.

Fix: use lower-case letters, digits and _, starting with a letter (for example frost_mage).

hub.not-in-game#

That asset is not part of the game you are editing.

After Make it yours the Hub edits your copy, not the template's original. Fix: select the asset in Assets/<Company>/<Game>/Content/, or pick it from the Hub's own lists.

hub.unknown-content#

No content with that id, or no field with that name.

Fix: check the id in Template Hub > Content (search finds it); a script or AI assistant should use the ids that TemplateApi.Content lists.

hub.not-in-trash#

Nothing in the Trash under that name.

It was restored or the Trash was emptied. Fix: look in Template Hub > Content > Recently deleted.

hub.bad-image#

That picture cannot be used.

It is not a readable PNG, or not the size its slot needs. Fix: save it as PNG at the size the Hub shows, then choose it again.

Game Balance#

balance.unknown-field#

That balance number does not exist. Template Hub.

Fix: pick it from Template Hub > Game Balance; a script should use the names TemplateApi.Balance lists.

balance.out-of-range#

That value is outside the number's safe range. Template Hub.

Simple refuses it; Advanced allows it with a warning. The safe range is measured on your game's content, so it can be narrower than usual (for example the growth rates stop where Ascension points would outgrow the waves); the message says how far the number can go and why. Fix: use a value inside the range the slider shows, or set it in Advanced if you really mean it, then test in Play.

balance.unknown-preset#

There is no pace preset with that name. Template Hub.

Fix: use Relaxed, Standard or Hardcore.

Look & Feel#

look.missing#

The game has no theme, UI kit or loading-screen set to change. Template Hub.

Fix: import the template again, or run Make it yours again from a complete template.

look.unknown#

The Hub does not know that palette, colour, logo, kit list or importer. Template Hub.

Fix: pick it from Template Hub > Look & Feel; a script should use the names TemplateApi.Look lists.

look.no-art#

The art importer found no art to import. Template Hub.

Its line in the Console says which folder and file it looked for. After Make it yours an importer reads your game's Art/ first and the template's Art/ for everything else, so this usually means the template's Art/ folder was moved or deleted: import the template again. See Reskin.

look.not-yours#

The template has no Art folder of yours yet. Template Hub.

Fix: press Make it yours (Template Hub > Home, step 1). It gives your game its own Art/ folder, where a PNG with the same name as a template picture replaces it.

look.bad-font#

The file is not a font the game can use.

Look & Feel ▸ Fonts takes a TrueType (.ttf) or OpenType (.otf) font. A font collection (.ttc) or a web font (.woff) has to be converted to .ttf first, and a file that was only renamed .ttf (a text file, a sound, a picture) is not a font at all. Nothing was changed: the game keeps its fonts.

ui.size-mismatch#

The picture is not the same size as the one it replaces. Template Hub.

The game is pixel art: a picture of another size would be stretched or cut. Fix: resize your PNG's canvas to the size the Hub shows (keep the art centred), then choose it again.

New Feature#

ai.feature-exists#

A feature with that id, or its folder, exists already. Template Hub.

Fix: choose another feature id in Template Hub > Features > New Feature…, or delete the old folder first if you no longer need it.

A full bottom bar refuses New Feature's own tab with features.too-many-tabs, and an id that is one of the built-in tabs (shop, battle, ...) with hub.invalid-id: pick another id.

Pre-flight itself#

preflight.check-failed#

A check could not run. Warning.

That part of the project was not checked. The exception under the Pre-flight report says why; send it to support with the diagnostic report.

Build and compile errors#

The Build Error Explainer recognises these in the Console, in compile errors and in failed builds, and writes one yellow line with the code. Tools > Idle RPG > Build Errors lists them with a one-click Fix where it is safe. [subject] is the name the error was about (a package, a type, a file).

<!-- build-rules:begin -->

Compile errors#

defines.missing-package#

The project is set up for [subject], but [subject] is not installed.

Why: A setting (a Scripting Define Symbol starting with IDLE_) turns on the template's code for an add-on that is not in the project.

Fix: Click Fix to run the Pre-flight check and remove the setting in one click. Or install the add-on, or remove the IDLE_ entry yourself in Edit > Project Settings > Player > Other Settings > Scripting Define Symbols.

compile.gpgs-needs-edm4u#

Google Play Games needs an External Dependency Manager, which is missing.

Why: The Google Play Games plugin uses a helper tool called External Dependency Manager, and no copy of it is in the project.

Fix: Click Fix to open Window > Package Manager, then in Unity Registry install External Dependency Manager (Unity's package, com.unity.external-dependency-manager). If Unity then asks which dependency manager to use, choose Use Unity's External Dependency Manager.

compile.core-uses-unity#

A script in the template's pure C# folder uses Unity ([subject]).

Why: A "Logic (pure C#)" folder holds only plain C# game rules (so they can be tested without Unity); Unity code does not work there.

Fix: Move the script out of the "Logic (pure C#)" folder: put it in your own game folder or next to the feature's other Unity scripts (for example Features/<YourFeature>/).

compile.missing-reference#

The template's code cannot find '[subject]' ([assembly]).

Why: The template's code is split into separate parts (assembly definitions), and each part can only use the parts it is linked to; it never sees your own scripts without an assembly definition.

Fix: If '[subject]' comes from a package or an asset with its own assembly definition, click Fix to link it. If it is one of your own scripts, call the template from your script (in your game folder) instead of changing the template's code.

compile.duplicate-dll#

The file [subject] is in the project twice.

Why: The same plugin was installed twice, usually once as files in the Assets folder and once through the Package Manager. Google.* files mean an External Dependency Manager is there twice.

Fix: Keep one copy. For Google.* files: delete the old copy's folder in Assets (Assets/ExternalDependencyManager or Assets/MobileDependencyResolver), install Unity's External Dependency Manager (Package Manager > Unity Registry, com.unity.external-dependency-manager) and, when Unity asks, choose Use Unity's External Dependency Manager. For any other file: in the Project window, delete the folder in Assets that holds the second [subject] and keep the Package Manager copy.

Android build (Gradle, AGP 9 in Unity 6000.6)#

build.agp-namespace-gma#

Google Mobile Ads uses the same Android name ([subject]) twice.

Why: The Google Mobile Ads plugin contains two Android libraries with the same name, and the Android build tools in Unity 6000.6 refuse that.

Fix: The template fixes this by itself when the setting IDLE_UMP is on. It is on automatically when the plugin comes from the Package Manager. If you imported it as a .unitypackage, click Fix and add IDLE_UMP in Edit > Project Settings > Player > Android tab > Other Settings > Scripting Define Symbols.

build.agp-namespace#

Two Android libraries use the same name ([subject]).

Why: Every Android library needs its own name, and two libraries share one, usually two copies or versions of the same plugin.

Fix: Delete the older copy of the plugin in the Project window (look in Assets/Plugins/Android), or update the plugin to its newest version.

build.androidlib-package#

An Android library has an old-style name in its manifest ([subject]).

Why: The Android build tools in Unity 6000.6 no longer accept a package="..." name in a library's AndroidManifest.xml when it differs from the library's own name.

Fix: Update the plugin, or delete package="..." from that library's AndroidManifest.xml. For GoogleMobileAdsPlugin: undo any change you made to its files (Window > Package Manager > Google Mobile Ads > Reimport); the template fixes its name by itself.

build.androidlib-no-variants#

An Android library in the project is broken ([subject]).

Why: One of the Android library folders (an .androidlib in Assets/Plugins/Android or in a package) has a damaged or half-edited build.gradle file.

Fix: Put the library's original files back: import the plugin again (or undo your change), then build again.

build.android-signing#

The release build cannot use your keystore.

Why: The keystore file, the key name or one of the two passwords is wrong or missing. Unity forgets both passwords every time it restarts.

Fix: Click Fix and go to Edit > Project Settings > Player > Android tab > Publishing Settings: pick your keystore, type the keystore password, pick the key and type its password, then build again.

build.duplicate-class#

The Android code [subject] is in the project twice.

Why: Two copies or versions of the same Android library are in the build, usually an old file in Assets/Plugins/Android next to the same library downloaded again.

Fix: Click Fix to run Assets > External Dependency Manager > Android Resolver > Force Resolve, then delete the older file in Assets/Plugins/Android (the one with the lower version number in its name).

build.min-sdk#

An add-on needs Android API level [needed], but the game allows [subject].

Why: An add-on in the build (usually ads, Firebase or Google Play after an update) needs a newer Android version than the game's minimum.

Fix: Click Fix and set Edit > Project Settings > Player > Android tab > Other Settings > Minimum API Level to [needed] or higher.

build.r8-missing-classes#

The release build stopped while shrinking the code (R8).

Why: The Minify option removes unused code, and it found code that points to parts of an add-on that are not included.

Fix: Copy the lines from the missing_rules.txt file named in the error into Assets/Plugins/Android/BillingKeepRules.androidlib/proguard-rules.txt, or click Fix and untick Edit > Project Settings > Player > Android tab > Publishing Settings > Minify > Release.

build.java-version#

The Android build uses the wrong Java version.

Why: Unity 6000.6 builds Android with the Java (JDK) it installs itself, but another Java is set.

Fix: Click Fix and tick "JDK Installed with Unity" in Edit > Preferences (on Mac: Unity > Settings) > External Tools. If it is not there, open Unity Hub > Installs > this editor > Add modules and add OpenJDK.

build.android-sdk#

The Android SDK is missing, incomplete or its licence is not accepted.

Why: Unity needs the Android tools that Unity Hub installs, and they are not set, a part is missing, or their licence was not accepted.

Fix: Click Fix and tick "Android SDK Tools Installed with Unity" in Edit > Preferences (on Mac: Unity > Settings) > External Tools. If it is not there, open Unity Hub > Installs > this editor > Add modules and add Android SDK & NDK Tools. Build again and accept the update Unity offers.

build.gradle-memory#

The Android build ran out of memory.

Why: Release builds with many add-ons need more memory than the Android build tool is allowed to use.

Fix: Click Fix and raise Maximum JVM heap size (for example to 4096) in Edit > Preferences (on Mac: Unity > Settings) > External Tools > Android, close other heavy apps, and build again.

build.edm4u-resolution#

The Android add-on libraries could not be downloaded.

Why: External Dependency Manager downloads the Android parts of the add-ons (Google, LevelPlay, Firebase), and it could not reach the internet or found versions that do not fit together.

Fix: Check your internet connection, then click Fix (Assets > External Dependency Manager > Android Resolver > Force Resolve). If two add-ons need different versions, update the older add-on.

build.gradle-dependencies#

The Android build could not get all its libraries ([subject]).

Why: A library the build needs could not be downloaded or found: no internet, or the add-ons' libraries were never downloaded.

Fix: Check your internet connection, click Fix (Assets > External Dependency Manager > Android Resolver > Force Resolve), and build again. The lines under the error name the missing library.

build.gradle-cache#

The Android build's shared Gradle cache is corrupted.

Why: An earlier build was interrupted (crash, force quit, low disk space) while Gradle was writing to its cache, and later builds now fail reading files left half-written.

Fix: Close Unity, delete the folder ~/.gradle/caches (on Mac, your home folder's .gradle/caches — press Cmd+Shift+G in Finder and type ~/.gradle/caches; on Windows, C:\Users\<you>\.gradle\caches), then reopen the project and build again.

iOS#

build.ios-cocoapods#

CocoaPods is missing or failed, so the Xcode project is incomplete.

Why: The iOS parts of the add-ons (ads, Firebase, sign-in) are installed with a Mac tool called CocoaPods, which is not installed or did not run.

Fix: Click Fix (Assets > External Dependency Manager > iOS Resolver > Install Cocoapods), or type "sudo gem install cocoapods" in Terminal. Build again, then open the .xcworkspace file in Xcode (not the .xcodeproj).

Services#

firebase.config-missing#

Firebase is installed, but its settings file is missing.

Why: Firebase needs a settings file from your own Firebase project: google-services.json for Android, GoogleService-Info.plist for iOS. Without it Firebase stays off.

Fix: In the Firebase console open Project settings > Your apps, download the file for your app and drag it into the Assets folder. If you do not use Firebase, remove the Firebase packages in Window > Package Manager.

firebase.package-mismatch#

Your Firebase settings file has no app called [subject].

Why: The game's package name (in Player Settings) changed, and the Firebase file was made for a different name.

Fix: In the Firebase console add an Android/iOS app with the package name [subject] and download its settings file again into Assets. Or click Fix and set the package name back in Edit > Project Settings > Player > Other Settings > Package Name.

online.not-linked#

Online features are on, but the project is not linked to your Unity Cloud project.

Why: Cloud save, leaderboards, friends and live settings run on Unity Gaming Services, which needs this project linked to a Unity Cloud project of yours.

Fix: Click Fix (Edit > Project Settings > Services), choose your organization and link or create a project. To play offline instead, untick Use UGS in the IdleRpgUgsSettings asset.

Catch-all (only when nothing above matched)#

build.gradle-failed#

The Android build failed: [subject]

Why: The Android build tool (Gradle) stopped for a reason the template does not recognise yet.

Fix: Read the lines under "What went wrong" in this error. If they do not help, open Tools > Idle RPG > Build Errors, click Copy diagnostic and paste it on the support page. <!-- build-rules:end -->