Flutter macOS Android打包

作者: 搞好关系 | 来源:发表于2018-06-14 10:30 被阅读27次

    GitHub地址

    打包过程视频预览

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

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


      6269ADCF-C7DA-4AE0-AFD4-0184FFB7B3D6.png

    配置gradle


    8139E63A-9F14-4890-83CD-3DDF62EDC126.png
    1. 配置脚本执行是申请macOS的系统权限参考文章

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


        FE6364F8-6005-4509-B060-E8DBBD18442A.png
      2. 设置对应的信息


        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
    

    相关文章

      网友评论

        本文标题:Flutter macOS Android打包

        本文链接:https://www.haomeiwen.com/subject/subeeftx.html