Situation:
Technology blog for personal research and diary. Short Notes, Quick Reference, scripts, source codes, commands, etc
Sunday, October 17, 2021
Medium membership bypass, read membership-only articles
Wednesday, October 13, 2021
How to Verify downloads with SHA checksum using macOS
Step 1:
Download file from official site or repository and ensure to get the corresponding SHA checksum
For reference, we will be using the following
Downloaded filename : name_of_downloaded_file
Downloaded file's checksum : sha_checksum_of_downloaded_file
Step 2:
Open Terminal
Step 3:
Run the following command in the Terminal from the directory where file was downloaded
> echo "sha_checksum_of_downloaded_file" *name_of_downloaded_file | shasum -a 256 --check
Step 4:
Check output or response after executing above command. You should get similar output as below
name_of_downloaded_file: OK
Step 5: Done.
Example (taken from Ubuntu site - https://ubuntu.com/download/server)
> echo "f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98 *ubuntu-20.04.3-live-server-amd64.iso" | shasum -a 256 --check
ubuntu-20.04.3-live-server-amd64.iso: OK
Tuesday, October 12, 2021
Flutter : Change Package Name and Bundle ID (iOS, Android, macOS, Linux) using rename package
Procedure for Renaming AppName and Package Name
Example (Current Attributes):
Project Name: projectname
Android: Package Name e.g. com.geekdish.projectname
iOS: Bundle ID e.g com.geekdish.projectname
Step 1: Activate the rename package
From Android Studio, open Terminal and execute the following
> flutter pub global activate renameexport PATH="$PATH":"$HOME/.pub-cache/bin"
Resolving dependencies...
+ args 2.3.0
+ logger 1.1.0
+ rename 1.3.1
Downloading rename 1.3.1...
Downloading logger 1.1.0...
Building package executables...
Built rename:rename.
Installed executable rename.
Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):
Activated rename 1.3.1.
Documents/DEV/flutter took 7s
Step 2: To change Package name and/or Bundle Id (e.g. com.geekdish.newprojectname):
Rename package using rename tool
> flutter pub global run rename --bundleId com.geekdish.projectname
Step 3: Verify changes
For Android, in the Android Studio/<appname>/android/app/build.gradle
Check the application Id attribute under defaultConfig element, see below
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.geekdish.newflutterproject"
minSdkVersion 16
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
For iOS, in Android Studio, right click <app name>/ios open in Xcode
Click Runner, you will see in the General>Identity>Bundle Identifier the new bundleId com.geekdish.projectname
For macOS, in the Android Studio/<appname>/maos/Runner/Configs/AppInfo.xcconfig
Check the PRODUCT_BUNDLE_IDENTIFIER attribute, see below
// Application-level settings for the Runner target.
//
// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
// future. If not, the values below would default to using the project name when this becomes a
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = newflutterproject
// The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.geekdish.newappname
Step 4: To change Application Name (e.g. newappname):
Rename appName using rename tool
> flutter pub global run rename --appname newappname
Step 5: To verify changes:
For Android, in the Android Studio/<appname>/android/app/src/main/AndroidManifest.xml
Check the android:label= attribute under <manifest>/<application> element, see below
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.geekdish.newprojectname">
<application
android:label="newappname"
android:icon="@mipmap/ic_launcher">
<activity
For iOS, in the Android Studio/<appname>/ios/Runner/Info.plist
Check the <string> attribute under <dict>/<key>/<CFBundleName> element, see below
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>newappname</string>
For macOS, in the Android Studio/<appname>/maos/Runner/Configs/AppInfo.xcconfig
Check the PRODUCT_NAME attribute, see below
// Application-level settings for the Runner target.
//
// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
// future. If not, the values below would default to using the project name when this becomes a
// 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = newflutterproject
Saturday, October 9, 2021
Change Launcher icon for Flutter apps for both iOS and Android using Android Studio on macOS
Create your own icon (preferably 1024x1024 size)
You may use the following tools:
Android Icon Generator https://romannurik.githu.io/AndroidAssetStudio
App Icon Generator https://appicon.co
Using App Icon Generator
Goto https://appicon.co
Drag & drop your icon to this App Icon Generator site.
Select all the platforms to be generated
it will generate and download the file AppIcons.zip
The compressed file will include folders android (for Android) and Assets.xcassets (for iOS)
Using the generated icons:
Inside the zip file are the following for Android:
android
android>mipmap-mdpl (smallest)
anndroid>mipmal-xxxhdpi (largest)
Inside the zip file are the following for iOS:
Assets.xcassets
Assets.xcassets>
Assets.xcassets>
For Android:
Right-click the Android Studio>(project folder)>android/app/src/main/res folder, select Open in>Finder
To adjust the image/icon, You can open image asset
Right click android and select Flutter>Open Android Module in Android Studio
Once android window is open, you may choose res and right click to choose Image Asset
Once opened you can pick the Source Asset/Path for the starting image once Finder dialog open , you can select the app_icon.png you get to resize the icon (e.g. for rounded icon, square etc)
once done adjusting click next, image asset will replace existinng with new one by clicking finish
For iOS:
Right-click the Android Studio>(project folder)>ios/Runner/Assets.xcassets folder, select Open in>Finder
Once revealed, delete (cmd+backspace) the Assets.xcassets from the runner folder
Once deleted, Select the Assets.xcassets folder from the AppIcon.zip file and drag to the destination Runner folder of the project
Other Option : Using flutter_launcher_icons package
Create icon
Create folder for the new icon in the project directory e.g. (project folder)/assets/icon
Add icon to the Android Studio>(project folder)>/assets/icon/ folder
Then in (project folder)/pubspec.yaml add the following (except the greyed out lines ie flutter_test)
dev_dependencies:
flutter_launcher_icons: ^0.9.2
flutter_test:
sdk: flutter
flutter_icons:
android: true
ios: true
image_path: "assets/icon/icon.png"
Replace "/assets/icon/icon.png" with the name of your icon
Save edited pubspec.yaml.
Execute Pub get from Android studio (when in pubspec.yaml editor) or via terminal type
> flutter pub get
Running "flutter pub get" in flutter_app... 739ms
Process finished with exit code 0
> flutter pub run flutter_launcher_icons:main════════════════════════════════════════════FLUTTER LAUNCHER ICONS (v0.9.1)════════════════════════════════════════════• Creating default icons Android• Overwriting the default Android launcher icon with a new iconWARNING: Icons with alpha channel are not allowed in the Apple App Store.Set "remove_alpha_ios: true" to remove it.• Overwriting default iOS launcher icon with new icon✓ Successfully generated launcher icons(app project folder)/(app name) took 6s
Even on newly created Flutter v2.5 project getting "A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.'
Even on a newly created project using latest Flutter v2.5.1 and/or latest Android Studio Arctic Fox 2020.3.1 Patch 2
Running a project will show the following warning
A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.
> flutter run
Using hardware rendering with device AOSP on IA Emulator. If you notice graphics
artifacts, consider enabling software rendering with
"--enable-software-rendering".
Launching lib/main.dart on AOSP on IA Emulator in debug mode...
Running Gradle task 'assembleDebug'... 33.6s
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk... 3.5s
W/FlutterActivityAndFragmentDelegate(12509): A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.
D/eglCodecCommon(12509): setVertexArrayObject: set vao to 0 (0) 1 0
Syncing files to device AOSP on IA Emulator... 179ms
Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
💪 Running with sound null safety 💪
An Observatory debugger and profiler on AOSP on IA Emulator is available at:
http://127.0.0.1:62763/lMsd46bI0HBdfc=/
The Flutter DevTools debugger and profiler on AOSP on IA Emulator is available
at: http://127.0.0.1:9101?uri=http://127.0.0.1:62763/lMsd46bI0HBdfc=/
Solution:
Remove the following code from (project folder)/android/app/src/main/AndroidManifest.xml
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
From flutter.dev site:
This is no longer needed and is deprecated – Flutter now automatically keeps the Android launch screen displayed until Flutter has drawn the first frame. Developers should instead remove usage of these APIs.