flutter如何打包成apk或aar

0
回复
147
查看
[复制链接]

77

主题

698

帖子

1万

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2019-4-9 18:55:01 | 显示全部楼层 |阅读模式
如果对本篇文章感兴趣,请前往,原文地址:http://www.apkbus.com/blog-855858-79834.html

一、打apk包在命令行输入打包命令 flutter build apk
会编译生成apk文件 位于 build/app/outputs/apk/release/app-release.apk

如果打包报错需在app/build.gradle中添加配置信息
//没有此项配置 打包会报错
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }



为了解决so对齐问题,你需要在你的flutter项目中手动添加armeabi的so文件,这样的话打包出来的aar就包含了armeabi的so文件,这个armeabi的so文件可以拷贝apk/lib/armeabi-v7a下面的,一般情况下他们两个是没什么区别的,这里拷贝的话亲测可用。
在app目录下创建libs/armeabi,然后将libflutter.so拷贝到armeabi的目录下,然后在gradle中配置
//编译打包so库

android{
        sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}



二、打aar包
上面通过编译命令得到了apk,如果要想打包aar,理论上只需要把
1、app/build.gradle中的apply plugin: 'com.android.application'
        改为apply plugin: 'com.android.library',
2、同时注释掉applicationId "com.flutterappfirst",
3、并且将清单文件修改为:
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.flutterappfirst"/>
4、然后执行以下命令,就能得到app-release.aar文件       
        flutter clean
        cd android
        gradlew assembleRelease


我们发现在aar文件夹下的assets里面缺少了flutter_shared文件夹,icudtl.dat文件正是在该文件夹里面,也就是说flutter.gradle在编译流程中并没有将icudtl.dat文件打进aar包里面,那么我们的解决办法是将apk中该文件夹手动拷贝到flutter工程中assets/flutter_shared
然后再重新执行打包命令
注意:studio版本号要和sdktools版本号对应



参考:https://blog.csdn.net/qq_33666539/article/details/85340704







  继续阅读全文



想在安卓巴士找到更多优质博文,可移步博客区

如果对本篇文章感兴趣,请前往,
原文地址:
http://www.apkbus.com/blog-855858-79834.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )