如题,在混合开发中,flutter sdk版本<=1.12.13+hotfix9时生成aar文件报错
“Where:
Initialization script '/Users/mac/workSpace/02_development/flutter/packages/flutter_tools/gradle/aar_init_script.gradle' line: 19* What went wrong:
project ':connectivity_for_web'”
直接上解决方法:
1、找到该项目中dart package所在的位置,
2、进入该包的上一级目录pub.dartlang.org,进入该目录,删除具体的插件包含macos或者web或者linux、windows的版本包,
如图,删除3个库。再按照这个步骤,从上往下找这个目录下所有的库,找到带有
xxx_web、xxx_macos、xxx_linux、xxx_windows的库,全部删除掉。(新版的flutter sdk解决了这个问题,需要换掉aar_init_script.gradle文件,说来话长,不说了。)
3、再运行。
还有更加简单的方法(因为我们不可能每次都去手动删除,很麻烦,每次get都会生成一次):
直接写个脚本:android_delete_useless_lib.sh
echo '根据自己的flutter目录中的依赖库地址进行配置'
path='/Users/mac/workSpace/02_development/flutter/.pub-cache/hosted/pub.flutter-io.cn'
cd $path/
find . -name '*_macos-*' -type d -exec rm -rf "{}" \;
find . -name '*_linux-*' -type d -exec rm -rf "{}" \;
find . -name '*_web-*' -type d -exec rm -rf "{}" \;
find . -name '*_windows-*' -type d -exec rm -rf "{}" \;
其中,红色的path就是刚才上面提到的这些库所在的目录,即你自己的flutter库的目录,更改之后,再在Terminal终端执行这个脚本:
sh android_delete_useless_lib.sh
执行之后那些没用的库自动就删除了。
============我是分割线=============
另外,在flutter混合开发时,很多同事都需要执行很多命令,如:
flutter build aar --no-debug --no-profile --target-platform android-arm,android-arm64
./gradlew clean
./gradlew assembleRelease
...
第三条命令是通过中间库去生成aar的命令。。。
那么综上,我们也可以编写一个脚本:android_aar_build.sh
echo '删除无用的库文件...' ./android_delete_useless_libs.sh echo '库文件删除完毕...' echo '开始编译flutter aar' flutter clean flutter packages get flutter build aar --no-debug --no-profile --target-platform android-arm,android-arm64 echo '开始编译hellotalk flutter aar' # 进入到kiitflutterlib项目下 cd ../kiitflutterlib # 首先删除build文件夹 echo '删除build文件夹' delete ./flutter/build echo '执行 ./gradlew clean' ./gradlew clean echo '执行 ./gradlew assembleRelease' ./gradlew assembleRelease open ./flutter/build/outputs/aar echo '将flutter-release.aar复制到宿主项目中指定目录...' #直接复制生成的aar文件到主app指定目录下去 #其中 my_flutter_app 文件夹需要改成你们自己目录的宿主项目名称 cp ./flutter/build/outputs/aar/flutter-release.aar ../my_flutter_app/flutter_new_project/ echo '执行完成'
保存,直接可以执行:
sh android_aar_build.sh
注意其中红色的位置,第一个是表示我们刚才提到的删除无用库的脚本,后面的红色位置则表示我们自己的项目名称或者宿主项目等,按照自己的项目来修改即可。
完毕。