Android 集成说明
1. 导入 SDK
1.1 下载 SDK 并配置 maven 源
由于目前处于公测阶段,因此 SDK 需要通过本地 maven 源的方式引入。首先前往此处下载最新的 SDK 文件,将获取到的 aar 包和 pom 文件放置在工程的 app/libs 目录下,完整的目录结构如下所示:
app
└── libs
└── com
└── tencent
└── luggage
└── wxa-standalone-open-runtime-SaaA-sdk
└── 0.4.5
├── wxa-standalone-open-runtime-SaaA-sdk-0.4.5.aar
└── wxa-standalone-open-runtime-SaaA-sdk-0.4.5.pom
在工程的 build.gradle 添加本地和远程 maven 仓库地址:
maven {
url "https://mirrors.tencent.com/repository/maven/wechat-releases/"
}
maven {
url "file://${rootProject.file("app/libs")}"
}
工程的 build.gradle 完整配置示例如下:
buildscript {
ext {
buildToolsVersion = "29.0.2"
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
javaVersion = JavaVersion.VERSION_1_7
kotlin_version = '1.3.72'
}
repositories {
mavenLocal()
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
subprojects {
repositories {
mavenLocal()
google()
mavenCentral()
maven {
url "https://mirrors.tencent.com/repository/maven/wechat-releases/"
}
maven {
url "file://${rootProject.file("app/libs")}"
}
}
}
1.2 声明依赖 SDK
在模块 build.gradle 的 dependencies 中添加对 SDK 的依赖,具体可以查看拓展 SDK 具体使用说明
implementation("com.tencent.luggage:wxa-standalone-open-runtime-SaaA-sdk:x.y.z")
1.3 声明 kotlin 构建插件依赖
SDK 内部使用了 kotlin 标准库及协程库,为避免出现库实现不一致导致的 crash (异常例子),建议接入方使用的 kotlin 版本对齐小应用 SDK 使用的版本 1.3.71
。
需正确引入 kotlin 插件,否则会导致启动小应用模块异常。
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
1.4 Java 8 语言功能支持
Android SDK 于 0.5.0
版本开始升级使用支持的 Java 8 语言功能,因此需要更新模块的 build.gradle 文件,如下所示针对使用(在源代码中使用或通过依赖项使用)Java 8 语言功能的每个模块,
// 配置 sourceCompatibility 和 targetCompatibility 兼容 JAVA8 语法
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
1.5 完整的配置
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
multiDexEnabled true
versionName "0.1"
versionCode 100
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
ndk {
abiFilters "arm64-v8a", "armeabi-v7a"
}
}
buildTypes {
debug {
debuggable true
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources false
}
release {
debuggable false
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
flavorDimensions 'abi'
productFlavors {
arm {
dimension 'abi'
ndk {
abiFilter "armeabi-v7a"
}
}
arm64 {
dimension 'abi'
ndk {
abiFilter "arm64-v8a"
}
}
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
def wxa_sdk_version = 'x.x.x'
dependencies {
implementation("com.tencent.luggage:wxa-standalone-open-runtime-SaaA-sdk:${wxa_sdk_version}")
}
2. SDK 初始化
在使用 SDK 前需要进行一次初始化传入必要配置信息。由于多端应用框架使用多进程架构,需要在主进程和小程序进程中均进行初始化,建议接入方在Application#attachBaseContext() 或 Application#onCreate() 方法里创建 SaaAApi 实例。
调用示例如下:
import com.tencent.luggage.wxa.SaaA.api.SaaAApi
import com.tencent.luggage.wxa.SaaA.api.SaaAApiConfig
class DemoApplication : Application() {
override fun attachBaseContext(base: Context?) {
super.attachBaseContext(base)
SaaAApi.Factory.createApi(this,
SaaAApiConfig().apply {
codePath = mapOf(
"小应用模块 ID" to miniModulePath // miniModulePath是相对于资源(assets)目录的路径,比如SaaA_embed/wxfa0d2b4a0a0d38dc
)
sdkKey = "SDK Key"
sdkKeySecret = "SDK Key Secret"
enableDebug = true // 是否开启 vConsole,默认关闭
setOpenTransition(0, 0) // 小程序进入动画,用法与 overridePendingTransition 一致
setCloseTransition(0, 0) // 小程序退出动画
}
)
}
}
其中 sdkKey 和 sdkKeySecret 为后台请求作证,必须填写,可以登录微信开发平台获取到。
codePath 用于指定小应用模块与本地小程序代码包的对应关系,支持启动多个小应用模块。小程序资源包由开发者工具生成,放置在资源(assets)目录下。
3. SDK 使用示例
经过上述初始化后,你可以调用以下代码获取接口实例,完整的接口列表可以点此查看。
val saaAApi = SaaAApi.Factory.getApi()
3.1 启动小应用模块
目前只支持加载本地的小应用模块包资源,在 activity 相应生命周期先获取 SaaAApi 实例后,传入启动的小应用模块所需的启动路径和对应的 miniModuleId。
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.tencent.luggage.wxa.SaaA.api.SaaAApi
import com.tencent.luggage.wxaapi.LaunchWxaAppResult
import com.tencent.luggage.wxa.SaaA.api.LaunchAppModuleResultListener
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SaaAApi.Factory.getApi().launchAppModule(this, "{{miniModuleId}}", "",
// 可配置监听
LaunchAppModuleResultListener { miniModuleId, timestamp, result ->
android.util.Log.e("LaunchAppModuleResult", "$result")
if (result == LaunchWxaAppResult.OK) {
runOnUiThread {
finish()
}
}
})
runOnUiThread {
finish()
}
}
}
4. 使用扩展 SDK
扩展 SDK 与多端应用框架 SDK 使用方法一致,首先将 aar 包和 pom 放置在相同目录下,完整目录结构如下: 查看更多拓展 SDK
app
└── libs
└── com
└── tencent
└── luggage
├── wxa-standalone-open-runtime-SaaA-sdk
│ └── 0.4.5
│ ├── wxa-standalone-open-runtime-SaaA-sdk-0.4.5.aar
│ └── wxa-standalone-open-runtime-SaaA-sdk-0.4.5.pom
├── wxa-standalone-open-runtime-SaaA-sdk-bluetooth
│ └── 0.4.5
│ ├── wxa-standalone-open-runtime-SaaA-sdk-bluetooth-0.4.5.aar
│ └── wxa-standalone-open-runtime-SaaA-sdk-bluetooth-0.4.5.pom
└── wxa-standalone-open-runtime-SaaA-sdk-network
└── 0.4.5
├── wxa-standalone-open-runtime-SaaA-sdk-network-0.4.5.aar
└── wxa-standalone-open-runtime-SaaA-sdk-network-0.4.5.pom
之后在 gradle 中依赖对应的 SDK 库即可:
implementation("com.tencent.luggage:wxa-standalone-open-runtime-SaaA-sdk-bluetooth:x.y.z")
implementation("com.tencent.luggage:wxa-standalone-open-runtime-SaaA-sdk-network:x.y.z")