Build failed related to TapJoy Ad plugin

So we are set up on a windows machine that uses remote build for iOS in 4.6 C++ project. We are able to build and deploy just fine to iOS devices. We just started going down the path to enable TapJoy. I went ahead and enabled the plugin and then modified the games DefaultEngine.ini file for TapJoy. When we do our remote build we are running into the following error:

MainFrameActions: Packaging (iOS): UnrealBuildTool: In file included from /UE4/Builds/APPDEV7/D/UE4/UnrealEngine/Engine/Intermediate/Build/IOS/ciicharm/Shipping/Plugins/Static/IOSTapJoy/Module.IOSTapJoy.cpp:2:
MainFrameActions: Packaging (iOS): UnrealBuildTool: D:\UE4\UnrealEngine\Engine\Plugins\Runtime\Advertising\IOSTapJoy\Source\IOSTapJoy\Private\IOSTapJoy.cpp(5,9): error: ‘…/ThirdPartyFrameworks/Tapjoy.embeddedframework/Tapjoy.framework/Headers/Tapjoy.h’ file not found
MainFrameActions: Packaging (iOS): UnrealBuildTool: #import “…/ThirdPartyFrameworks/Tapjoy.embeddedframework/Tapjoy.framework/Headers/Tapjoy.h”

What can be done to fix this?
Thanks,

Howdy Jeffvoigt,

Thank you for reporting this issue. I have been looking into any past reports about this issue and have found this post: How do I use the TapJoy Plugin - Programming & Scripting - Unreal Engine Forums

I have also found that Jira report UE-3137 has been placed into our bug database and is still currently open. I will be sure to keep you updated as I hear more.

Thanks!

Would you be able to try this in the new 4.7 preview? I am not sure if that will fix all of the issue though.

I saw that and it was 4 months ago. I was hoping there was a solution to this issue. We want to release our game w/Ad support and micro transactions but it is very hard to understand just how to get it all to work for iOS.

Hey ,

I just got word from the developer that the issue is still open and being investigated. He has provided a workaround for the issue though. here is his text:

"The easiest workaround I know of involves getting the Engine source from GitHub, setting TapJoy as enabled as a default by adding

“EnabledByDefault” : true

to Engine\Plugins\Runtime\Advertising\IOSTapJoy\IOSTapJoy.uplugin, and rebuilding the engine for iOS."

Thanks!

So here is the error I get.

http://.ms/

This is after I updated the file like you said. I updated my windows file and did a Package->iOS which then uses the remoteBuildTool to copy/build files on the mac mini.

This is using 4.6 source on a c++ project.

Here is what the cpp file in question looks like along w/the directory structure. It looks like the …/ThirdPartyFrameworks is bad. It looks like it needs to go a few directories back. Is this a bug on your end or is it because I’m doing a RemoteBuild??

http://.ms/

Thanks,

Here is a more updated look. The following shows the folder structure from the remote build:

http://.ms/1x4a8ta

I had to change the #import from :

#import “…/ThirdPartyFrameworks/Tapjoy.embeddedframework/Tapjoy.framework/Headers/Tapjoy.h”

To:

#import “…/…/…/…/…/…/…/…/ciicharm/Intermediate/UnzippedFrameworks/ThirdPartyFrameworks/Tapjoy.embeddedframework/Tapjoy.framework/Headers/Tapjoy.h”

I’m assuming this is due to the nature of using the remotebuildtool. It is the only way we can develop this game though so we need to get this working. After I made the change It was able to build, however, I ran into the next issue related to a TapjoyResources.bundle not being in the right place. I’m not sure how I can address this so I need help w/this as well. Take a look at the latest log record:

http://.ms/1rzMlk8

So I went back and put the import file the way it was and just copied the unzipped folder to the location it was trying to find it (that way I don’t have to change source files). I also copied the folder structure (w/the created bundle) to the folder that it was looking for the bundle…

So I finally got it to build and package. Of course I ran into something else… I loaded it onto my iPAD mini and ran the game… nothing showed up. I have the ShowAdBanner blueprint node firing off on the game modes BeginPlay event right before I do a lot of other things that are executing just fine. I probably missed something else and will try to figure it out…

