> For the complete documentation index, see [llms.txt](https://lionstudios.gitbook.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lionstudios.gitbook.io/readme/features/cloud-build/common-jenkins-build-issues.md).

# Common Jenkins Build Issues

<details>

<summary>Problem: Couldn't set project path to</summary>

<pre><code><strong>14:25:40 COMMAND LINE ARGUMENTS:
</strong>14:25:40 /Applications/Unity/Hub/Editor/2021.3.9f1/Unity.app/Contents/MacOS/Unity
14:25:40 -quit
14:25:40 -buildTarget
14:25:40 Android
14:25:40 -username
14:25:40 builds@lionstudios.cc
14:25:40 -password
14:25:40 (hidden)
14:25:40 -projectPath
14:25:40 /Users/jenkins/build/workspace/LevelUpRunner
14:25:40 -
14:25:40 Android
14:25:40 -executeMethod
14:25:40 AutoBuilder.BuildAndroid
14:25:40 -Args:environment=Development;versionNumber=1;buildNumber=1;buildName=1(1);jdkPath=/Applications/Unity/Hub/Editor/2019.4.29f1/PlaybackEngines/AndroidPlayer/OpenJDK;reimportAssets=true;
14:25:40 -batchmode
14:25:40 -nographics
14:25:40 Couldn't set project path to:
14:25:4014:25:40 Aborting batchmode due to failure:
</code></pre>

**Solution:**

There must be a `space` in your `Jenkins Job` name. Remove the `space`.

</details>

<details>

<summary>Problem: TextMeshPro assets missing in Jenkins build</summary>

**Solution:**

If the TextMeshPro-related assets are missing after building from Jenkins, then

* Go to `.gitignore` file in your project’s `root` folder
* Comment out or delete any TextMeshPro-related filters
* Commit the TextMeshPro files that are in `Assets/`

  ![](/files/Bw20NjK1N3MeIsHf7uWK)

Note: if there are no TextMeshPro files in `Assets/`, you must first open the Unity Project locally and accept the TextMeshPro popup.

**To edit the `.gitignore` file:**

With Sourcetree:

`Settings` → `Advanced` → `Repository-specific ignore list` → `Edit`

<img src="/files/18aeGKvhWWKhZ6D9Tx54" alt="Untitled" data-size="original">

With file system:

* Display hidden files and folders (MacOS: `CMD` + `SHIFT` + `.` )
* Open the file `.gitignore` at the root of your repo

</details>

<details>

<summary>Problem: build crashes with error log: The Google Mobile Ads SDK was initialized incorrectly</summary>

The builds keep crashing, and the logs look like the below-shown image in the Android Logcat window.

<img src="/files/LAff6psKBC8CsbpJzQdQ" alt="Screenshot 2023-01-12 at 11.16.37 AM.png" data-size="original">

**Solution:**

An entry needs to be added to `AndroidManifest.xml` for Google Ad IDs. The ad ID would be located in the Applovin MAX `AppLovin Integration Manager`.

```xml
<manifest>
    <application>
        <!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>
```

Reference: <https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start#import_the_mobile_ads_sdk>

</details>

<details>

<summary>Problem: The FaceBook Audience Network (FAN) SDK causes dependencies issues in pod installation</summary>

<img src="/files/WRPMR60qlhDxrU6SqWMM" alt="" data-size="original">

**Solution:**

If no ads are being surfaced through FAN SDK, you can remove the FaceBook Audience Network SDK. Otherwise, change the method calls from AudienceNetwork settings to FB mobile.

<img src="/files/3DZRf9GNCTImhJyjZCTV" alt="" data-size="original">

</details>

<details>

<summary>Problem: The Provisioning Profile doesn’t have some capabilities in it which are required by the app, and the build fails</summary>

**Solution:**

1. Contact your Product Manager or our QA Team to get the current *provisioning profile*.
2. In your project, ensure you have a `/ProvisioningProfiles` folder. Place your *provisioning profile* in this folder, replacing any older version(s) with the same name.

</details>

<details>

<summary>Problem: Firebase Android errors</summary>

**Solution:**

Update Firebase. To update Firebase:

* Delete `Assets/Firebase`
* Delete `Assets/GeneratedLocalRepo`
* Delete `Assets/Plugins/<anything with Firebase in the filename>`
* **Install the newer Firebase package**
* Delete `Assets/Plugins/Android/AndroidManifest.xml`
* Delete `Assets/Plugins/Android/mainTemplate.gradle`
* Delete `Assets/Plugins/Android/launcherTemplate.gradle`
* Delete `Assets/Plugins/Android/baseProjectTemplate.gradle`
* Delete `Assets/Plugins/Android/gradleTemplate.properties`
* `Uncheck` then `re-check` the checkboxes in `Publishing Settings` (the ones that were already checked in your project).

  ![](/files/LxiwkU9Iyw1t1jDQ8BfS)
* Click `Assets` → `External Dependency Manager` → `Android Resolver` → `Force Resolve`

<img src="/files/PXEXxJIHLlsKdkNRNAhP" alt="" data-size="original">

</details>

<details>

<summary>Problem: iOS build fails due to OpenVessel error in pod installation</summary>

<img src="/files/tg9mcyXMcAX4Ruy3YdXt" alt="" data-size="original">

**Solution:**

To resolve this error, go to the `Assets` → `OpenVessel` → `Plugins` → `Editor` → `Dependencies.xml`

Add the parameter `minTargetSdk=13.0` to the `OpenVesselSDK` `iosPod` line. Next, restart Unity. Unity should show that OpenVessel wants to update its target SDK version to 13.0. If it doesn’t, in `Unity iOS Build Settings`, manually update the `Target SDK` version from `11.0` → `13.0`.

<img src="/files/JmA03BsM8lyNfLyEEPp3" alt="" data-size="original">

</details>

<details>

<summary>Problem: Applovin Cross Promo MRec error</summary>

`error: no known class method for selector 'sizeMRec'`

<img src="/files/3eai4Pz2y7fc7Y8P7eCw" alt="Screenshot 2023-02-01 at 5.37.37 PM.png" data-size="original">

**Solution:**

This error results from Applovin Cross Promo version `1.0.0` installed in the project. To resolve this error, in your code editor go to:

`Assets` → `AppLovin - CrossPromo` → `Plugins` → `iOS`

and edit the line causing this error. Change the variable name from `sizeMRec` to `mrec`.

<img src="/files/N6gyhkHlykQVf2VWIETT" alt="" data-size="original">

</details>

<details>

<summary>Problem: Facebook CoreKit fails the iOS build</summary>

`error: Signing for "FBSDKCoreKit-FacebookSDKStrings" requires a development team. Select a development team in the Signing & Capabilities editor. (in target 'FBSDKCoreKit-FacebookSDKStrings' from project 'Pods')`

<img src="/files/xfrr3HOmuW8dLXXLJ4yh" alt="Screenshot 2023-02-01 at 6.14.56 PM.png" data-size="original">

**Solution:**

The Facebook SDK needs to be updated to `14.1+`. The updated version will require the `client token` from Facebook App settings. Please contact your Product Manager or Lion Support for help finding your `client token`.

</details>

<details>

<summary>Problem: NiceVibration creating Swift Language string and Facebook issues</summary>

![](/files/SYTEn2gOjwO4MZAyKhc2)

The *NiceVibration* and Max SDK are likely overwriting each other’s code for `SWIFT_VERSION`.

**Solution 1:**

To resolve, manually edit MAX SDK’s code and set Swift version to `5.1`. After fixing the Swift version error, if you are using `FB SDK Version` ≥ `11.0.0` , there may be another error in your Xcode build:

<img src="/files/BxEkQvNObYkyfYAfSZP8" alt="" data-size="original">

**Solution 2:**

*NiceVibrations*, by *Nice Mountains*, has been replaced by *FEEL*, also by *Nice Mountains*, in the Unity Asset store.

1. The *NiceVibration* package needs to be updated to *FEEL* package. Sign into the Unity Asset Store and download *FEEL*.
   1. <https://assetstore.unity.com/packages/tools/particles-effects/feel-183370>
2. The code is quite different from *NiceVibrations* package, so there will be many syntax errors to fix:

   1. Namespace changed from **`MoreMountains.NiceVibrations`** to **`Lofelt.NiceVibrations`**
   2. `MMVibrationManager` is replaced by `HapticController` & `HapticPatterns`
   3. `MMVibrationManager.SetActive` → `HapticController.hapticsEnabled`
   4. `HapticType` → `HapticPatterns.PresetType`

   ```csharp
   MMVibrationManager.Haptic(HapticTypes.LightImpact) -> becomes ->
   HapticPatterns.PlayPreset(HapticPatterns.PresetType.LightImpact);
   ```

   e. `MMVibrationManager.Haptic` → `HapticPatterns.PlayPreset`

   f. `MMVibrationManager.TransientHaptic` → `HapticPatterns.PlayEmphasis`

</details>

<details>

<summary>Problem: Shader compiler initialization error: Failed to get ipc connection from UnityShaderCompiler shader compiler!</summary>

<img src="/files/cToeVMs8aNSPaHFI9ndI" alt="Untitled" data-size="original">

**Solution:**

In `Project Settings` → `Editor` section, uncheck `Caching Preprocessor`.

<img src="/files/hBXjPfaCSXmYwFTgLD2k" alt="Untitled" data-size="original">

</details>

<details>

<summary>Problem: OneSignalNotificationServiceExtension</summary>

```
21:19:56 [!] Unable to find host target(s) for UnityFramework, OneSignalNotificationServiceExtension. Please add the host targets for the embedded targets to the Podfile.
21:19:57 Certain kinds of targets require a host target. A host target is a "parent" target which embeds a "child" target. These are example types of targets that need a host target:
21:19:57 - Framework
21:19:57 - App Extension
21:19:57 - Watch OS 1 Extension
21:19:57 - Messages Extension (except when used with a Messages Application)
```

**Solution:**

Add *OneSignal* provisioning profiles

</details>

<details>

<summary>Problem: When uploading to Google Play, you see log messages that say, <code>Upload Failed: - The Caller does not have permission</code></summary>

**Solution:**

Wrong credentials selected. Note that Lion Studios has separate Google Play accounts for:

* Lion Studios,
* Lion Studios Plus, and
* HippoTap

Each game needs to use the correct credentials for the account that game is published under. Verify which store account your game is listed under and select those credentials.

</details>

<details>

<summary>Problem: Jenkins build fails due to IO directory not empty</summary>

This issue generally happens when we are trying to do *incremental builds* without using the `delete workspace` option from parameters.

<img src="/files/qd3vBhK0MBZ004vFrKi4" alt="Screenshot 2023-02-22 at 4.20.05 PM.png" data-size="original">

**Solution:**

Rebuild the build with `delete workspace` enabled.

</details>

<details>

<summary>Problem: Jenkins iOS builds and uploads to TestFlight, but the TestFlight build crashes on start</summary>

Error log from console:

```csharp
Error loading /var/containers/Bundle/Application/293CBE8E-0471-4698-A252-1D70A03231DA/TheRealJuggle.app/Frameworks/UnityFramework.framework/UnityFramework (140): dlopen(/var/containers/Bundle/Application/293CBE8E-0471-4698-A252-1D70A03231DA/TheRealJuggle.app/Frameworks/UnityFramework.framework/UnityFramework, 0x0109): Library not loaded: @rpath/FBAEMKit.framework/FBAEMKit
 Referenced from: <36EA6546-8FFC-3C2C-AA37-D7206FDFF548> /private/var/containers/Bundle/Application/293CBE8E-0471-4698-A252-1D70A03231DA/TheRealJuggle.app/Frameworks/UnityFramework.framework/UnityFramework
 Reason: tried: '/usr/lib/swift/FBAEMKit.framework/FBAEMKit' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/FBAEMKit.framework/FBAEMKit' (no such file), '/usr/lib/swift/FBAEMKit.framework/FBAEMKit' (no such file, not in dyld cache), '/private/preboot/Cryptexes/OS/usr/lib/swift/FBAEMKit.framework/FBAEMKit' (no such file), '/private/var/containers/Bundle/Application/293CBE8E-0471-4698-A252-1D70A03231DA/<…>
```

**Solution:**

In `iOS Resolver Settings`, set `Link Frameworks statically` to `false`

</details>

<details>

<summary>Problem: Missing namespaces or classes from SDKs (obsolete)</summary>

Example:

```
20:18:32 Assets/Scripts/_SDKs/FacebookSdk.cs(6,7): error CS0246: The type or namespace name 'Facebook' could not be found (are you missing a using directive or an assembly reference?)
```

This is not necessarily Facebook, it could be other SDK classes or namespaces. The game’s repo probably uses `git-lfs` to store these library files, but the job doesn’t have the GIT LFS pull step.

**Solution:**

In the `Source Code Management` section, click the `Add` button under `Additional Behaviors`, and select `Git LFS pull after checkout`

<img src="/files/XBaBBruJEMuZ1ipQcbBx" alt="image (3).png" data-size="original">

Save the project and it should now use `git-lfs` successfully.

</details>

<details>

<summary>Problem: Local addressables don’t work</summary>

**Solution:**

* Go to Window → Asset Management → Addressables → Settings
  1. Uncheck “Compress Local Catalog”.
  2. Select “Build Addressables content on Player Build” option.

<img src="/files/K69MEBF5WcjmwQ5lf0FD" alt="Untitled" data-size="original">

* Go to Window → Asset Management → Addressables → Groups
  1. Uncheck “Include In Build” for the empty groups that don’t have any assets assigned to it.

<img src="/files/8pxAlbNZ43CZBumRHcsB" alt="Untitled" data-size="original">

* Ask @lion-support to check if the jenkins job is setup for addressables (DELETE\_WORKSPACE should be turned off, and job should be restricted to 1 agent)

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://lionstudios.gitbook.io/readme/features/cloud-build/common-jenkins-build-issues.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
