{"id":291325,"date":"2026-01-05T11:05:22","date_gmt":"2026-01-05T11:05:22","guid":{"rendered":"https:\/\/www.revechat.com\/?post_type=help-center&#038;p=291325"},"modified":"2026-04-29T06:41:37","modified_gmt":"2026-04-29T06:41:37","slug":"android-sdk-integration-in-unity-project","status":"publish","type":"help-center","link":"https:\/\/www.revechat.com\/help-center\/android-sdk-integration-in-unity-project\/","title":{"rendered":"Android SDK integration in Unity Project."},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>To integrate Android SDK with your unity project, please follow the below mentioned steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In Unity project folder, create Assets\/Plugins\/Android\/ folder<\/li>\n\n\n\n<li>Set android related configurations in Unity, from File -&gt; Build Profile (Android platform) and select Player settings.<\/li>\n\n\n\n<li>From player settings do following things\n<ul class=\"wp-block-list\">\n<li>In Other setting, Minimum API Level 24<\/li>\n\n\n\n<li>In Publishing Settings, Check:\n<ul class=\"wp-block-list\">\n<li>Custom Main Gradle Template <\/li>\n\n\n\n<li>Custom Base Gradle Template <\/li>\n\n\n\n<li>Custom Gradle Properties Template <\/li>\n\n\n\n<li>Custom Gradle Settings Template <\/li>\n\n\n\n<li>Custom Proguard File<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>In <strong><em>mainTemplate.gradle<\/em><\/strong>, add the marked lines<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">apply plugin: &#039;com.android.library&#039;\napply from: &#039;..\/shared\/keepUnitySymbols.gradle&#039;\napply from: &#039;..\/shared\/common.gradle&#039;\n**APPLY_PLUGINS**\n\ndependencies {\n    implementation fileTree(dir: &#039;libs&#039;, include: [&#039;*.jar&#039;])\n    \/\/ --- CUSTOM DEPENDENCIES START ---\n    \/\/ Add any Gradle dependencies you need here  \n    \n    implementation &#039;androidx.databinding:databinding-common:8.0.0&#039;\n    implementation &#039;androidx.databinding:databinding-runtime:8.0.0&#039;\n    annotationProcessor &#039;androidx.databinding:databinding-compiler:8.0.0&#039;\n    \n    implementation &#039;androidx.core:core-ktx:1.16.0&#039;\n    implementation &#039;androidx.appcompat:appcompat:1.6.1&#039;\n    implementation &#039;com.google.android.material:material:1.8.0&#039;\n    implementation &#039;androidx.constraintlayout:constraintlayout:2.1.4&#039;\n    testImplementation &#039;junit:junit:4.13.2&#039;\n    androidTestImplementation &#039;androidx.test.ext:junit:1.1.5&#039;\n    androidTestImplementation &#039;androidx.test.espresso:espresso-core:3.5.1&#039;\n    implementation &#039;com.google.firebase:firebase-messaging:24.0.3&#039;\n    implementation(&#039;com.revesoft.revechatsdk:revechatsdk:1.0.1-unity&#039;)  \n    \/\/ --- CUSTOM DEPENDENCIES END ---\n**DEPS**}\n\nandroid {\n    namespace &quot;com.unity3d.player&quot;\n    ndkPath &quot;**NDKPATH**&quot;\n    ndkVersion &quot;**NDKVERSION**&quot;\n\n    compileSdk **APIVERSION**\n    buildToolsVersion = &quot;**BUILDTOOLS**&quot;\n\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_17\n        targetCompatibility JavaVersion.VERSION_17\n    }\n    \n    \n    \/\/ Enable DataBinding here\n    buildFeatures {\n        dataBinding  true\n        viewBinding true\n    }\n\n    defaultConfig {\n        minSdk **MINSDK**\n        targetSdk **TARGETSDK**\n        ndk {\n            abiFilters **ABIFILTERS**\n            debugSymbolLevel **DEBUGSYMBOLLEVEL**\n        }\n        versionCode **VERSIONCODE**\n        versionName &#039;**VERSIONNAME**&#039;\n        consumerProguardFiles &#039;proguard-unity.txt&#039;**USER_PROGUARD**\n**DEFAULT_CONFIG_SETUP**\n    }\n\n    lint {\n        abortOnError false\n    }\n    \n    androidResources {\n        noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(&#039;, &#039;)\n        ignoreAssetsPattern = &quot;!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~&quot;\n    }**PACKAGING**\n}\n\n**IL_CPP_BUILD_SETUP**\n**SOURCE_BUILD_SETUP**\n**EXTERNAL_SOURCES**\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In gradleTemplate.properties<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M\norg.gradle.parallel=true\nunityStreamingAssets=**STREAMING_ASSETS**\nandroid.useAndroidX=true\nandroid.enableJetifier=true\n**ADDITIONAL_PROPERTIES**<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In settingsTemplate.gradle<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">pluginManagement {\n    repositories {\n        **ARTIFACTORYREPOSITORY**\n        gradlePluginPortal()\n        google()\n        mavenCentral()\n    }\n}\n\ninclude &#039;:launcher&#039;, &#039;:unityLibrary&#039;\n**INCLUDES**\n\ndependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)\n    repositories {\n        **ARTIFACTORYREPOSITORY**\n        google()\n        mavenCentral()\n        maven {\n            url &quot;https:\/\/maven.iptelephony.revesoft.com\/artifactory\/libs-release-local\/&quot;\n        }\n        maven {\n            url &quot;https:\/\/jfrog-artifact.revechat.com\/artifactory\/artifactory\/&quot;\n        }\n        maven { url &quot;https:\/\/jitpack.io&quot; }\n        flatDir {\n            dirs &quot;${project(&#039;:unityLibrary&#039;).projectDir}\/libs&quot;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add the script in unity project to start the REVEChat SDK activity<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">using UnityEngine;\nusing System.Collections;   \n\nusing UnityEngine;\nusing System.Collections;\n\npublic class NewMonoBehaviourScript : MonoBehaviour\n{\n    public string accountId =   &quot;2552651&quot;; \n    public string userName = &quot;John Doe&quot;;\n    public string userEmail = &quot;john@example.com&quot;;\n    public string userPhone = &quot;+123456789&quot;;\n\n    void Start()\n    {\n        \/\/ Intentionally empty\n    }\n\n    IEnumerator LaunchReveChatWithDelay()\n    {\n        yield return null;\n        yield return new WaitForSeconds(0.2f);\n        InitiateReveChat();\n    }\n\n    public void InitiateReveChat()\n    {\n        try\n        {\n            \/\/ Step 1: Get ReveChat class\n            AndroidJavaClass reveChatClass =\n                new AndroidJavaClass(&quot;com.revesoft.revechatsdk.utils.ReveChat&quot;);\n            Debug.Log(&quot;ReveChat class found!&quot;);\n\n            \/\/ Step 2: Initialize ReveChat\n            reveChatClass.CallStatic(&quot;init&quot;, accountId);\n            Debug.Log(&quot;ReveChat initialized!&quot;);\n\n            \/\/ Step 3: Create VisitorInfo\n            AndroidJavaObject visitorBuilder =\n                new AndroidJavaObject(&quot;com.revesoft.revechatsdk.model.VisitorInfo$Builder&quot;);\n\n            visitorBuilder\n                .Call&lt;AndroidJavaObject&gt;(&quot;name&quot;, userName)\n                .Call&lt;AndroidJavaObject&gt;(&quot;email&quot;, userEmail)\n                .Call&lt;AndroidJavaObject&gt;(&quot;phoneNumber&quot;, userPhone);\n\n            AndroidJavaObject visitorInfo =\n                visitorBuilder.Call&lt;AndroidJavaObject&gt;(&quot;build&quot;);\n\n            Debug.Log(&quot;VisitorInfo created!&quot;);\n\n            \/\/ Step 4: Set VisitorInfo\n            reveChatClass.CallStatic(&quot;setVisitorInfo&quot;, visitorInfo);\n            Debug.Log(&quot;VisitorInfo set successfully!&quot;);\n\n            \/\/ Step 5: App info\n            reveChatClass.CallStatic(&quot;setAppBundleName&quot;, Application.identifier);\n            reveChatClass.CallStatic(&quot;setAppVersionNumber&quot;, Application.version);\n            reveChatClass.CallStatic(&quot;setApiServiceTitle&quot;, &quot;REVEChatApiService&quot;);\n            reveChatClass.CallStatic(&quot;setApiServiceContent&quot;, &quot;REVEChatApiService&quot;);\n            Debug.Log(&quot;App info &amp; API service set!&quot;);\n\n            \/\/ Step 6: Start ReveChatActivity\n            if (Application.platform == RuntimePlatform.Android)\n            {\n                AndroidJavaClass unityPlayer =\n                    new AndroidJavaClass(&quot;com.unity3d.player.UnityPlayer&quot;);\n                AndroidJavaObject currentActivity =\n                    unityPlayer.GetStatic&lt;AndroidJavaObject&gt;(&quot;currentActivity&quot;);\n\n\n                currentActivity.Call(\n                    &quot;runOnUiThread&quot;,\n                    new AndroidJavaRunnable(() =&gt;\n                    {\n                        AndroidJavaObject intent =\n                            new AndroidJavaObject(&quot;android.content.Intent&quot;);\n\n                        intent.Call&lt;AndroidJavaObject&gt;(\n                            &quot;setClassName&quot;,\n                            currentActivity.Call&lt;string&gt;(&quot;getPackageName&quot;),\n                            &quot;com.revesoft.revechatsdk.ui.activity.ReveChatActivity&quot;\n                        );\n\n\n                       \n                        intent.Call&lt;AndroidJavaObject&gt;(\n                            &quot;addFlags&quot;, 0x10000000 \/\/ FLAG_ACTIVITY_NEW_TASK\n                        );\n\n                        currentActivity.Call(&quot;startActivity&quot;, intent);\n                    })\n                );\n            }\n        }\n        catch (System.Exception e)\n        {\n            Debug.LogError(&quot;Unexpected error in InitiateReveChat: &quot; + e.Message);\n        }\n    }\n}\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To integrate Android SDK with your unity project, please follow the below mentioned steps:<\/p>\n","protected":false},"author":36,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"help_center_type":[1868,1847],"class_list":["post-291325","help-center","type-help-center","status-publish","hentry","help_center_type-mobile-sdk","help_center_type-integrations"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/help-center\/291325","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/help-center"}],"about":[{"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/types\/help-center"}],"author":[{"embeddable":true,"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/users\/36"}],"version-history":[{"count":3,"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/help-center\/291325\/revisions"}],"predecessor-version":[{"id":302878,"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/help-center\/291325\/revisions\/302878"}],"wp:attachment":[{"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/media?parent=291325"}],"wp:term":[{"taxonomy":"help_center_type","embeddable":true,"href":"https:\/\/www.revechat.com\/wp-json\/wp\/v2\/help_center_type?post=291325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}