Featured image of post Flutter Integration with Umeng: A Step-by-Step Record

Flutter Integration with Umeng: A Step-by-Step Record

Integrating Umeng analytics in Youmengji

Integrating Umeng is a huge pitfall for non-Android developers. Here’s my experience with some common pitfalls like UMConfigure not found, incorrect override syntax in Kotlin (official docs use Java), and misleading official plugins. The actual process is simple:


  1. Start with native integration first - even for Flutter apps. Follow Android integration steps before using any Flutter plugin.
  2. Official documentation: Umeng Android Integration Guide (replace if link expires)
  3. Always use maven automatic integration (repeat 3x) for non-native developers

Native Setup in 3 Steps

  1. Dependency configuration

    • Add to project-level android/build.gradle:
    repositories {
        maven { url 'https://repo1.maven.org/maven2/' }
    }
    
    • Add to app-level android/app/build.gradle:
    dependencies {
        implementation 'com.umeng.umsdk:common:9.4.4'
        implementation 'com.umeng.umsdk:asms:1.4.1'
    }
    
  2. Permissions in android/app/src/main/AndroidManifest.xml:

    <manifest>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <application>
            <meta-data
                android:name="UMENG_APPKEY"
                android:value="YOUR_APP_KEY"/>
        </application>
    </manifest>
    
  3. ProGuard rules in android/app/proguard-rules.pro:

    -keep class com.umeng.** {*;}
    -keepclassmembers class * {
        public <init>(org.json.JSONObject);
    }
    

Native Initialization

In android/app/src/main/kotlin/com/xxxxx/MainActivity.kt:

import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    UMConfigure.preInit(this, "your_app_key", "Umeng")
}

Flutter Initialization

  1. Add dependency in pubspec.yaml:

    dependencies:
      umeng_common_sdk: ^1.2.0
    
  2. Initialize in Dart:

    import 'package:umeng_common_sdk/umeng_common_sdk.dart';
    
    void main() {
      UmengCommonSdk.initCommon('android_app_key', 'ios_app_key', 'Umeng');
      runApp(MyApp());
    }
    
  3. Verify data transmission in Umeng Dashboard

Note: Keep monitoring real-time analytics in Umeng backend to confirm successful integration.