flutter打包

ios

简单命令

flutter clean

rm -rf ios/Flutter/App.framework

先在项目目录下运行

flutter build ios --release

再到xcode下进行打包

如果不进行build命令,则在xcode下会报错:

flutter Could not find an option named "track-widget-creation".

具体打包方法:
https://github.com/bingoogolapple/bingoogolapple.github.io/issues/46



作者:Zszen
链接:https://www.jianshu.com/p/93a261ebdf67
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
 

Flutter-Build An Android Release Apk

INeil
0.2922018.03.09 07:10:16字数 418阅读 15,813

上一篇已经说过了,使用Android Studio 中Build>Generate Signed Apk总是报错,无法打包release版的apk!
幸好,flutter提供了其他方式
下面是完整的打包过程,官方参考;如果要打包iOS参考
检查AndroidManifest.xml中的applicationuses-permissionapplicationIdversionCodeversionNameminSdkVersiontargetSdkVersion、替换图标等等就不赘述了!开发过Android的都知道

  • 准备

要打release 包,首先你得有个签名文件,没有的话cmd 执行keytool:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
-genkey      在用户主目录中创建一个key.jks文件
-v           显示密钥库中的证书详细信息
-alias       产生别名
-keyalg      指定密钥的算法  
-keystore    指定密钥库的名称(产生的各类信息将不在.jks文件中
-validity    指定创建的证书有效期多少天
-keysize     指定密钥长度

然后根据提示输入密钥库的口令、姓氏、省份、组织等等信息

    • 也可以通过AndroidStudio创建签名文件
      1.Build>Generate Signed Apk
      2.点击Create New...
      3.在下面的窗口中填写信息
       
      create key.JPG
  • 配置key.properties

<app dir>/android/目录下,创建一个key.properties文件
PS:<app dir>代表工程的根目录,下同
需要填写的内容

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>
storePassword    keystore 密码
keyPassword      key密码
keyAlias         key别名
storeFile        .jks文件路径
  • 配置Gradle

gradle文件路径<app dir>/android/app/build.gradle

    • 找到android {,在这一行上面配置key.properties信息
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    • 继续向下,找到buildTypes {,在上面配置signingConfigs:
signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }

buildTypes更改为:

buildTypes {
        release {
           signingConfig signingConfigs.release
        }
    }
  • 开始打包了
    cd<app dir>,执行flutter指令
    flutter build apk //默认打包release包或者 flutter build --release
    打包的过程很快就完成了,会提示release包的路径,adb命令即可安装
    当然也可以直接在<app dir>先执行flutter install安装到电脑连接的手机上!

总体过程并不是很难,主要就是生成key文件,配置Gradle;我个人还是倾向于希望Android Studio修复Bug,可以通过点击Build>Generate Signed Apk来生成!

 

 

 

 

 

Flutter Android 签名打包

 

 

查看APP包的签名

为了检查flutter打包的签名信息,

  1. 找到应用的apk文件,修改后缀改成zip包;

  2. 在压缩文件中找到META-INF目录下找到 CERT.RSA文件;

  3. shift+鼠标右键打开cmd命令行;

  4. 输入命令:keytool -printcert -file CERT.RSA

    参考:如何查看App安装包的签名

Flutter 配置Android 签名

创建 keystore

如果您有现有keystore,请跳至下一步

Terminal运行以下命令来创建一个:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

-validity 10000代表有效期天数

如果上述命令报错“系统找不到指定的路径”,请指明路径
例如:
keytool -genkey -v -keystore D:/mykey.jks -keyalg RSA -keysize 2048 -validity 1
0000

D:/mykey.jks为生成的keystore路径文件
执行该命令,如图:

在这里插入图片描述

引用应用程序中的keystore

在Flutter中的andoid项目中,

创建一个路径为android下的key.properties的文件,其中包含对密钥库的引用:

#密钥库口令
storePassword=<password from previous step>
#密钥口令
keyPassword=<password from previous step>
#别名
keyAlias=key
#keystore的路径
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>

 

 

note: <>符号去掉,keyAlias直接写你设置的别名,比如上面创建的keystore的alias 为key

gradle中配置签名

在/app/build.gradle中

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {
   ....
   
     signingConfigs{
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }

    }
    buildTypes {
        release {
          
     // Signing with the debug keys for now, so `flutter run --release`works.
//          signingConfig signingConfigs.debug
            signingConfig signingConfigs.release
            //混淆
            minifyEnabled true
            useProguard true
            //Zipalign优化
            zipAlignEnabled true
            // 移除无用的resource文件
            shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            ndk {
                 //设置只支持armeabi-v7a 平台,与签名无关,可以自己配置
                abiFilters "armeabi-v7a"
            }
        }
    }

}

 

 

构建一个发布版apk(打包)

上述步骤完成以后

Terminal中运行:

flutter build apk

 

(flutter build 默认会包含 --release选项)

打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk

在设备上安装发行版APK

按照以下步骤在已连接的Android设备上安装上一步中构建的APK

使用命令行:

  1. 用USB您的Android设备连接到您的电脑

  2. cd<app dir> .

  3. 运行 flutter install .

    详细参考:发布Android版APP

参考:

Flutter打包

Android如何用命令行生成keystore

包](https://www.jianshu.com/p/888ac3b7df01)

Android如何用命令行生成keystore

posted @ 2020-04-15 22:17  sundayswift  阅读(914)  评论(0编辑  收藏  举报