Flutter macOS Android打包

2019-07-04 11:12:26 浏览数 (1)

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

GitHub地址:https://github.com/skeyboy/less_flutter

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

配置gradle

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

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

2. 设置对应的信息

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

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

3. 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

0 人点赞