Flutter 插件開發(fā)總結

一、Service的聲明
在插件中,有使用到Service時,插件項目中需要在AndroidManifest.xml中聲明,同時依賴插件的宿主項目也需要在AndroidManifest.xml中聲明。這是因為 Android 系統(tǒng)要求在應用的清單文件中明確聲明所有服務。

二、原生調(diào)用Flutter的函數(shù)

// Android中調(diào)用
methodChannel?.invokeMethod(Constant.STEP_SLEEP_HISTORY,data)

// flutter中調(diào)用 setMethodCallHandler
FlutterWearPlatform.instance
        .getMethodChannel()
        .setMethodCallHandler((MethodCall call) async {
}

三、jar、aar、so文件的配置

  • 在android目錄下面創(chuàng)建libs文件夾,存放jar和aar文件
  • 在android/src/main目錄下創(chuàng)建jniLibs 文件夾,存放so文件
  • 在android/build.gradle文件中配置 flatDir
rootProject.allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://www.jitpack.io' }
        flatDir {
            dirs project(':flutter_test').file('libs')
        }
    }
}
image.png

四、插件中使用gson進行序列化時,啟用混淆會導致屬性字段被修改,flutter層收到的數(shù)據(jù)無法解析
需要在宿主項目中添加gson相關類和對象類避免被混淆

# 保留 Gson 使用的類和字段名稱
-keepattributes Signature
-keepattributes *Annotation*

# 保留 Gson 的所有模型類
-keep class com.smartgoyucheng.flutter_wear.** { *; }

# 保留所有在 Gson 中使用的類
-keep class com.google.gson.** { *; }
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容