1、可能出现 BaiduLBS_Android.jar 的冲突。

“find libs BaiduLBS_Android.jar and jetb_BaiduLBS_Android.jar” 去每一个依赖了的builde.gradle里面只能有且一个api其他的都需要compileOnly

  1. compileOnly files('libs/BaiduLBS_Android.jar')

2、出现 …path ‘lib/arm64-v8a/libindoor.so’…

  • What went wrong:
    Execution failed for task ‘:app:transformNativeLibsWithMergeJniLibsForDebug’. More than one file was found with OS independent path ‘lib/arm64-v8a/libindoor.so’ ```
  • What went wrong: Execution failed for task ‘:app:transformNativeLibsWithMergeJniLibsForDebug’.

    More than one file was found with OS independent path ‘lib/arm64-v8a/libindoor.so’ ```

主项目的 android-app- build.gradle中添加如下

  1. packagingOptions{
  2. pickFirst 'lib/arm64-v8a/libindoor.so'
  3. pickFirst 'lib/x86/libindoor.so'
  4. pickFirst 'lib/x86_64/libindoor.so'
  5. pickFirst 'lib/armeabi-v7a/libindoor.so'
  6. pickFirst 'lib/x86_64/liblocSDK8a.so'
  7. pickFirst 'lib/arm64-v8a/liblocSDK8a.so'
  8. pickFirst 'lib/x86/liblocSDK8a.so'
  9. pickFirst 'lib/armeabi-v7a/liblocSDK8a.so'
  10. }

image.png

3、出现BMFMapWidget create失败…register

运行之后出FlutterBmfmapPlugin…没有register
我们去Flutter plugin下面找到flutter_bmfmap_1.0.1下面的src.main.FlutterBmmapPlugin

  1. /**
  2. * FlutterBmfmapPlugin
  3. */
  4. package com.baidu.flutter_bmfmap;
  5. import android.os.Build;
  6. import android.util.Log;
  7. import androidx.annotation.NonNull;
  8. import com.baidu.flutter_bmfmap.map.OfflineHandler;
  9. import com.baidu.flutter_bmfmap.utils.Constants;
  10. import com.baidu.flutter_bmfmap.utils.Env;
  11. import io.flutter.embedding.engine.FlutterEngine;
  12. import io.flutter.embedding.engine.plugins.FlutterPlugin;
  13. import io.flutter.embedding.engine.plugins.activity.ActivityAware;
  14. import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
  15. import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
  16. import io.flutter.plugin.common.BinaryMessenger;
  17. import io.flutter.plugin.common.MethodCall;
  18. import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
  19. import io.flutter.plugin.common.MethodChannel.Result;
  20. import io.flutter.plugin.common.PluginRegistry;
  21. import io.flutter.plugin.common.PluginRegistry.Registrar;
  22. import io.flutter.plugin.platform.PlatformViewRegistry;
  23. /**
  24. * FlutterBmfmapPlugin
  25. */
  26. public class FlutterBmfmapPlugin implements FlutterPlugin, ActivityAware, MethodCallHandler {
  27. private static final String TAG = FlutterBmfmapPlugin.class.getSimpleName();
  28. private OfflineHandler mOfflineHandler;
  29. //魔改百度地图插件 全局变量01
  30. private FlutterPluginBinding flutterPluginBinding;
  31. //魔改百度地图插件 全局变量02
  32. private PlatformViewRegistry mRegistrar;
  33. //魔改百度地图插件 方法01
  34. @Override
  35. public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
  36. mOfflineHandler = new OfflineHandler();
  37. mOfflineHandler.init(flutterPluginBinding.getBinaryMessenger());
  38. this.flutterPluginBinding = flutterPluginBinding;
  39. //BMKMapView
  40. this.mRegistrar = flutterPluginBinding.getPlatformViewRegistry();
  41. Log.e(TAG, "onAttachedToEngine: "+"注册了" );
  42. //注释百度他们自己的东西
  43. /*ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
  44. String key = FlutterBmfmapPlugin.class.getSimpleName();
  45. if(shimPluginRegistry.hasPlugin(key)){
  46. if(Env.DEBUG){
  47. Log.d(TAG, "hasPlugin");
  48. }
  49. return;
  50. }
  51. mRegistrar = shimPluginRegistry.registrarFor(key);*/
  52. }
  53. // This static function is optional and equivalent to onAttachedToEngine. It supports the old
  54. // pre-Flutter-1.12 Android projects. You are encouraged to continue supporting
  55. // plugin registration via this function while apps migrate to use the new Android APIs
  56. // post-flutter-1.12 via https://flutter.dev/go/android-project-migration.
  57. //
  58. // It is encouraged to share logic between onAttachedToEngine and registerWith to keep
  59. // them functionally equivalent. Only one of onAttachedToEngine or registerWith will be called
  60. // depending on the user's project. onAttachedToEngine or registerWith must both be defined
  61. // in the same class.
  62. public static void registerWith(Registrar registrar) {
  63. OfflineHandler offlineHandler = new OfflineHandler();
  64. offlineHandler.init(registrar.messenger());
  65. registrar.platformViewRegistry().registerViewFactory(
  66. Constants.ViewType.sMapView,
  67. new MapViewFactory(registrar.activity()
  68. , registrar.messenger()
  69. , Constants.ViewType.sMapView));
  70. registrar.platformViewRegistry().registerViewFactory(
  71. Constants.ViewType.sTextureMapView,
  72. new TextureMapViewFactory(registrar.activity()
  73. , registrar.messenger()
  74. , Constants.ViewType.sTextureMapView));
  75. }
  76. @Override
  77. public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
  78. if (call.method.equals("getPlatformVersion")) {
  79. result.success("Android " + android.os.Build.VERSION.RELEASE);
  80. } else {
  81. }
  82. }
  83. @Override
  84. public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
  85. if (null == binding) {
  86. return;
  87. }
  88. BinaryMessenger binaryMessenger = binding.getBinaryMessenger();
  89. if (null == binaryMessenger) {
  90. return;
  91. }
  92. mOfflineHandler.unInit(binding.getBinaryMessenger());
  93. }
  94. //魔改百度地图插件 方法02
  95. @Override
  96. public void onAttachedToActivity(ActivityPluginBinding binding) {
  97. Log.e(TAG, "onAttachedToActivity: "+"绑定了" );
  98. if (null == binding || null == mRegistrar) {
  99. return;
  100. }
  101. //删除百度下面的。然后复制这几行
  102. mRegistrar.registerViewFactory(
  103. Constants.ViewType.sMapView,
  104. new MapViewFactory(binding.getActivity()
  105. , flutterPluginBinding.getBinaryMessenger()
  106. , Constants.ViewType.sMapView));
  107. mRegistrar.registerViewFactory(
  108. Constants.ViewType.sTextureMapView,
  109. new TextureMapViewFactory(binding.getActivity()
  110. , flutterPluginBinding.getBinaryMessenger()
  111. , Constants.ViewType.sTextureMapView));
  112. }
  113. @Override
  114. public void onDetachedFromActivityForConfigChanges() {
  115. Log.d(TAG, "onDetachedFromActivityForConfigChanges");
  116. }
  117. @Override
  118. public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
  119. Log.d(TAG, "onReattachedToActivityForConfigChanges");
  120. }
  121. @Override
  122. public void onDetachedFromActivity() {
  123. Log.d(TAG, "onDetachedFromActivity");
  124. }
  125. }