1、可能出现 BaiduLBS_Android.jar 的冲突。
“find libs BaiduLBS_Android.jar and jetb_BaiduLBS_Android.jar” 去每一个依赖了的builde.gradle里面只能有且一个api其他的都需要compileOnly
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中添加如下
packagingOptions{
pickFirst 'lib/arm64-v8a/libindoor.so'
pickFirst 'lib/x86/libindoor.so'
pickFirst 'lib/x86_64/libindoor.so'
pickFirst 'lib/armeabi-v7a/libindoor.so'
pickFirst 'lib/x86_64/liblocSDK8a.so'
pickFirst 'lib/arm64-v8a/liblocSDK8a.so'
pickFirst 'lib/x86/liblocSDK8a.so'
pickFirst 'lib/armeabi-v7a/liblocSDK8a.so'
}
3、出现BMFMapWidget create失败…register
运行之后出FlutterBmfmapPlugin…没有register
我们去Flutter plugin下面找到flutter_bmfmap_1.0.1下面的src.main.FlutterBmmapPlugin
/**
* FlutterBmfmapPlugin
*/
package com.baidu.flutter_bmfmap;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import com.baidu.flutter_bmfmap.map.OfflineHandler;
import com.baidu.flutter_bmfmap.utils.Constants;
import com.baidu.flutter_bmfmap.utils.Env;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugin.platform.PlatformViewRegistry;
/**
* FlutterBmfmapPlugin
*/
public class FlutterBmfmapPlugin implements FlutterPlugin, ActivityAware, MethodCallHandler {
private static final String TAG = FlutterBmfmapPlugin.class.getSimpleName();
private OfflineHandler mOfflineHandler;
//魔改百度地图插件 全局变量01
private FlutterPluginBinding flutterPluginBinding;
//魔改百度地图插件 全局变量02
private PlatformViewRegistry mRegistrar;
//魔改百度地图插件 方法01
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
mOfflineHandler = new OfflineHandler();
mOfflineHandler.init(flutterPluginBinding.getBinaryMessenger());
this.flutterPluginBinding = flutterPluginBinding;
//BMKMapView
this.mRegistrar = flutterPluginBinding.getPlatformViewRegistry();
Log.e(TAG, "onAttachedToEngine: "+"注册了" );
//注释百度他们自己的东西
/*ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
String key = FlutterBmfmapPlugin.class.getSimpleName();
if(shimPluginRegistry.hasPlugin(key)){
if(Env.DEBUG){
Log.d(TAG, "hasPlugin");
}
return;
}
mRegistrar = shimPluginRegistry.registrarFor(key);*/
}
// This static function is optional and equivalent to onAttachedToEngine. It supports the old
// pre-Flutter-1.12 Android projects. You are encouraged to continue supporting
// plugin registration via this function while apps migrate to use the new Android APIs
// post-flutter-1.12 via https://flutter.dev/go/android-project-migration.
//
// It is encouraged to share logic between onAttachedToEngine and registerWith to keep
// them functionally equivalent. Only one of onAttachedToEngine or registerWith will be called
// depending on the user's project. onAttachedToEngine or registerWith must both be defined
// in the same class.
public static void registerWith(Registrar registrar) {
OfflineHandler offlineHandler = new OfflineHandler();
offlineHandler.init(registrar.messenger());
registrar.platformViewRegistry().registerViewFactory(
Constants.ViewType.sMapView,
new MapViewFactory(registrar.activity()
, registrar.messenger()
, Constants.ViewType.sMapView));
registrar.platformViewRegistry().registerViewFactory(
Constants.ViewType.sTextureMapView,
new TextureMapViewFactory(registrar.activity()
, registrar.messenger()
, Constants.ViewType.sTextureMapView));
}
@Override
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
if (call.method.equals("getPlatformVersion")) {
result.success("Android " + android.os.Build.VERSION.RELEASE);
} else {
}
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
if (null == binding) {
return;
}
BinaryMessenger binaryMessenger = binding.getBinaryMessenger();
if (null == binaryMessenger) {
return;
}
mOfflineHandler.unInit(binding.getBinaryMessenger());
}
//魔改百度地图插件 方法02
@Override
public void onAttachedToActivity(ActivityPluginBinding binding) {
Log.e(TAG, "onAttachedToActivity: "+"绑定了" );
if (null == binding || null == mRegistrar) {
return;
}
//删除百度下面的。然后复制这几行
mRegistrar.registerViewFactory(
Constants.ViewType.sMapView,
new MapViewFactory(binding.getActivity()
, flutterPluginBinding.getBinaryMessenger()
, Constants.ViewType.sMapView));
mRegistrar.registerViewFactory(
Constants.ViewType.sTextureMapView,
new TextureMapViewFactory(binding.getActivity()
, flutterPluginBinding.getBinaryMessenger()
, Constants.ViewType.sTextureMapView));
}
@Override
public void onDetachedFromActivityForConfigChanges() {
Log.d(TAG, "onDetachedFromActivityForConfigChanges");
}
@Override
public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) {
Log.d(TAG, "onReattachedToActivityForConfigChanges");
}
@Override
public void onDetachedFromActivity() {
Log.d(TAG, "onDetachedFromActivity");
}
}