Showing posts with label Flutter. Show all posts
Showing posts with label Flutter. Show all posts

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 rename
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.): 
  export PATH="$PATH":"$HOME/.pub-cache/bin"

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







Select all folders which name that matches those in the compressed file for android and throw them in the trash, then replace those with the folders in the compressed file for android.
copy all folders in AppIcons.zip>android/(folders) to (project)>android/app/main/src/res/

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

Open Terminal from Android Studio (Option+F12) or from Android Studio / Tool Window, click Terminal
Execute the following command:

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

WARNING: 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 
Done.





Tuesday, August 24, 2021

Android Studio Arctic Fox 2020.3 Plugin error: Plugin is compatible with IntelliJ IDEA only because it doesn't define any explicit module dependencies

Plugin error: 

Plugin '   ' is compatible with IntelliJ IDEA only because it doesn't define any explicit module dependencies



Solution:

Locate new directory of Android Studio Arctic Fox 2020.3. 

cd  ~/Library/Application Support/Google/AndroidStudio2020.3/plugins

Delete plugin that is producing the error:

rm -rf JSONViewerStudioPlugin