Flutter macOS Android打包

android studio 下载 | 2019-02-15 09:42

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

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

配置gradle

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

2. 设置对应的信息

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

账户名称:可以打开终端输入```whoami```可以查看对应用户

3. gradle配脚本

def getPassword(String currentUser, String keyChain) {

def stdout = new ByteArrayOutputStream()

def stderr = new ByteArrayOutputStream()

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()

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()

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()

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))

compileSdkVersion 27

lintOptions {

disable 'InvalidPackage'

defaultConfig {

// TODO: Specify your own unique Application ID (-id.html).

applicationId "com.xiangshike.les01hello"

minSdkVersion 16

targetSdkVersion 27

versionCode 1

versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

signingConfigs {

keyAlias keystoreProperties['keyAlias']

storeFile file(keystoreProperties['storeFile'])

//windows用户