|# 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.|
|while IFS=, read -r from to|
|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"|
Nov 15, 2018
Nov 20, 2018
Great job, thanks a lot!
Nov 21, 2018
Thanks Dan Leu
We can add
to the csv if using AppBarLayout and FloatingActionButton
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
Nov 28, 2018
Thanks for this, Dan!
Android relevant issue for missing mappings: https://issuetracker.google.com/issues/119776865
Feb 8, 2019
This string doesn't work on windows 10 or Linux. "xargs: Argument list too long" even with just few files
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
Feb 21, 2019
On Mac run:
brew install gnu-sed to get
Apr 7, 2019
Thanks a Ton Dan!
Jun 17, 2019
Oh my goodness, thank you!!
Jun 19, 2019
Here is a much faster version – replaces
perl, and I think it works just as well. I terminated the original script after 28 minutes. This rg/perl version completed after about 1 minute.
Jun 25, 2019
Thanks Dan. I wrote a script based on your idea with some added enhancements: https://gist.github.com/dudeinthemirror/cb4942e0ee5c3df0fcb678d1798e1d4d
Jul 5, 2019
Nov 8, 2019
Awesome this is what we're looking for!!! Thanks for the people here.
Dec 10, 2019
how to use this script?
Dec 28, 2019
Did a fork for Linux (i'm on Ubuntu) to work around the xarg too long argument list error, and assumes the csv file is in the same directory as the script. https://gist.github.com/draekko/4019f0342553b6c0cbeca1d185245dd1
Hope this helps someone else, thanks for the original, saved me a lot of work.
Mar 26, 2020
Thank you, this saved me hours of pain
Dec 22, 2020
after run the script.sh
It seems that there is an error: android.support.v7.widget.GridLayoutManager => androidx.gridlayout.widget.GridLayoutManager
It should be : android.support.v7.widget.GridLayoutManager => androidx.recyclerview.widget.GridLayoutManager
Apr 14, 2021
I've noticed a substantial performance improvement by running
gradle clean before running this script.
The comment on line 8 suggests this but it is easy to overlook.
It'll run faster on a clean build because then there are fewer files to scan over.
The script now runs in 18s instead of 2m43s!
Jun 24, 2021
brew install gnu-sed
Thanks for this!