Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Simple AndroidX Migration Script
#!/usr/bin/env bash
# I've found that the "Migrate to AndroidX" converter in Android Studio doesn't work very
# well, so I wrote my own script to do the simple job of converting package names.
#
# You can download a CSV of package names here: https://developer.android.com/topic/libraries/support-library/downloads/androidx-class-mapping.csv
#
# It'll run faster on a clean build because then there are fewer files to scan over.
#
# Uses `gsed` because I'm on a Mac. Can easily replace with `sed` if you don't have `gsed`.
#
# This isn't perfect; it won't find every conversion issue. You break it you buy it. Viewer discretion is advised.
MAPPING_FILE=path/to/androidx-class-mapping.csv
PROJECT_DIR=path/to/android/project
replace=""
while IFS=, read -r from to
do
replace+="; s/$from/$to/g"
done <<< "$(cat $MAPPING_FILE)"
find $PROJECT_DIR \( -name "*.kt" -o -name "*.java" -o -name "*.xml" \) -type f -not -path '*/\.git*' -print0 | xargs -0 gsed -i "$replace"
@matthewcmckenna

This comment has been minimized.

Copy link

commented Nov 14, 2018

Thanks for this!

@cmargonis

This comment has been minimized.

Copy link

commented Nov 15, 2018

Thank you!

@ondrej23

This comment has been minimized.

Copy link

commented Nov 20, 2018

Great job, thanks a lot!

@vashisthg

This comment has been minimized.

Copy link

commented Nov 21, 2018

Thanks Dan Leu
We can add

android.support.design.widget.FloatingActionButton,com.google.android.material.floatingactionbutton.FloatingActionButton
android.support.design.widget.AppBarLayout,com.google.android.material.appbar.AppBarLayout

to the csv if using AppBarLayout and FloatingActionButton

@lwasylkowski

This comment has been minimized.

Copy link

commented Nov 27, 2018

Some more missing classes:

android.support.design.widget.Snackbar,com.google.android.material.snackbar.Snackbar
android.support.design.widget.BottomSheetBehavior,com.google.android.material.bottomsheet.BottomSheetBehavior
android.support.design.widget.TextInputEditText,com.google.android.material.textfield.TextInputEditText
android.support.design.widget.TextInputLayout,com.google.android.material.textfield.TextInputLayout
@Kisty

This comment has been minimized.

Copy link

commented Nov 28, 2018

Thanks for this, Dan!

Android relevant issue for missing mappings: https://issuetracker.google.com/issues/119776865

@AndiMiko

This comment has been minimized.

Copy link

commented Feb 8, 2019

This string doesn't work on windows 10 or Linux. "xargs: Argument list too long" even with just few files

@AndiMiko

This comment has been minimized.

Copy link

commented Feb 9, 2019

I wrote a python script which can be used cross-platform in case you have the same issue: https://gist.github.com/AndiMiko/58ecc04a64ac4f89eb5262176ab3fc9e

@carstenhag

This comment has been minimized.

Copy link

commented Feb 21, 2019

On Mac run: brew install gnu-sed to get gsed.

@srbkrishnan

This comment has been minimized.

Copy link

commented Apr 7, 2019

Thanks a Ton Dan!

@vaudevillen

This comment has been minimized.

Copy link

commented Jun 17, 2019

Oh my goodness, thank you!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.