flutter 安装部署及开发问题总结

flutter 安装部署问题总结

1、Mac版本下安装cocoapods,主要原因是rvm没有安装,ruby没有选择使用

 \curl -sSL https://get.rvm.io | bash -s stable

出现长时间打不开,安装GPG等密钥工具,导入密码后也无法安装,首先检查https://get.rvm.io网址是否可访问,不可访问就没有办法。

解决方法:

curl -sSL https://github.com/rvm/rvm/tarball/stable -o rvm-stable.tar.gz

tar -xzvf rvm-stable.tar.gz

cd rvm-rvm-6bfc921/

./install --auto-dotfiles

source /Users/zhangjianyong/.rvm/scripts/rvm

rvm install 2.7.2

rvm use 2.7.2

sudo gem install cocoapods

2、如果出现No devices available

配置sdk位置

flutter config --android-sdk  /Users/zhangjianyong/Library/Android/sdk

重启Android Studio 即可

3、flutter 如果使用Provider 进行状态管理。一定分好层,否则会监测不到。

@override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Container(
            margin: EdgeInsets.only(top: 0),
            color: Colors.white,
            child: ChangeNotifierProvider<CustomerFeeInfoNotefier>.value(
                value: mCustomerFeeInfoNotefier,
                child: Column(
                  children: [
                    Consumer<CustomerFeeInfoNotefier>(
                        builder: (context, textValueAvaliableNotifier, child) {
                      return __renderList(mCustomerFeeInfoNotefier);
                    })
                  ],
                ))));
  }

4、在使用flutter调试支付宝时,由于大部分第三方插件不支持沙箱支付,需要修改源码。以flutter_alipay为例,需要在flutter的sdk下找到FlutterAlipayPlugin.java源文件,参考路径:flutter-sdk根目录(个人安装的)/.pub-cache/hosted/pub.flutter-io.cn/flutter_alipay-1.0.0/android/src/main/java/org/zoomdev/flutter/alipay。
中增加沙箱环境支持。EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);

public static void pay(final Activity currentActivity, final String payInfo, final Result callback){

    new AsyncTask<String,Object,Map<String,String>>(){

      @Override
      protected Map<String, String> doInBackground(String... strings) {
        try{
          PayTask alipay = new PayTask(currentActivity);
          EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
          Map<String, String> result = alipay.payV2(payInfo, true);
          return result;
        }catch (Exception e){
          Map<String,String> result = new HashMap<>();
          result.put("$error",e.getMessage());

          return result;
        }
      }

5、flutter 调用高德地图。

组件引用后一定在你的application/android/app/build.gradle中引入lib,否则会出现lcom/amap/api/maps/amapoptions等类没有找到

dependencies {
    .....
    implementation('com.amap.api:3dmap:7.7.0')
}

6.flutter 调用定位组件后,按官方文档需要“implementation fileTree(include: ['*.jar'], dir: 'libs')”

会和地图组件冲突,出现错误 More than one file was found with OS independent path 'assets/ap1.data'

应修改为:implementation fileTree(include: ['AMap_Location_V5.3.1_20210331.jar'], dir: 'libs')

原因:地图jar包重复导入。

7.amap_flutter_location 2.0.0 中出现定位权限被禁用,AndroidManifest.xml中一定是8个权限,网上有帖子是6个造成

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

8. 阿里支付出现Execution failed for task ':flutter_alipay:bundleDebugAar'. 

dependencies {

classpath 'com.android.tools.build:gradle:3.5.0'

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

}

android根目录的build.gradle下为3.5.0,我原来是4.0

9、高德地图flutter开发总结

(1)引用

amap_flutter_map: ^1.0.1

amap_flutter_location: ^1.0.1

amap_location_flutter_plugin: ^0.1.4

permission_handler: ^5.1.0+2

(2)配置build.gradle

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

dependencies {

//demo中引入高德地图SDK

implementation('com.amap.api:3dmap:7.7.0')

implementation fileTree(include: ['AMap_Location_V5.3.1_20210331.jar'], dir: 'libs')

}

(3)拷贝jar包到lib目录

(4)发布时候注意混淆问题

buildTypes {

release {

// TODO: Add your own signing config for the release build.

// Signing with the debug keys for now, so `flutter run --release` works.

signingConfig signingConfigs.debug

//关闭混淆, 否则在运行release包后可能出现运行崩溃, TODO后续进行混淆配置

minifyEnabled false //删除无用代码

shrinkResources false //删除无用资源

}

}

(6) flutter_alipay的支付宝支付功能发布ios时,会出现【include statically linked binaries AlipaySDK】

修改/Users/zhangjianyong/.pub-cache/hosted/pub.flutter-io.cn/flutter_alipay-1.0.0/ios/flutter_alipay.podspec,增加

s.static_framework = true
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值