Available in Classic and VPC
Crash when attempting to log in with NAVER ID while building in 64-bit environment (Android builds with API 28 or higher)
- Add the following code to
AndroidManifest.xmlfile.- In case of Unity, edit /Assets/Plugins/Android/AndroidManifest.xml.
// TODO: Put it in the <application> tag. <application> ... <uses-library android:name="org.apache.http.legacy" android:required="false" /> ... </application>
You can replace it with a library patched for the section. gamepot-channel-naver.aar
Play Store APK uploads generate com.nhncorp.nelo2.android.util encryption pattern security alerts
From GAMEPOT SDK 3.3.0, nelo2-android-sdk-https-0.12.0.aar and nelo2-android-sdk-common-0.12.0.aar are equipped, resolving the above issue. However, due to the changed NAVER Cloud ELSA library, you must use the minSDK version 19 or higher.
[For GAMEPOT SDK versions 3.2.0 and earlier]
- Problems that occur due to the obsolete logging library.
- (If you don't use the log feature in the dashboard) Delete the following GAMEPOT SDK libraries.
- gamepot-logger.aar
- nelo2-android-sdk-common-0.10.2.jar
- nelo2-android-sdk-https-0.10.2.jar
Error occurs during iOS Building
The following cases cause an error because the "XXXXXX.framework" has the i386 x86_64 Archive information.
error: Building for iOS, but the linked and embedded framework 'XXXXXX.framework' was built for iOS + iOS Simulator.
This is code that deletes architecture that isn't allowed. If the problem was NaverThirdPartyLogin.framework, work as below to delete it and then proceed with the build.
lipo -remove x86_64 ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin -o ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin
lipo -remove i386 ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin -o ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin
Line i386 x86_64 IOS Archive Upload Issue
From the console (terminal), go to the location of the LineSDK.framework file, and then enter the following commands one by one.
This is code that deletes architecture that isn't allowed.
lipo -remove x86_64 ./LineSDK.framework/LineSDK -o ./LineSDK.framework/LineSDK
lipo -remove i386 ./LineSDK.framework/LineSDK -o ./LineSDK.framework/LineSDK
lipo -remove x86_64 ./LineSDKObjC.framework/LineSDKObjC -o ./LineSDKObjC.framework/LineSDKObjC
lipo -remove i386 ./LineSDKObjC.framework/LineSDKObjC -o ./LineSDKObjC.framework/LineSDKObjC
AdbrixRM i386 x86_64 iOS Build Issue
From the console (terminal), go to the location of the AdBrixRM.framework file, and then enter the following commands one by one.
This is code that deletes architecture that isn't allowed.
lipo -remove x86_64 ./AdBrixRM.framework/AdBrixRM -o ./AdBrixRM.framework/AdBrixRM
lipo -remove i386 ./AdBrixRM.framework/AdBrixRM -o ./AdBrixRM.framework/AdBrixRM
NAVER ID Log-in NaverThirdPartyLogin.framework i386 x86_64 Issue
This is code that deletes architecture that isn't allowed.
lipo -remove x86_64 ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin -o ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin
lipo -remove i386 ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin -o ./NaverThirdPartyLogin.framework/NaverThirdPartyLogin
Android build issues in Unity 2018.4.4 or higher, Unity 2019.2.0 or higher
-
Edit the
mainTemplate.gradlefile as below.- Refer to the TODO field.
// TODO: Remove all places where GradleVersion is used. buildscript { repositories { // if (GradleVersion.current() >= GradleVersion.version("4.2")) { google() jcenter() // } else { // jcenter() // } } dependencies { // if (GradleVersion.current() < GradleVersion.version("4.0")) { // classpath 'com.android.tools.build:gradle:2.1.0' // } else if (GradleVersion.current() < GradleVersion.version("4.2")) { // classpath 'com.android.tools.build:gradle:2.3.0' // } else { // TODO: Change the Android gradle plugin version to 3.4.0. classpath 'com.android.tools.build:gradle:3.4.0' // } classpath 'com.google.gms:google-services:3.2.0' } } allprojects { repositories { flatDir { dirs 'libs' } // if (GradleVersion.current() >= GradleVersion.version("4.2")) { google() jcenter() // } else { // jcenter() // } } } dependencies { // if (GradleVersion.current() >= GradleVersion.version("4.2")) { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(":GamePotResources") implementation project(':Firebase') // } else { // compile fileTree(include: ['*.jar'], dir: 'libs') // compile project(":GamePotResources") // compile project(':Firebase') // } } fileTree(dir: 'libs', include: ['*.aar']) .each { File file -> // println file.name // if (GradleVersion.current() >= GradleVersion.version("4.2")) { dependencies.add("implementation", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar']) // } else { // dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar']) // } } -
Edit files related to Firebase.
- Download the patch file via the Link.
- Copy the file as follows.
/Firebase_patch/Assets/Firebase/Editor Copy the file in the above path to the path below. -> {unity project}/Assets/Firebase/Editor {unity project}/Assets/PlayServicesResolver/Editor Copy the file to the path below after deleting all files in the above path. -> /Firebase_patch/Assets/PlayServicesResolver/Editor - Run Unity again if the /Assets/Plugins/Android/Firebase/res hasn't been created.
(Unity) Application of NAVER Lounge SDK (described based on NaverSDK Ver 1.1.1)
This page describes how to apply the NAVER Lounge SDK in the Unity environment. For a class duplication error, see the NAVER Game FAQ.
-
When applying the Unity plug-in package, exclude the navergame-sdk-1.1.1.aar file or delete it.
../Assets/NGSDK/Plugins/Android/navergame-sdk-1.1.1.aar -
Equipped with Android native NAVER Lounge SDK library
../Assets/Plugins/Android/navergame-sdk-gradle-1.1.1.aar -
Edit mainTemplate.gradle file (add libraries used for NAVER Lounge SDK)
dependencies { .. implementation 'androidx.multidex:multidex:2.0.1' implementation "androidx.recyclerview:recyclerview:1.2.0" implementation "androidx.viewpager2:viewpager2:1.0.0" implementation "com.squareup.retrofit2:retrofit:2.6.4" ... } -
Delete duplicate libraries in ../Assets/Plugins/Android/libs folder (deletion list)
../Assets/Plugins/Android/libs/activity-1.0.0.aar ../Assets/Plugins/Android/libs/annotation-1.1.0.jar ../Assets/Plugins/Android/libs/collection-1.1.0.jar ../Assets/Plugins/Android/libs/core-1.3.0.aar ../Assets/Plugins/Android/libs/core-common-2.1.0.jar ../Assets/Plugins/Android/libs/core-runtime-2.0.0.aar ../Assets/Plugins/Android/libs/customview-1.0.0.aar ../Assets/Plugins/Android/libs/fragment-1.1.0.aar ../Assets/Plugins/Android/libs/lifecycle-common-2.1.0.jar ../Assets/Plugins/Android/libs/lifecycle-livedata-2.0.0.aar ../Assets/Plugins/Android/libs/lifecycle-livedata-core-2.0.0.aar ../Assets/Plugins/Android/libs/lifecycle-runtime-2.1.0.aar ../Assets/Plugins/Android/libs/lifecycle-viewmodel-2.1.0.aar ../Assets/Plugins/Android/libs/loader-1.0.0.aar ../Assets/Plugins/Android/libs/okhttp-4.9.1.jar ../Assets/Plugins/Android/libs/okio-2.8.0.jar ../Assets/Plugins/Android/libs/savedstate-1.0.0.aar ../Assets/Plugins/Android/libs/versionedparcelable-1.1.0.aar ../Assets/Plugins/Android/libs/viewpager-1.0.0.aar ../Assets/Plugins/Android/libs/retrofit-2.5.0.aar -
From NaverSDK version 1.2.X, the NAVER login feature is not available due to a library conflict with the GAMEPOT SDK NAVER login.
-
When reflecting the NaverSDK version 1.3.2
-
Delete duplicated libraries in ../Assets/Plugins/Android/libs folder (deletion list): Depending on the environment, you may need to delete duplicate libraries in your build for the item.
../Assets/Plugins/Android/libs/retrofit-2.5.0.jar ../Assets/Plugins/Android/libs/vectordrawable-animated-1.1.0.aar ../Assets/Plugins/Android/libs/vectordrawable-1.1.0.aar ../Assets/Plugins/Android/libs/savedstate-1.0.0.aar ../Assets/Plugins/Android/libs/media-1.0.0.aar ../Assets/Plugins/Android/libs/browser-1.0.0.aar ../Assets/Plugins/Android/libs/appcompat-resources-1.2.0.aar ../Assets/Plugins/Android/libs/appcompat-1.2.0.aar ../Assets/Plugins/Android/libs/activity-1.0.0.aar ../Assets/Plugins/Android/libs/okio-1.14.0.jar ../Assets/Plugins/Android/libs/okhttp-3.10.0.jar -
Change location of NAVER Lounge SDK library
Before Assets/NGSDK/Plugins/Android/navergamesdk.androidlib/libs/navergame-sdk-gradle-1.3.2.aar -> Change location /Assets/Plugins/Android/navergame-sdk-gradle-1.3.2.aar -
After creating the NaverGameDependencies.xml file in the following path (see the following content for the file content), in Unity, select the Jetifier item from the Assets > Play Services Resolver > Android Resolver > Settings menu.
Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties items must be deselected before running Resolver.
/Assets/Firebase/Editor/NaverGameDependencies.xml<dependencies> <androidPackages> <androidPackage spec="com.squareup.retrofit2:retrofit:2.9.0"> </androidPackage> <androidPackage spec="androidx.viewpager2:viewpager2:1.0.0"> </androidPackage> </androidPackages> </dependencies> -
Place the com.naver.nid.naveridlogin-android-sdk-4.2.6.aar file in the following path to ensure it is included in the build.
/Assets/Plugins/Android/libs/com.naver.nid.naveridlogin-android-sdk-4.2.6.aar
Download: com.naver.nid.naveridlogin-android-sdk-4.2.6.aar -
Edit /Assets/NGSDK/Plugins/iOS/NCSDKUnityManager.mm file
Previous: (NSString *)getAuthSettingDescription { return NNGSDKManager.shared.authSettingDescription; } Edited: - (NSString *)getAuthSettingDescription { return NNGSDKManager.shared.authSettingDescription; } -
Add the following section in launcherTemplate.gradle
packagingOptions {
…..
// 20230322Add cause More than one file was found with OS independent path 'META-INF/kotlin-stdlib-common.kotlin_module'.
exclude("META-INF/*.kotlin_module") //-> Add
...
}
(Unity) GoogleMobileAds SDK application (based on GoogleMobileAds-v6.1.2)
In case of AdMob SDK (Unity), you must import the Unity package and use the Unity Play Services Resolver feature.
select the Use Jetifier item from the Assets > Play Services Resolver > Android Resolver > Settings menu in Unity.
Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties items must be deselected before running Resolver.
In Unity, from the Assets > Play Services Resolver > IOS Resolver > Settings menu,
clear the Add use_frameworks! to podfile/Always add the main target to Podfile field before proceeding with the iOS build.
In case of an overlapping library error, delete one of the libraries.
The list of overlapping libraries:
..Assets/Plugins/Android/libs/annotation-1.1.0.jar
..Assets/Plugins/Android/libs/browser-1.0.0.aar
..Assets/Plugins/Android/libs/core-common-2.1.0.jar
..Assets/Plugins/Android/libs/core-runtime-2.0.0.aar
..Assets/Plugins/Android/libs/core-1.3.0.aar
..Assets/Plugins/Android/libs/coordinatorlayout-1.0.0.aar
..Assets/Plugins/Android/libs/collection-1.1.0.jar
..Assets/Plugins/Android/libs/asynclayoutinflater-1.0.0.aar
..Assets/Plugins/Android/libs/fragment-1.1.0.aar
..Assets/Plugins/Android/libs/drawerlayout-1.0.0.aar
..Assets/Plugins/Android/libs/documentfile-1.0.0.aar
..Assets/Plugins/Android/libs/customview-1.0.0.aar
..Assets/Plugins/Android/libs/cursoradapter-1.0.0.aar
..Assets/Plugins/Android/libs/loader-1.0.0.aar
..Assets/Plugins/Android/libs/lifecycle-viewmodel-2.1.0.aar
..Assets/Plugins/Android/libs/lifecycle-runtime-2.1.0.aar
..Assets/Plugins/Android/libs/lifecycle-livedata-2.0.0.aar
..Assets/Plugins/Android/libs/lifecycle-common-2.1.0.jar
..Assets/Plugins/Android/libs/legacy-support-core-utils-1.0.0.aar
..Assets/Plugins/Android/libs/legacy-support-core-ui-1.0.0.aar
..Assets/Plugins/Android/libs/interpolator-1.0.0.aar
..Assets/Plugins/Android/libs/viewpager-1.0.0.aar
..Assets/Plugins/Android/libs/versionedparcelable-1.1.0.aar
..Assets/Plugins/Android/libs/swiperefreshlayout-1.0.0.aar
..Assets/Plugins/Android/libs/sqlite-framework-2.0.1.aar
..Assets/Plugins/Android/libs/sqlite-2.0.1.aar
..Assets/Plugins/Android/libs/slidingpanelayout-1.0.0.aar
..Assets/Plugins/Android/libs/print-1.0.0.aar
..Assets/Plugins/Android/libs/localbroadcastmanager-1.0.0.aar
..Assets/Plugins/Android/libs/lifecycle-livedata-core-2.0.0.aar
..Assets/Plugins/Android/libs/play-services-basement-17.5.0.aar
..Assets/Plugins/Android/libs/play-services-ads-identifier-17.0.0.aar
..Assets/Plugins/Android/libs/play-services-measurement-sdk-api-18.0.1.aar
..Assets/Plugins/Android/libs/play-services-measurement-impl-18.0.1.aar
..Assets/Plugins/Android/libs/play-services-measurement-base-18.0.1.aar
..Assets/Plugins/Android/libs/play-services-tasks-17.2.0.aar
..Assets/Plugins/Android/libs/play-services-measurement-18.0.1.aar
..Assets/Plugins/Android/libs/play-services-measurement-sdk-18.0.1.aar
..Assets/Plugins/Android/libs/play-services-measurement-api-18.0.1.aar
..Assets/Plugins/IOS/Frameworks/nanopb.framework
(Unity) Appsflyer/Singular SDK application (based on appsflyer-v6.3.2, singular-v4.3.2)
As with other SDKs, UnityAppController class must inherit from only one file in the project you build. If you mount GAMEPOT's Unity plugin package, then it inherits from GamePotAppDelegate.h by default. For ad tools like AppsFlyer or Singular, their libraries also inherit from UnityAppController, which may prevent GAMEPOT SDK from working.
You must edit so it would inherit from only one file. The two ways to edit it are as follows.
How to edit it manually
Download the following file and edit it as shown below.
How to download files and import them to project
Download following files and import them to the project.
(Unity) When applying Firebase SDK separately
Descriptions based on Firebase Unity 11.6.0 or earlier
When the Unity Editor’s version is lower than 2019.X, patch it before going forward.
Patch download: Patch download
[Replace folders and files]
../Assets/ExternalDependencyManager
../Assets/Firebase
- Folder name modification due to Firebase library replacement
Existing: ../Assets/Plugins/Android/Firebase
Edited: ../Assets/Plugins/Android/FirebaseApp.androidlib
- Edit mainTemplate.gradle (edited based on the change of the folder name).
Previous:
dependencies {
...
implementation project('Firebase')
Edited:
dependencies {
...
implementation project('FirebaseApp.androidlib')
...
- There are some Firebase SDKs in the GAMEPOT Unity plugin package, so when you install a separate Firebase SDK, an error occurs due to library duplication.
You need to import the Firebase Unity SDK (FirebaseAnalytics.unitypackage/FirebaseMessaging.unitypackage + Firebase SDK you want to add) and use the Unity Play Services Resolver feature.
select the Use Jetifier item from the Assets > Play Services Resolver > Android Resolver > Settings menu in Unity.
Enable Resolution On Build / Enable Auto-Resolution / Patch gradle Template.properties items must be deselected before running Resolver.
In Unity, in the Assets > Play Services Resolver > IOS Resolver > Settings menu, clear the Add use_frameworks! to podfile/Always add the main target to Podfile field and proceed with the iOS build.
- Must delete overlapping library files:
../Assets/Plugins/Android/libs/viewpager-1.0.0.aar
../Assets/Plugins/Android/libs/versionedparcelable-1.1.0.aar
../Assets/Plugins/Android/libs/transport-runtime-2.2.5.aar
../Assets/Plugins/Android/libs/transport-backend-cct-2.3.3.aar
../Assets/Plugins/Android/libs/transport-api-2.2.1.aar
../Assets/Plugins/Android/libs/swiperefreshlayout-1.0.0.aar
../Assets/Plugins/Android/libs/slidingpanelayout-1.0.0.aar
../Assets/Plugins/Android/libs/print-1.0.0.aar
../Assets/Plugins/Android/libs/play-services-tasks-17.2.0.aar
../Assets/Plugins/Android/libs/play-services-stats-17.0.0.aar
../Assets/Plugins/Android/libs/play-services-measurement-sdk-api-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-measurement-sdk-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-measurement-impl-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-measurement-base-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-measurement-api-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-measurement-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-cloud-messaging-16.0.0.aar
../Assets/Plugins/Android/libs/play-services-basement-17.5.0.aar
../Assets/Plugins/Android/libs/play-services-base-17.5.0.aar
../Assets/Plugins/Android/libs/play-services-ads-identifier-17.0.0.aar
../Assets/Plugins/Android/libs/localbroadcastmanager-1.0.0.aar
../Assets/Plugins/Android/libs/loader-1.0.0.aar
../Assets/Plugins/Android/libs/lifecycle-viewmodel-2.1.0.aar
../Assets/Plugins/Android/libs/lifecycle-runtime-2.1.0.aar
../Assets/Plugins/Android/libs/lifecycle-livedata-core-2.0.0.aar
../Assets/Plugins/Android/libs/lifecycle-livedata-2.0.0.aar
../Assets/Plugins/Android/libs/lifecycle-common-2.1.0.jar
../Assets/Plugins/Android/libs/legacy-support-core-utils-1.0.0.aar
../Assets/Plugins/Android/libs/legacy-support-core-ui-1.0.0.aar
../Assets/Plugins/Android/libs/javax.inject-1.jar
../Assets/Plugins/Android/libs/interpolator-1.0.0.aar
../Assets/Plugins/Android/libs/fragment-1.1.0.aar
../Assets/Plugins/Android/libs/firebase-messaging-21.0.1.aar
../Assets/Plugins/Android/libs/firebase-measurement-connector-18.0.0.aar
../Assets/Plugins/Android/libs/firebase-installations-interop-16.0.1.aar
../Assets/Plugins/Android/libs/firebase-installations-16.3.5.aar
../Assets/Plugins/Android/libs/firebase-iid-interop-17.0.0.aar
../Assets/Plugins/Android/libs/firebase-iid-21.0.1.aar
../Assets/Plugins/Android/libs/firebase-encoders-json-17.1.0.aar
../Assets/Plugins/Android/libs/firebase-encoders-16.1.0.jar
../Assets/Plugins/Android/libs/firebase-datatransport-17.0.10.aar
../Assets/Plugins/Android/libs/firebase-core-18.0.1.aar
../Assets/Plugins/Android/libs/firebase-components-16.1.0.aar
../Assets/Plugins/Android/libs/firebase-common-19.5.0.aar
../Assets/Plugins/Android/libs/firebase-annotations-16.0.0.jar
../Assets/Plugins/Android/libs/firebase-analytics-18.0.1.aar
../Assets/Plugins/Android/libs/drawerlayout-1.0.0.aar
../Assets/Plugins/Android/libs/documentfile-1.0.0.aar
../Assets/Plugins/Android/libs/customview-1.0.0.aar
../Assets/Plugins/Android/libs/cursoradapter-1.0.0.aar
../Assets/Plugins/Android/libs/core-runtime-2.0.0.aar
../Assets/Plugins/Android/libs/core-common-2.1.0.jar
../Assets/Plugins/Android/libs/core-1.3.0.aar
../Assets/Plugins/Android/libs/coordinatorlayout-1.0.0.aar
../Assets/Plugins/Android/libs/collection-1.1.0.jar
../Assets/Plugins/Android/libs/asynclayoutinflater-1.0.0.aar
../Assets/Plugins/Android/libs/annotation-1.1.0.jar
../Assets/Plugins/IOS/Frameworks/nanopb.framework
../Assets/Plugins/IOS/Frameworks/FirebaseNanoPB.framework
../Assets/Plugins/IOS/Frameworks/FirebaseMessaging.framework
../Assets/Plugins/IOS/Frameworks/FirebaseInstanceID.framework
../Assets/Plugins/IOS/Frameworks/FirebaseCoreDiagnostics.framework
../Assets/Plugins/IOS/Frameworks/FirebaseCore.framework
../Assets/Plugins/IOS/Frameworks/FirebaseAnalytics.framework
- Check if code related to FCM is applied in ../Assets/Plugins/Android/AndroidManifest.xml.
....
</activity>
<!-- FCM [start]-->
<service
android:exported="false"
android:name="io.gamepot.common.GamePotFCMIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service
android:exported="false"
android:name="io.gamepot.common.GamePotFCMService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<!-- FCM [End]-->
...
<meta-data android:name="android.max_aspect" android:value="2.1" />
- Additional changes to iOS builds when applying Firebase Unity 9.4.0 or higher
In the Unity Editor, find the Podfile file in the output after the iOS build, and edit it in the following format (if you have other libraries, add :modular_headers -> true).
Firebase, FirebaseCore, and GoogleUtilities must be added as shown in the example.
Example)
[Existing]
...
target 'UnityFramework' do
pod 'Firebase/Analytics', '9.4.0'
pod 'Firebase/Core', '9.4.0'
pod 'Firebase/Messaging', '9.4.0'
end
[Edit]
target 'UnityFramework' do
pod 'Firebase/Analytics', '9.4.0' , :modular_headers => true
pod 'Firebase/Core', '9.4.0' , :modular_headers => true
pod 'Firebase/Messaging', '9.4.0' , :modular_headers => true
pod 'Firebase', :modular_headers => true
pod 'FirebaseCore', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true
end
Open the terminal, go the path where the Podfile file is located, run the pos install command, and when the Unity-iPhone.xcworkspace is created, proceed to build the project.
$ pod install
Descriptions based on Firebase Unity 11.6.0 or later
If your GAMEPOT version is 3.5.3 or earlier, first apply the patch to 3.6.3.
Download: Patch download
See gamepotGuide-Gamepot v3.6.0.pdf.
- There are some Firebase SDKs in the GAMEPOT Unity plugin package, so when you install a separate Firebase SDK, an error occurs due to library duplication.
You need to import the Firebase Unity SDK (FirebaseAnalytics.unitypackage/FirebaseMessaging.unitypackage + Firebase SDK you want to add) and use the Unity Play Services Resolver feature.
[Android]
a. Select the Use Jetifier item from the Assets > Play Services Resolver > Android Resolver > Settings menu in Unity.
b. Enable Resolution On Build, Enable Auto-Resolution, Patch gradle Template.properties items must be deselected before running Resolver.
[iOS]
a. In Unity, in the Assets > Play Services Resolver > IOS Resolver > Settings menu, clear the Add use_frameworks! to podfile/Always add the main target to Podfile field and proceed with the iOS build.
- Need to delete duplicate library files
- Duplicate error example
Duplicate class android.support.v4.app.RemoteActionCompatParcelizer found in modules jetified-androidx.core.core-1.9.0-runtime (:androidx.core.core-1.9.0:) and jetified-core-1.3.2-runtime (:core-1.3.2:)
- List of duplicate libraries
[Android/libs/..]
annotations-13.0.jar
core-1.3.2.aar
core-ktx-1.3.2.aar
annotation-experimental-1.0.0.aar
core-runtime-2.1.0.aar
core-common-2.1.0.jar
collection-1.1.0.jar
customview-1.0.0.aar
documentfile-1.0.0.aar
fragment-1.3.0.aar
lifecycle-common-2.3.0.jar
lifecycle-livedata-2.0.0.aar
legacy-support-core-utils-1.0.0.aar
loader-1.0.0.aar
print-1.0.0.aar
versionedparcelable-1.1.0.aar
viewpager-1.0.0.aar
lifecycle-livedata-2.0.0.aar
lifecycle-runtime-2.3.0.aar
localbroadcastmanager-1.0.0.aar
transport-api-3.0.0.aar
transport-backend-cct-3.1.7.aar
transport-runtime-3.1.7.aar
play-services-cloud-messaging-16.0.0.aar
play-services-base-18.0.1.aar
play-services-basement-18.1.0.aar
play-services-ads-identifier-17.0.0.aar
play-services-measurement-18.0.1.aar
play-services-measurement-sdk-api-18.0.1.aar
play-services-measurement-base-18.0.1.aar
play-services-measurement-api-18.0.1.aar
play-services-measurement-impl-18.0.1.aar
play-services-measurement-sdk-18.0.1.aar
play-services-stats-17.0.2.aar
play-services-tasks-18.0.1.aar
firebase-analytics-18.0.1.aar
firebase-annotations-16.1.0.jar
firebase-common-20.1.2.aar
firebase-components-17.0.1.aar
firebase-measurement-connector-19.0.0.aar
firebase-datatransport-18.1.6.aar
firebase-encoders-17.0.0.jar
firebase-encoders-json-18.0.0.aar
firebase-encoders-proto-16.0.0.jar
firebase-iid-21.1.0.aar
firebase-iid-interop-17.1.0.aar
firebase-installations-17.0.2.aar
firebase-installations-interop-17.0.2.aar
firebase-messaging-23.0.8.aar
jsr305-3.0.1.jar
javax.inject-1.jar
kotlin-stdlib-1.5.31.jar
kotlin-stdlib-common-1.5.31.jar
kotlin-stdlib-jdk7-1.5.31.jar
kotlin-stdlib-jdk8-1.5.31.jar
[Android/..]
androidx.activity.activity-1.0.0.aar
androidx.lifecycle.lifecycle-viewmodel-2.1.0.aar
androidx.lifecycle.lifecycle-livedata-core-2.0.0.aar
androidx.savedstate.savedstate-1.0.0.aar
- Add the contents of ../Assets/Plugins/Android/baseProjectTemplate
plugins {
...
// Add the dependency for the Crashlytics Gradle plugin
id 'com.google.firebase.crashlytics' version "2.9.9" apply false
...
<meta-data android:name="android.max_aspect" android:value="2.1" />
- Check to make sure that the following contents are present in ../Assets/Plugins/Android/gradleTemplate
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
unityStreamingAssets=**STREAMING_ASSETS**
# Android Resolver Properties Start
android.useAndroidX=true
android.enableJetifier=true
# Android Resolver Properties End
**ADDITIONAL_PROPERTIES**
android.useAndroidX=true
android.enableJetifier=true
- Add the following contents of in ./Assets/Plugins/Android/launcherTemplate
// Add the Crashlytics Gradle plugin
apply plugin: 'com.google.firebase.crashlytics'
dependencies {
...
android {
...
packagingOptions {
...
exclude 'META-INF/kotlinx_coroutines_core.version'
}
}
- Add the following contents in ./Assets/Plugins/Android/mainTemplate
android {
...
packagingOptions {
exclude 'META-INF/kotlinx_coroutines_core.version'
}
}
- Add settingsTemplate in ../Assets > Plugins > Android and enter the following contents
pluginManagement {
repositories {
**ARTIFACTORYREPOSITORY**
gradlePluginPortal()
google()
mavenCentral()
}
}
include ':launcher', ':unityLibrary'
**INCLUDES**
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
**ARTIFACTORYREPOSITORY**
google()
mavenCentral()
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
}
}
(Unity) When using minify among the Unity Editor options
Regarding the GAMEPOT aspect, you will need to exclude all GAMEPOT related content from your Proguard File.
Select the Custom Proguard File setting in the Build Settings > Player Settings > Player > Publishing Settings > Build menu,
and further define the following according to the library you are using.
Following content:
-keep class io.gamepot.common.GamePot { *; }
-keep class io.gamepot.common.GamePotAppStatus { *; }
-keep class io.gamepot.common.GamePotError { *; }
-keep class io.gamepot.common.GamePotLicenseRestfulRequest { *; }
-keep class io.gamepot.common.GamePotLog { *; }
-keep class io.gamepot.common.GamePotSharedPref { *; }
-keep class io.gamepot.common.GamePotPurchaseDetailList { *; }
-keep class io.gamepot.common.GamePotAgreeBuilder { *; }
-keep class io.gamepot.common.GamePotAgreeInfo { *; }
-keep class io.gamepot.common.GamePotLocalPushBuilder { *; }
-keep class io.gamepot.common.GamePotNoticeDialog { *; }
-keep class io.gamepot.common.GamePotChat { *; }
-keep class io.gamepot.common.GamePotChatMessage { *; }
-keep class io.gamepot.common.GamePotLocale { *; }
-keep class io.gamepot.common.GamePotPurchaseInfo { ; }
-keep class io.gamepot.common.GamePotUtils { ; }
-keep class io.gamepot.common.LinkingsQuery$ { ; }
-keep class io.gamepot.common.GamePotPermission { ; }
-keep public interface io.gamepot.common. {;}
-keep class io.gamepot.unity.plugin.GamePotUnityPlugin$SDK { *; }
-keep class com.google.firebase.FirebaseApp { *; }
-keep class io.gamepot.channel.** { *; }
-keep class io.gamepot.channel.google.signin { *; }
-keep class com.google.firebase.iid { *; }
-keep class com.android.billingclient { *; }
-keep class com.android.billingclient.api { *; }
-keep class com.google.gms.** {*;}
-keep class com.google.android.gms.auth.** { *; }
-keep class com.gaa.sdk.iap.** { ; }
-keep class com.gaa.iap.sdk.unity.* { *; }
-keep class com.samsung.android { *; }
-dontwarn com.samsung.**
App installation failure with the following error when updating android, targetsdkversion to 31 or later
Example:
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: Failed parse during installPackageLI: /data/app/XXXXXXXX.tmp/base.apk (at Binary XML file line #445): io.gamepot.common.GamePotFCMIDService: Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present]
You need to define android:exported in AndroidManifest.xml.
Add the following text. If you have anything else that uses activty, service, or receiver, you'll need to define it for that purpose as well.
<Example>
<service
android:exported="false"
android:name="io.gamepot.common.GamePotFCMIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service
android:exported="false"
android:name="io.gamepot.common.GamePotFCMService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<!-- If you're not using the ELSA service, delete the following text. Proceed so that gamepot-logger.aar is not included in the build. [start]-->
<receiver
android:exported="false"
android:name="com.navercorp.nelo2.android.util.NetworkStatusReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
<!-- If you're not using the ELSA service, delete the following text. Proceed so that gamepot-logger.aar is not included in the build. [end]-->
<!-- If you're not using NAVER login, delete the following text. [start]-->
<activity android:exported="true" android:configChanges="orientation|screenSize" android:launchMode="singleTask" android:name="com.nhn.android.naverlogin.ui.OAuthCustomTabActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="authorize" android:path="/" android:scheme="naver3rdpartylogin"/>
</intent-filter>
</activity>
<!-- If you're not using NAVER login, delete the following text. [end]-->
For Unreal
In the GenerateManifest() function inside Engine/Source/Programs/UnrealBuildTool/Platform/Android/UEDeployAndroid.cs, add the following code after determining the context in which you are creating the manifest.
Example:
.......
// Add GAMEPOT-related tags [start]
Text.AppendLine("\t\t<service android:exported=\"false\" android:name=\"io.gamepot.common.GamePotFCMIDService\">");
Text.AppendLine("\t\t <intent-filter>");
Text.AppendLine("\t\t <action android:name=\"com.google.firebase.INSTANCE_ID_EVENT\"/>");
Text.AppendLine("\t\t </intent-filter>");
Text.AppendLine("\t\t</service>");
Text.AppendLine("\t\t<service android:exported=\"false\" android:name=\"io.gamepot.common.GamePotFCMService\">");
Text.AppendLine("\t\t <intent-filter>");
Text.AppendLine("\t\t <action android:name=\"com.google.firebase.MESSAGING_EVENT\"/>");
Text.AppendLine("\t\t </intent-filter>");
Text.AppendLine("\t\t</service>");
// Add GAMEPOT-related tags [end]
.......
// Required for OBB download support
If you use Facebook login and get Pending Intent error
This is reflected in version 3.5.3 of the GAMEPOT SDK. If you are using an earlier version, then please check this separately.
[For GAMEPOT SDK V3.4.2]
After upgrading the SDK to version V3.4.2, replace and delete the duplicate library files below. This may vary depending on the version you are using. See the following for differences in the environment variables you need to set within gradle.
This must be entered additionally.
resValue "string", "facebook_client_token", "" // Facebook console > App > Settings > Advanced settings > Client token optional (facebook)
[Unity patch]
Related fix patch: Download
Delete: patches as of GAMEPOT SDK 3.4.2 (Depending on when you apply GAMEPOT, you may need to delete additional duplicate libraries separately. )
../Assets/Plugins/Android/libs/activity-1.0.0.aar
../Assets/Plugins/Android/libs/core-1.3.0.aar
../Assets/Plugins/Android/libs/core-runtime-2.0.0.aar
../Assets/Plugins/Android/libs/facebook-android-sdk-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-applinks-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-common-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-core-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-gamingservices-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-login-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-messenger-8.2.0.aar
../Assets/Plugins/Android/libs/facebook-share-8.2.0.aar
../Assets/Plugins/Android/libs/kotlin-stdlib-common-1.3.31.jar
../Assets/Plugins/Android/libs/kotlin-stdlib-1.3.31.jar
../Assets/Plugins/Android/libs/kotlin-stdlib-jdk7-1.3.31.jar
../Assets/Plugins/Android/libs/lifecycle-common-2.1.0.jar
../Assets/Plugins/Android/libs/lifecycle-livedata-core-2.0.0.aar
../Assets/Plugins/Android/libs/lifecycle-runtime-2.1.0.aar
../Assets/Plugins/Android/libs/lifecycle-viewmodel-2.1.0.aar
../Assets/Plugins/Android/libs/okhttp-3.10.0.jar
../Assets/Plugins/Android/libs/okio-1.14.0.jar
../Assets/Plugins/Android/libs/savedstate-1.0.0.aar
Add and replace:
../Assets/Plugins/Android/libs/gamepot-channel-facebook.aar
../Assets/Plugins/Android/libs/activity-1.2.0.aar
../Assets/Plugins/Android/libs/annotation-experimental-1.0.0.aar
../Assets/Plugins/Android/libs/converter-gson-2.5.0.jar
../Assets/Plugins/Android/libs/core-1.3.2.aar
../Assets/Plugins/Android/libs/core-ktx-1.3.2.aar
../Assets/Plugins/Android/libs/core-runtime-2.1.0.aar
../Assets/Plugins/Android/libs/facebook-android-sdk-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-applinks-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-bolts-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-common-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-core-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-gamingservices-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-login-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-messenger-13.2.0.aar
../Assets/Plugins/Android/libs/facebook-share-13.2.0.aar
../Assets/Plugins/Android/libs/kotlin-stdlib-1.5.10.jar
../Assets/Plugins/Android/libs/kotlin-stdlib-common-1.5.10.jar
../Assets/Plugins/Android/libs/kotlin-stdlib-jdk7-1.5.10.jar
../Assets/Plugins/Android/libs/kotlin-stdlib-jdk8-1.5.10.jar
../Assets/Plugins/Android/libs/lifecycle-common-2.3.0.jar
../Assets/Plugins/Android/libs/lifecycle-livedata-core-2.3.0.aar
../Assets/Plugins/Android/libs/lifecycle-runtime-2.3.0.aar
../Assets/Plugins/Android/libs/lifecycle-viewmodel-2.3.0.aar
../Assets/Plugins/Android/libs/lifecycle-viewmodel-savedstate-2.3.0.aar
../Assets/Plugins/Android/libs/okhttp-4.9.1.jar
../Assets/Plugins/Android/libs/okio-2.8.0.jar
../Assets/Plugins/Android/libs/pageindicatorview-1.0.0.aar
../Assets/Plugins/Android/libs/retrofit-2.5.0.jar
../Assets/Plugins/Android/libs/savedstate-1.1.0.aar
../Assets/Plugins/Android/libs/tracing-1.0.0.aar
[Unreal patch]
Related fix patch: Download
- Replace the fix patch file (gamepot-channel-facebook.aar)
- Fix Facebook-related versions in GamePot_Android_UPL.xml file
…
<insertValue value="com.facebook.android,facebook-android-sdk,13.2.0"/>
…
implementation 'com.facebook.android:facebook-android-sdk:13.2.0'
…
resValue "string", "facebook_client_token", "" // Facebook console > App > Settings > Advanced settings > Client token optional (facebook)
[Android native patch]
Related fix patch: Download
- Replace the fix patch file (gamepot-channel-facebook.aar)
- Fix Facebook-related versions and add environment variables in build.gradle
dependencies {
...
implementation 'com.facebook.android:facebook-android-sdk:13.2.0'
defaultConfig {
....
resValue "string", "facebook_client_token", "" // Facebook console > App > Settings > Advanced settings > Client token optional (facebook)
When Unity firebase Message Intent error occurs
Related fix patch: Download
[Deleted]
../Assets/Plugins/Android/libs/firebase-annotations-16.0.0.jar
../Assets/Plugins/Android/libs/firebase-common-19.5.0.aar
../Assets/Plugins/Android/libs/firebase-components-16.1.0.aar
../Assets/Plugins/Android/libs/firebase-datatransport-17.0.10.aar
../Assets/Plugins/Android/libs/firebase-encoders-16.1.0.jar
../Assets/Plugins/Android/libs/firebase-encoders-json-17.1.0.aar
../Assets/Plugins/Android/libs/firebase-iid-21.0.1.aar
../Assets/Plugins/Android/libs/firebase-iid-interop-17.0.0.aar
../Assets/Plugins/Android/libs/firebase-installations-16.3.5.aar
../Assets/Plugins/Android/libs/firebase-installations-interop-16.0.1.aar
../Assets/Plugins/Android/libs/firebase-measurement-connector-18.0.0.aar
../Assets/Plugins/Android/libs/firebase-messaging-21.0.1.aar
../Assets/Plugins/Android/libs/play-services-base-17.5.0.aar
../Assets/Plugins/Android/libs/play-services-basement-17.5.0.aar
../Assets/Plugins/Android/libs/play-services-stats-17.0.0.aar
../Assets/Plugins/Android/libs/play-services-tasks-17.2.0.aar
../Assets/Plugins/Android/libs/transport-api-2.2.1.aar
../Assets/Plugins/Android/libs/transport-backend-cct-2.3.3.aar
../Assets/Plugins/Android/libs/transport-runtime-2.2.5.aar
[Add]
../Assets/Plugins/Android/libs/firebase-annotations-16.1.0.jar
../Assets/Plugins/Android/libs/firebase-common-20.1.2.aar
../Assets/Plugins/Android/libs/firebase-components-17.0.1.aar
../Assets/Plugins/Android/libs/firebase-datatransport-18.1.6.aar
../Assets/Plugins/Android/libs/firebase-encoders-17.0.0.jar
../Assets/Plugins/Android/libs/firebase-encoders-json-18.0.0.aar
../Assets/Plugins/Android/libs/firebase-encoders-proto-16.0.0.jar
../Assets/Plugins/Android/libs/firebase-iid-21.1.0.aar
../Assets/Plugins/Android/libs/firebase-iid-interop-17.1.0.aar
../Assets/Plugins/Android/libs/firebase-installations-17.0.2.aar
../Assets/Plugins/Android/libs/firebase-installations-interop-17.0.2.aar
../Assets/Plugins/Android/libs/firebase-measurement-connector-19.0.0.aar
../Assets/Plugins/Android/libs/firebase-messaging-23.0.8.aar
../Assets/Plugins/Android/libs/play-services-base-18.0.1.aar
../Assets/Plugins/Android/libs/play-services-basement-18.1.0.aar
../Assets/Plugins/Android/libs/play-services-stats-17.0.2.aar
../Assets/Plugins/Android/libs/play-services-tasks-18.0.1.aar
../Assets/Plugins/Android/libs/transport-api-3.0.0.aar
../Assets/Plugins/Android/libs/transport-backend-cct-3.1.7.aar
../Assets/Plugins/Android/libs/transport-runtime-3.1.7.aar
If you're not receiving push settings on Android OS 13 devices
Starting with Android OS 13, the android.permission.POST_NOTIFICATIONS permission is required to display push notifications. If your app is built with Targetsdk 31, the OS will display a pop-up about obtaining the permission internally once when the app receives a push in the foreground.
The feature to obtain the android.permission.POST_NOTIFICATIONS permission is not supported by the GAMEPOT SDK.
You will need to develop your app separately to obtain the android.permission.POST_NOTIFICATIONS permission at a specific point in time (e.g., upon completion of Terms and Conditions agreement or upon app launch). If the user declines, then you need to provide guidance on how push notifications won't show up unless they manually re-enable the notification permission in the app settings.
Types of personal information collected by GAMEPOT SDK
By Google Store App content field
App communication is encrypted using HTTPS communication. If there is an unsubscribe feature, it deletes the member information upon unsubscribe completion. Select the App features field. Note that it is only used as a functional element of the app and doesn't use the account management feature.
-
Personal Information
- Email address
- User ID
-
Device or other ID
- Device or other ID
-
Pictures or Videos
- Photo
- Video
By the personal information collected by Apple Store App
- Identifier
- User ID (account information)
- Device ID (IDFA, auto generated)
- Purchased item
- User contents
- Photos or video
- Support
For user content, this applies to customers who use GAMEPOT PRO or higher, when they use the GAMEPOT customer inquiry UI. If you use the Object Storage function, you can upload an image file for CS.
Update on crashing after login on iOS 18 when building with Xcode 16
This is a guide to deploying GAMEPOT v3.6.2 in response to the iOS 18 full version crash issue.
We believe that the issue is caused by a change in behavior due to the iOS 18 full version update, so be sure to apply the updated GAMEPOT version v3.6.2 to Unity and iOS Native as it resolves the above issue.
If you have an existing GAMEPOT version already in use, please contact us before applying.
Identified error
Thread 1: "View was already initialized: <GamePotAgreeView: 0x11651af80; frame = (0 0; 0 0); layer = <CALayer: 0x3030d9640>>"
There is nothing wrong with the Agree to Terms pop-up feature provided by GAMEPOT itself, but it occurs unexpectedly in the changed environment of the iOS 18 full version.
- Occurrence frequency: This crash only occurs when building with Xcode version 16 and the device version is iOS 18, with a 100% occurrence rate.
It worked fine on versions prior to iOS 18 and did not occur in iOS 18 Beta.
Occurrence case
The issue occurs during the Agree to Terms pop-up, causing a freeze on login. There is nothing wrong with the Agree to Terms pop-up feature provided by GAMEPOT itself, but it is an unexpected issue that occurred in the changed environment of the iOS 18 full version.
Occurrence conditions
- Xcode 16
- iOS 18
- Use the Agree to Terms UI GamePot.setAgreeInfo provided by GAMEPOT
- If you don't use GAMEPOT's own Terms and Conditions (GamePot.setAgreeInfo), you won't get this error.
- It works fine in Xcode 16/iOS 18 with SetAutoAgree set to false.
Apply Unity SDK/iOS SDK
- Unity SDK
This section describes how to apply the Unity GAMEPOT SDK v3.6.2.
[Download Unity SDK]
Follow the steps below to import the Unity package into your project.
- In Unity, click the Assets > Import Package > Custom Package... menu.
- Open the downloaded GAMEPOT_UNITY_SDK_20240925_362.unitypackage.
- When the Import Unity Package pop-up appears, select all the items in the package and import them.
- iOS SDK
This section describes how to apply the iOS Native GAMEPOT SDK v3.6.2.
[Download iOS SDK]
The following describes how to install GAMEPOT iOS SDK and configure a project in Xcode.
- Click the file to download it.
- Run Xcode, and open the game project.
- Decompress the downloaded SDK file, and then drag-and-drop it to the folder of the created project.