zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    设计模式——桥接模式
    设计模式——工厂模式
    挖个坑
    Java 线程应用
    vtep-ctl + add-ls+ bind-ls +br-get-external-id
    ovs vtep 源码Tunnel_Ip
    vtep-ctl del-ls ls0
    vtep-ctl unbind-ls
    virt manager
    ironic 裸金属 failed to mount sysroot
  • 原文地址:https://www.cnblogs.com/sundaysme/p/12708954.html
Copyright © 2011-2022 走看看