Run into the following problem while running test program on Kaa SDK in C:
"[ERROR] [kaa.c:233] (-18) - Profile isn't set"
Try to initialize the "Profile" but can't found profile.h. Anyone has any ideas?
The 'profile' is a Kaa extention and thus is located separately:
https://github.com/kaaproject/kaa/blob/master/client/client-multi/client-c/src/extensions/profile/kaa_profile.h
You might find examples on the extention(s) usage in the Kaa Sample Application repository on GitHub. Also, try Kaa Sandbox that was specially developed for fast and easy startup with Kaa.
Related
Unity editor version: 2019.3.15f1
Firebase Unity SDK version: firebase_unity_sdk_6.15.2
Additional SDKs im using: Unity IAP, Gamesparks, Ironsource, Facebook, Appsflyer, GameAnalytics
Platform im using the Unity editor on: Windows
Platform im targeting: Android
Scripting Runtime: IL2CPP
Problem
I am getting data on firebase analytics, but I cannot get crashlytics to report anything. Im stuck on this...
Steps to reproduce:
Add the firebase analytics and crashlytics sdks.
Add the google-services.json GoogleService-Info.plist files somewhere in assets folder
Add this code to initialise the firebase
// Use this for initialization
void Start ()
{
// Initialize Firebase
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
// Create and hold a reference to your FirebaseApp,
// where app is a Firebase.FirebaseApp property of your application class.
// Crashlytics will use the DefaultInstance, as well;
// this ensures that Crashlytics is initialized.
Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
// Set a flag here for indicating that your project is ready to use Firebase.
VisualDebugger.SetText("crashlytics initialised");
}
else
{
UnityEngine.Debug.LogError(System.String.Format(
"Could not resolve all Firebase dependencies: {0}",dependencyStatus));
VisualDebugger.SetText("crashlytics NOT initialised: " + dependencyStatus);
// Firebase Unity SDK is not safe to use here.
}
});
Invoke("IsCrashEnabled", 5f);
}
void IsCrashEnabled()
{
VisualDebugger.AddLine("IsCrashlyticsCollectionEnabled: "+Firebase.Crashlytics.Crashlytics.IsCrashlyticsCollectionEnabled);
}
In order to get the app to run with the facebook sdk installed Ive added these two lines to proguard-user.txt
-keep public class com.facebook.**{public *; }
-keep public class com.facebook.internal.**{ public *; }
and commented out the following lines from mainTemplate.gradle
//implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
//implementation 'com.android.support:customtabs:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
//implementation 'com.android.support:support-v4:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
When I run the app, firebase is initialised successfully. Also Firebase.Crashlytics.Crashlytics.IsCrashlyticsCollectionEnabled returns true.
I crash the app in a number of different ways, then open it again without reinstalling. But no crash reports are sent.
When I watch logcat when starting the app I see this error from firebase each time the app is opened
2020-09-28 16:18:59.332 25773-25847/? E/FirebaseCrashlytics: Failed to retrieve settings from https://firebase-settings.crashlytics.com/spi/v2/platforms/android/gmp/REDACTEDblahblahblah/settings
Update Oct 19, 2020:
Today a developer updated the issue I linked in this answer saying the Firebase team fixed a backend bug last Friday (Oct 16) that was affecting some new Unity Android apps registering w/ Firebase - likely the bug behind your issue. I had already solved the issue in my own project using the below solution, but if you haven't yet updated your project, I recommend running it again and seeing if Crashlytics is working for you now..
I've been dealing with the same issue this week in Unity 2019.4.11f1 - i see the same error message about not being able to retrieve settings, but with my specific project and appIds in the URL.
I found a solution in this Github issue, which suggests the problem is caused by the version of an android library that is a dependency for the Unity Firebase Crashlytics package. My rough understanding is that the firebase-crashlytics-unity library is a wrapper around android library firebase:firebase-crashlytics, and the unity package allows the underlying native Android code to be used from Unity. Version com.google.firebase:firebase-crashlytics:17.10.0 has issues with getting the settings for some Firebase projects on Android. Myself and several others following this issue found forcing Unity to use this specific dependency at version 17.1.1 resolved the issue.
Someone else with the same issue in the thread contacted Firebase support and was told:
The error you are seeing "Failed to retrieve settings" is related to
the SDK version being used. If you go to "Assets > Firebase > Editor>
CrashlyticsDependencies" you can manually update the SDK to point to
the latest Crashlytics SDK version 17.2.2. Please give it a try and if
you continue having issues, let me know.
It turned out this advice wasn't quite right - some of us following the thread then experienced a different issue when using the Android Crashlytics SDK version 17.2.2 with Unity crashlytics version 6.16.0. So I'd specifically recommend trying out the below suggestion or other solutions in the thread to set your Android crashlytics library to v17.1.1.
Changes I made in my project to address this:
First, I updated my unity firebase packages in the package manager to use version 6.16.0. In my project 4 packages were installed - core, analytics, crashlytics, and messaging.
Then I searched for the the Crashlytics package's dependency file - Crashlytics-Dependencies.xml (found by searching project - was in /Library/PackageCache/com.google.firebase.crashlytics#6.16.0/Firebase/Editor/ for me). This file initally had "com.google.firebase:firebase-crashlytics:17.0.0" listed, which I updated to be: "com.google.firebase:firebase-crashlytics:17.1.1".
As an extra precaution, I also added created a MyProject-Dependencies.xml file, as was suggested by a user in the thread - this file also specifies version "com.google.firebase:firebase-crashlytics:17.1.1".
Next, I modified the Unity build process to use a custom mainTemplate.gradle file to specify dependencies,
rather than using the External Dependency Resolver to manage and
embed unity packages (option in Build Settings > PlayerSettings >
Android).
I also updated the settings on the External Dependency Manager Android Ressolver:
Disabled AutoResolve and Disabled Resolve on Build (we dont want EDM updating dependencies without our knowledge when building)
I also turned disabled AndroidPackageInstallationEnabled - this has made the resolution process much faster and removed a bunch of .aar files from the android dependencies list, and hasn't caused any problems in my project.
I then ran External Dependency Resolver > Android > Force Resolve, which after the settings changes above, should now embed a list of the dependencies for the Android build into the mainTemplate.gradle file - Check this file (its in Assets/Plugins/Android) and you should now see com.google.firebase:firebase-crashlytics:17.1.1 in that list.
Also, I recommend reading this article about managing Unity Firebase dependencies from one of the Firebase developer advocates, Patrick Martin. It helped me wrap my head around how Android dependency management in Unity works, as well as how the Android gradle build process works.
I am pretty new to CI/CD and mm currently struggling with getting VSTS to find my xUnit tests. My solution is a pure experiment, to try and isolate the problem and to learn. Before getting into my setup and what's been done so far, the result is this line in the VSTS build log:
Warning: No test is available in C:\agent\_work\1\s\Quotifier.Models.xUnit.Test\bin\Release\netcoreapp2.0\Quotifier.Models.xUnit.Test.dll. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.
From having googled the message I interpret it as VSTS not being able to find an xUnit test adapter. Is that a correct assumption? Also, I see the terms "test adapter", "test runner" and "test explorer" alot. Are these terms the same thing? Having checked out this article it seems they are indeed the same thing. Can anyone clarify?
Now, for my setup ...
The xUnit test project is a .NET Core 2 class library referencing NUget packages xunit and xunit.runner.visualstudio (2.2.0). The test project is also referencing a shared class library called "Quotifier.Models" which contains the tested code.
To make it easier to diagnose I am running a local (on prem) build agent on my PC. This enables me to investigate the file structure.
The build step of my build definition was initially a "Visual Studio Build" that built the whole solution. I can see that the resulting binaries ends up in
C:\agent\_work\1\s\Quotifier.Models.xUnit.Test\bin\Release\netcoreapp2.0.
Among the binaries are also xunit.runner.visualstudio.dotnetcore.testadapter.dll. Is this the xUnit test adapter VSTS can't find?
More googling tells me that the typical place for the test adapter to be found is in the $(Build.SourcesDirectory)\packages folder and, so, that's what the test step's "Path to custom test adapters" should be set to. That gave me this log entry:
Warning: The path 'C:\agent\_work\1\s\packages' specified in the 'TestAdapterPath' does not contain any test adapters, provide a valid path and try again..
I also checked that local folder and, indeed, the xunit NUget packages does not end up in there. Can anyone guess as to why?
Assuming the xunit.runner.visualstudio.dotnetcore.testadapter.dll is indeed the test adapter VSTS is looking for, I thought I should try and help it a bit. So I created a seperate MSBuild step and specified the output path via the "MSBuild arguments":
/p:OutputPath="$(build.binariesdirectory)/$(BuildConfiguration)/test-assemblies".
I then set the test step's "Path to custom test adapters" property to point at that same folder. With that I'm back to the original warning in the log:
Warning: No test is available in C:\agent\_work\1\b\release\test-assemblies\Quotifier.Models.xUnit.Test.dll. Make sure that installed ... bla ... bla
Now, to summarize ...
running xUnit test projects out of the box doesn't work with VSTS
The xUnit NUget packages does not end up in the /**/packages folder
I am assuming the xunit.runner.visualstudio.dotnetcore.testadapter.dll is the test adapter needed. Is this assumtion correct?
I'm out of ideas for now so any hints, links or suggestions will be greatly appreciated.
Use "dotnet test" to run Your NetCore-UnitTests.
The task is called ".NET Core" and has a command dropdown where you select build/restore/test etc... You also need to add "NET Core Tool Installer" if you are using a hosted agent
And your xunit-packages are not supposed to end up in "packages"-directory. The netcore2 projects handle nuget-packages differently and will reference them from the local nuget-cache
I create app with Realm database (RealmSwift)
When i try build app, there are a lot of errors , experimentally i found several libraries i should link to project for success compilation.
But i don't want to get it for final app version (size of app will very big), what to do ?
These frameworks for example:
CoreVideo.framework
CoreMedia.framework
AudioToolbox.framework
CommLibiOS.a
MediaLibiOS.a
My app doesn't use any video/audo/media features of Realm , i don't know why i need to link it.
If I try to delete for example AudioToolbox.framework from linked list , i have a lot of errors like this:
Undefined symbols for architecture x86_64:
"_AudioComponentFindNext", referenced from:
-[MPAudioUnitEngine voiceAudioUnit] in MediaLibiOS.a(MPAudioUnitEngine.o)
Why Realm needs these libraries?
p.s. sorry for my English
Realm doesn't require linking any of the libraries you've referenced. These must be referenced in your own Xcode project's configuration.
Realm Swift requires the following libraries to be linked: Realm, Foundation & libc++. Following the installation instructions in Realm's documentation should get all this set up properly: https://realm.io/docs/swift/latest/#installation
I suggest you look at some of the Realm example Xcode projects to compare and identify what you may be doing differently. https://github.com/realm/realm-cocoa/tree/master/examples
I am new in xcode.
I got recurring message error when building for testing:
*PWRequest.m
User defined issues
"ARC is required to compile Pushwoosh SDK"*
In code it shows:
#if ! __has_feature(objc_arc)
#error "ARC is required to compile Pushwoosh SDK"
#endif
I don't understand. I added a new pushwoosh sdk.
I thank you very much for your help.
You can set ARC on a file basis. Go to the BuildPhases->CompileSources. You can select sources there and pass ARC flag.
Same as here:
How can I disable ARC for a single file in a project?
but with -fobjc-arc flag
You can use XCode project that comes with the SDK. In this case you'll be linking to the output (library) that is produced by this project.
Hope it helps!
So if you want to use Pushwoosh in your app, you're going to need to turn on ARC in your project settings.
And then you'll be using ARC in your app.
Which is somewhat nicer than doing good old fashioned Manual Retain / Release memory management, yes?
If you are determined to use MRC (manual retain count), then follow the steps in this related question.
Have anyone tried InishTech Software Potential Code Protector ?
Can we integrate this with our build programmatically? I found tutorials but those were to do with the help of the Code Protector standalone GUI. What I want to know is do they have an SDK so that we can integrate with our code or some perfect tutorial which can opt-out dependencies from our setup.
UPDATE: There's been a Getting Started guide that covers code Protection added since I wrote the answer. (Exec summary: You add 2 NuGet packages and then put attributes on what you want to protect and protection is automatically integrated into the build process, be that from within Visual Studio or on a Build Server. Key simplifications are that you no longer need to add a SLPS_PROTECT Symbol or install an SDK anywhere.)
You can use the automatic Protection during building as detailed in the relevant KB article.
This hooks in an MSBuild-based build extension which will feed each assembly EXE/DLL as you compile it into the Command-Line Code Protector when you #define SLPS_PROTECT in Project| settings|Build tab|General area|Conditional compilation symbols (you might only want to do this for the Release configuration).
The Protected code then continues on its way, e.g., into your Setup Project or WebDeploy package.
Typically when using this approach, you declaratively mark the Feature to be associated with each Protected Method using the [Feature] attribute:-
[Feature]
void ProtectedCode()
{
...
}
You may also find further relevant details in the knowledgebase, FAQs and in the forum.
UPDATE: There's a new http://docs.softwarepotential.com/ which provides more focused getting started guides than there were at the time I answered the question. There are also a set of samples up at: https://github.com/SoftwarePotential/samples including installer-related ones.
Any further questions, please feel free to ask - either here or on the forum.
Disclaimer: I work for InishTech.
Code Protector is fantastic product from InishTech
I am using this for my startup and it works great and do it's job extensively well
just go for it