问题
I'm asking this question on behalf of my team of two Android devs. I use Windows and my partner uses a Macbook. When sharing a project through Git, the classpaths
accidentally got messed up. Here are a few observations:
- The library projects referenced (working initially) can't be resolved anymore.
- When adding through the Projects tab in 'Java Build Path', the libraries can be found.
- But the app crashes (due to
NoClassDefFoundError
), again pointing towards a messy build path structure. - Initially referenced library projects on the Mac used to appear directly in the build path as JARs. Now they do under Android Dependencies, which is weird (the former more).
- On the Windows, the above JARs have always been under Dependencies and Referenced Libraries.
I'd like to resolve this issue in a way that we can share the project on Git and work seamlessly in the future. :)
回答1:
One option is to:
- not version
.classpath
, - version a classpath template
- generate the right classpath depending on the current platform where the code is checked out.
That is called a content filter driver, here a smudge
script, which will be called automatically (hence the "seamless" aspect) on git checkout
, and will generate the actual .classpath
(otherwise not versioned and add in the .gitignore
)

(image shown in "Customizing Git - Git Attributes", from "Pro Git book")
Note that you can easily remove (without deleting it locally) the .classpath
from the repo:
git rm --cached -- .classpath
git add -u .
git commit -m "Delete .classpath"
git push
来源:https://stackoverflow.com/questions/30612336/android-library-projects-on-windows-and-mac