script to create a new flutter app with release setup
* needs default organisation and default key.properties
This commit is contained in:
parent
12688648d4
commit
f4e85c0990
295
createFlutter
Executable file
295
createFlutter
Executable file
|
@ -0,0 +1,295 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo "USAGE: $0 PACKAGE_NAME DESCRIPTION"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PROJECT_HOME=~/AndroidStudioProjects
|
||||
ORG_PATH="$PROJECT_HOME/defaultOrg"
|
||||
KEY_PROPERTIES_PATH="$PROJECT_HOME/defaultKeyProperties"
|
||||
|
||||
packageName="$1"
|
||||
description="$2"
|
||||
|
||||
echo "Package Name: $packageName"
|
||||
echo "Description: $description"
|
||||
|
||||
|
||||
if [[ -f "$ORG_PATH" ]]; then
|
||||
org=`cat "$PROJECT_HOME/defaultOrg"`
|
||||
else
|
||||
echo "Could not find file with default org in $ORG_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -f "$KEY_PROPERTIES_PATH" ]]; then
|
||||
keyProperties=`cat "$PROJECT_HOME/defaultKeyProperties"`
|
||||
else
|
||||
echo "Could not find file with default key properties in $KEY_PROPERTIES_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
flutter create --org "$org" "$packageName" || exit 1
|
||||
|
||||
cd "$packageName"
|
||||
|
||||
#########################
|
||||
#### create .gitignore ##
|
||||
#########################
|
||||
|
||||
cat > .gitignore <<EOF
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
/build/
|
||||
|
||||
# Android related
|
||||
**/android/**/gradle-wrapper.jar
|
||||
**/android/.gradle
|
||||
**/android/captures/
|
||||
**/android/gradlew
|
||||
**/android/gradlew.bat
|
||||
**/android/local.properties
|
||||
**/android/**/GeneratedPluginRegistrant.java
|
||||
**/android/key.properties
|
||||
|
||||
# iOS/XCode related
|
||||
**/ios/**/*.mode1v3
|
||||
**/ios/**/*.mode2v3
|
||||
**/ios/**/*.moved-aside
|
||||
**/ios/**/*.pbxuser
|
||||
**/ios/**/*.perspectivev3
|
||||
**/ios/**/*sync/
|
||||
**/ios/**/.sconsign.dblite
|
||||
**/ios/**/.tags*
|
||||
**/ios/**/.vagrant/
|
||||
**/ios/**/DerivedData/
|
||||
**/ios/**/Icon?
|
||||
**/ios/**/Pods/
|
||||
**/ios/**/.symlinks/
|
||||
**/ios/**/profile
|
||||
**/ios/**/xcuserdata
|
||||
**/ios/.generated/
|
||||
**/ios/Flutter/App.framework
|
||||
**/ios/Flutter/Flutter.framework
|
||||
**/ios/Flutter/Generated.xcconfig
|
||||
**/ios/Flutter/app.flx
|
||||
**/ios/Flutter/app.zip
|
||||
**/ios/Flutter/flutter_assets/
|
||||
**/ios/Flutter/flutter_export_environment.sh
|
||||
**/ios/ServiceDefinitions.json
|
||||
**/ios/Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# Exceptions to above rules.
|
||||
!**/ios/**/default.mode1v3
|
||||
!**/ios/**/default.mode2v3
|
||||
!**/ios/**/default.pbxuser
|
||||
!**/ios/**/default.perspectivev3
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
git init
|
||||
|
||||
##################################
|
||||
## generate empty launcher icon ##
|
||||
##################################
|
||||
|
||||
convert -size 2048x2048 xc:white LauncherIcon.png
|
||||
|
||||
|
||||
|
||||
############################
|
||||
## overwrite pubspec.yaml ##
|
||||
############################
|
||||
|
||||
cat > pubspec.yaml <<EOF
|
||||
name: $packageName
|
||||
description: $description
|
||||
|
||||
version: 1.0.0+1
|
||||
|
||||
environment:
|
||||
sdk: ">=2.2.2 <3.0.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
intl: ^0.15.7
|
||||
shared_preferences: ^0.5.4+8
|
||||
cupertino_icons: ^0.1.2
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_launcher_icons: "^0.7.3"
|
||||
|
||||
flutter_icons:
|
||||
image_path: "LauncherIcon.png"
|
||||
android: true
|
||||
ios: true
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
|
||||
#########################################
|
||||
## generate key.properties for signing ##
|
||||
#########################################
|
||||
|
||||
cat > android/key.properties <<EOF
|
||||
$keyProperties
|
||||
EOF
|
||||
|
||||
|
||||
############################
|
||||
## overwrite build.gradle ##
|
||||
############################
|
||||
|
||||
cat > android/app/build.gradle <<EOF
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply from: "\$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||
applicationId "$org.$packageName"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 28
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
keyAlias keystoreProperties['keyAlias']
|
||||
keyPassword keystoreProperties['keyPassword']
|
||||
storeFile file(keystoreProperties['storeFile'])
|
||||
storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
}
|
||||
|
||||
EOF
|
||||
|
||||
#####################
|
||||
## empty README.md ##
|
||||
#####################
|
||||
cat > README.md <<EOF
|
||||
# $packageName
|
||||
|
||||
$description
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
#####################
|
||||
## create Makefile ##
|
||||
#####################
|
||||
|
||||
cat > Makefile <<EOF
|
||||
.PHONY: clean all launcherIcon
|
||||
|
||||
all: launcherIcon
|
||||
flutter pub get
|
||||
flutter build appbundle
|
||||
|
||||
clean:
|
||||
flutter clean
|
||||
|
||||
launcherIcon:
|
||||
flutter pub get
|
||||
flutter pub run "flutter_launcher_icons:main"
|
||||
|
||||
EOF
|
||||
|
||||
|
||||
################
|
||||
## test build ##
|
||||
################
|
||||
|
||||
make clean launcherIcon all
|
||||
make clean
|
Loading…
Reference in New Issue
Block a user