Flutter macOS Android打包

GitHub地址

打包过程视频预览

对于macOS用户使用flutter build apk打包可为曲折,官方只给出了Android正常的配置流程,但是macOS用户是不行滴—需要申请系统的访问权限授权

  1. 简略的Android Studio配置(默认你的签名文件已经设置完成)
    防止key.properties文件

    《Flutter macOS Android打包》 6269ADCF-C7DA-4AE0-AFD4-0184FFB7B3D6.png

配置gradle

《Flutter macOS Android打包》 8139E63A-9F14-4890-83CD-3DDF62EDC126.png

  1. 配置脚本执行是申请macOS的系统权限参考文章

    1. 打开keychain app, 选中密码,点击底部toolbar的+

      《Flutter macOS Android打包》 FE6364F8-6005-4509-B060-E8DBBD18442A.png

    2. 设置对应的信息

      《Flutter macOS Android打包》 9D5629CD-D756-4847-A914-D4C3E2D3CC76.png

    密钥项目名称:随意填写,就是一个名称

    账户名称:可以打开终端输入```whoami```可以查看对应用户
    
    1. gradle配脚本

      def getPassword(String currentUser, String keyChain) {
          def stdout = new ByteArrayOutputStream()
          def stderr = new ByteArrayOutputStream()
          exec {
              commandLine 'security', '-q', 'find-generic-password', '-a', currentUser, '-s', keyChain, '-w'
              standardOutput = stdout
              errorOutput = stderr
              ignoreExitValue true
          }
          //noinspection GroovyAssignabilityCheck
          stdout.toString().trim()
      }
      def getWhoami(){
          def stdout = new ByteArrayOutputStream()
          def stderr = new ByteArrayOutputStream()
          exec {
              commandLine 'whoami'
              standardOutput = stdout
              errorOutput = stderr
              ignoreExitValue true
          }
          //noinspection GroovyAssignabilityCheck
          stdout.toString().trim()
      }
      //def pass = getPassword("YOUR_USER_NAME","android_keystore") //终端中 whoami 查看YOUR_USER_NAME android_keystore你在密钥串中设置的名称
      def pass = getPassword(getWhoami(),"les01_flutter")
      

最终配置

    
def getPassword(String currentUser, String keyChain) {
    def stdout = new ByteArrayOutputStream()
    def stderr = new ByteArrayOutputStream()
    exec {
        commandLine 'security', '-q', 'find-generic-password', '-a', currentUser, '-s', keyChain, '-w'
        standardOutput = stdout
        errorOutput = stderr
        ignoreExitValue true
    }
    //noinspection GroovyAssignabilityCheck
    stdout.toString().trim()
}
def getWhoami(){
    def stdout = new ByteArrayOutputStream()
    def stderr = new ByteArrayOutputStream()
    exec {
        commandLine 'whoami'
        standardOutput = stdout
        errorOutput = stderr
        ignoreExitValue true
    }
    //noinspection GroovyAssignabilityCheck
    stdout.toString().trim()
}
//def pass = getPassword("YOUR_USER_NAME","android_keystore") //终端中 whoami 查看YOUR_USER_NAME android_keystore你在密钥串中设置的名称
def pass = getPassword(getWhoami(),"les01_flutter")

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

android {
    compileSdkVersion 27

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.xiangshike.les01hello"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            storeFile file(keystoreProperties['storeFile'])
            /*
            //windows用户
            keyPassword keystoreProperties['keyPassword']
            storePassword keystoreProperties['storePassword']
            */
            storePassword pass // Change this
            keyPassword keystoreProperties['keyPassword'] // Change this
        }
    }

    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
            signingConfig signingConfigs.release

        }
     }
    }
        

打包:

flutter build apk --debug
    原文作者:搞好关系
    原文地址: https://www.jianshu.com/p/63a7dac6caa1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