last comment. I also made sure the DefaultEngine.ini had the following line in it:

[Advertising]
DefaultProviderName=IOSTapJoy

When I run this on a windows machine I will get the error that the IOSTapJoy provider was not found (as is expected) but after building using the remotetool and then deploying to iPAD I still get nothing. I wish I knew for sure if I was getting the same error message or a different one. Is there any way to show those error messages on the iPAD for verification?

Hey ,

The only official way that you may be able to pull log files generated from your iOS would be to use xCode. From there, you should be able to see the error messages, but there is no official way to get xCode on a windows machine. I am sure that there is a way so take caution if you do decide to try it out.

We do have logs on the device. If you can connect it to the mac, you can use Xcode’s Devices window to access the documents directory of the app. In there you will find a Logs directory which holds the log for the last run of the game. If you pull that off the device, you should be able to see if you get the same error message.

-Pete

I’m going to see if 4.7 fixes this but wanted to open it back up since there was never an official fix as of yet.

Howdy ,

Please be sure to let us know if the 4.7 testing still throws this error for you. If you could also include the logs from the device, it would be greatly appreciated.

Thanks and have a great day!

Would love to, however we just ran into this packaging issue w/4.7 from source:

OK. We were able to upgrade, package & deploy to 4.7. I then enabled the TapJoy plugin, closed the editor, added the following line to our games DefaultEngine.ini:

[Advertising]
DefaultProviderName=IOSTapJoy

Then we restarted the editor, packaged (without error). The output log did everything it had to do to install the plugin into the package.

After deploying and running there wasn’t anything that came up. I have a timer that runs every 5 seconds to turn it on/off. It even switches it from top/bottom, etc so every combination is checked.

Is there still a bug that I should do the following in 4.7?

EnabledByDefault : true to Engine\Plugins\Runtime\Advertising\IOSTapJoy\IOSTapJoy.uplugin, and rebuilding the engine for iOS."

Lastly, how do I pull the log files off of the device? I don’t run the device through any debugger since we build remotely (the mac mini) is in another room. Is it possible to pull the logs off from my PC while it is connected to iTunes?

Thanks!

OK. I’m able to pull the log file off of the device now. Here it is:

http://.ms/1Ghf6rr

Here is the repeating error:
[2015.03.03-17.55.04:493][657]LogModuleManager:Warning: ModuleManager: Module ‘IOSAdvertising’ not found - its StaticallyLinkedModuleInitializers function is null.
[2015.03.03-17.55.04:494][657]LogAdvertising:Warning: Failed to find Advertising provider named IOSAdvertising.

Now I can’t figure out why this would be. My source/config/defaultengine.ini, I thought, has the setting correct. This is the file here:

http://.ms/1BEBBE8

What can I be missing? The plug-in is turned on and I can see the build process including it.

To give you even more information. The log file above came from a device dump. I looked around at all other ini files from the device dump. I don’t know which one the game ultimately pulls from but here is what I found:

files with the correct DefaultProviderName (IOSTapJoy) **
ciicharm\config\defaultengine.ini(66)

files with an incorrect DefaultProviderName (IOSAdvertising) **
ciicharm\Intermediate\Config\CoalescedSourceConfigs\Engine.ini(1968) ** engine\config\ios\iosengine.ini(8)

files without any Advertising **ciicharm\Saved\Config\IOS\Engine.ini

I would just like to know if there are any updates to this issue. Thank you very much! (Please look at the last comments as I’ve provided a LOT of new information)

The one in IOSEngine.ini is overriding your DefaultEngine.ini. When we coalesce them DefaultEngine is loaded first and then platform specific are loaded and replace. Create a ciicharm\config\iosengine.ini and add your advertising override there.

-Pete

I would assume then that this issue would be affecting anyone trying to use this since I’m not doing anything special and created a brand new c++ project in 4.7. I will go ahead and add an IOSEngine.ini file to the Config folder and include it in the solution. I will let you know what happens!