...
# We don’t require Gradle version. But we suggest using 6+.
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
...
app/src/.../MainActivity.kt
The MainActivity should extend FlutterFragmentActivity.
class MainActivity: FlutterFragmentActivity()
app/build.gradle
...
apply from: 'firework.gradle'
New file: app/firework.gradle
android {
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
exclude("META-INF/*.kotlin_module")
}
}
dependencies {
// ads
implementation 'com.github.loopsocial:AndroidAdsService:v20.0.0'
// implementation 'com.github.loopsocial:AndroidAdsService:v19.5.0'
// will crash on Android 12 API 31 if your targetSdkVersion is 31 and the work-runtime-ktx version smaller than 2.7.0
// Please use the work-runtime-ktx version greater than or equal to 2.7.0 if your targetSdkVersion is 31
// implementation 'androidx.work:work-runtime-ktx:2.7.0'
}
// AAPT: error: resource android:attr/lStar not found
// solution 1: some library may dependent on 1.7.x, you can force it to 1.6.0
// solution 2: upgrade compileSdkVersion and targetSdkVersion to 31
configurations.all {
resolutionStrategy {
force 'androidx.core:core-ktx:1.6.0'
force 'androidx.core:core:1.6.0'
}
}
FAQ(frequently asked questions)
Gradle build daemon has been stopped: JVM garbage collector thrashing and after running out of JVM memory. Add the following configuration to the file: gradle.properties.
...
org.gradle.jvmargs=-Xmx4g
If your Gradle plugin version is larger than com.android.tools.build:gradle:4.1.x. Please set the compileSdkVersion = 31 and targetSdkVersion = 31 . And add the following configuration to the file: src/main/AndroidManifest.xml .
> The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0.
Please do:
configurations.all {
resolutionStrategy {
...
force 'androidx.work:work-runtime-ktx:2.2.0'
force 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
}
}
Maybe your compileSdkVersion = 30 and targetSdkVersion = 30 , your Gradle is below 6.9-all and the Gradle plugin is com.android.tools.build:gradle:4.1.x .
Okhttp issue: If you met the issue like below:
/data/app/com.thesouledstore-1b4KZ7kSaE_DlLmco_iLxQ==/base.apk!classes5.dex)
2022-02-25 21:06:33.506 16304-18932/? E/com.newrelic.android: TransactionStateUtil: Attempting to convert network exception java.io.IOException to error code.
2022-02-25 21:06:33.508 16304-18932/? E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
Process: com.thesouledstore, PID: 16304
java.lang.NoSuchMethodError: No static method delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I in class Lokhttp3/internal/Util; or its super classes (declaration of 'okhttp3.internal.Util' appears in /data/app/com.thesouledstore-1b4KZ7kSaE_DlLmco_iLxQ==/base.apk!classes5.dex)
Maybe your okhttp version is 3.x.x . Please do:
Solution: force the version to your app/firework.gradle file, like below:
configurations.all {
resolutionStrategy {
...
force 'com.squareup.okhttp3:okhttp:3.12.12'
force 'com.squareup.okhttp3:logging-interceptor:3.12.12'
force 'com.squareup.okhttp3:okhttp-urlconnection:3.12.12'
}
}
App Id Configuration
iOS
Include the app ID in your app Info.plist file using the key FireworkVideoAppID .
See the image below:
Android
Include the appid in your app AndroidManifest.xml file, like below:
<application
...
>
<activity .../>
...
// Include the app ID
<meta-data
android:name="Firework:Appid"
android:value="your firework appid" />
</application>
SDK Initialization
import'package:fw_flutter_sdk/fw_flutter_sdk.dart';/// Optional: set listener for SDK initFireworkSDK.getInstance().onSDKInit = (event) {};/// It is recommended to call the init method when the application starts, /// e.g. in the initState method of your AppState. /// Init method has one optional parameter: userId.FireworkSDK.getInstance().init();
Video Feed
If you want to integrate a video feed, please follow the instruction here.
Shopping
If you want to integrate video shopping, please follow the instruction here.