I feel dumb for asking this, but I thought that GitHub and Gradle would fully manage dependencies in Android Studio.
I commented an implementation from Maven (by using "//") and then invalidated caches and restarted, then clean project and rebuild.
// implementation "com.some-implementation:the-implementation:1.0.0"
And to my surprise when I double shift for searching project files in IntelliJ the file is still there and accesible.
I've been working on a personal project for some time now, and after finding out that files of unused dependencies are still present on the project, now I wonder how on earth will I get rid of them entirely.
I cannot even remember how many implementations have been used and then abandoned.
Do these files end up adding to the compile time, or to the size of the build?
I am not sure , but i think that even with gradle clean build wont delete the old files , If you can locate the android cache , usually at Users/%USER_NAME%/.android/cache-build , you can safely delete all the unwanted jars.
But with my naïf understanding that even deleting gradle cache and the android cache you will keep seeing those files in the Search everywhere . and its probably related to the search mechanism .
But i have no idea why this will be an issue for you , its cached and am almost sure that it wont be loaded to any cloned or newley used project .
So opening new project or clone your current progress to a new location will remove these unwanted dependencies .
Related
Everytime I restart Android Studio it forgets the configured modules despite them shown as configured in the ProjectStructure>Dependencies menu and I manually have to remove them from ProjectStructure>Dependencies and then add them again.
I also tried invalidating the chache, cleaning and rebuilding but the only thing that works is to manually remove the dependencies and to add them again.
What is causing this behavior?
I never faced this problem, but i would check this points:
Do you have other software like git accessing the project folder and maybe overriding some important project files?
Does your user have the rights to write data into the project folder and the configuration files?
Does the Event Log shows something interesting?
Does the log shows something? Help > Show Log in Files > idea.log
i recommend using Ctrl+F to find any occurrence of Error
If you are on linux you can use find -cmin -30 to get a list of all files that were changed in the last 30 minutes. That might be useful to spot the problem.
It might help if you give us your operating system (and version) and android-studio version.
I sync my gradle projects to a usb stick and then I snyc two computers with it. Both are used by myself only, I'm just switching machines regularly (home vs work in my case).
I often get cannot resolve symbol (mostly with all support v4 classes only) exceptions from the IDE (compling works though) after this that can't be repaired anymore...
Any ideas how to solve this? And especially how to avoid this?
What I do already
I have defined a build directory outside of the projects to avoid conflicts there based on wrong intermediate files like following:
allprojects {
buildDir = "M:/tmp/${rootProject.name}/${project.name}"
}
What I try if the problem occurs
I make a Invalidate Caches - Invalidate and Restart in android studio => does nearly never help
I delete the .idea folder from my project => helps sometimes, is not very convenient, as I need to import the project again and set up the sdk again afterwards... and it does not always help either
after syncing my project I make a clean build
It's not the most beautiful solution, but it's the best I found.
If I delete the .idea/libraries folder after syncing, this solves the issue.
I have two rather large solutions that both experience the same problem. The issue is that I am warned about an inability to delete temporary files. The messages all look like this:
Failed to delete the temporary file
"C:\Users\Don\AppData\Local\Temp\tmp07197280428445c484ba0cda58178903.exec.cmd".
The process cannot access the file
'C:\Users\Don\AppData\Local\Temp\tmp07197280428445c484ba0cda58178903.exec.cmd'
because it is being used by another process.
I have seen suggestions of using pre-build commands to first delete things, but that is a lot of projects, and I'm not going there.
Anyone know how else I might remedy this, that does not involve "fixing" each project individually?
If it makes any difference, I'm compiling C# .NET 3.5 projects.
My idea is, to write a small addin for Visual Studio, which can delete files on build. You could configure it with filepaths and then just run sth like this:
foreach (var item in paths)
File.Delete(item);
And the config you could put solutionwide.
I get that too - the problem is that the compilation system itself is holding onto the file when it attempts to delete it. I think it deletes it afterwards anyway as I've never seen the named files hanging around afterwards so its just an annoyance that can be ignored.
The files seem to be the command that VS is running that is built up from the build settings.
I assume its a .NET thing where the GC hasn't cleaned up the object that has the handle to the file when the system attempts to delete it. If so, directly shows the benefit of RAII over GC :-)
A likely source for the problem is that your antivirus software is busy scanning the file in question, which prevents the rightful owner deleting it. Curb the enthusiasm of the antivirus and your problem will be solved.
Unload the project from your solution, than reload it. It should create the missing files and be buildable again.
If you have installed any third party cleaner tool and activated the active mode (always running in background) this will lock the temp folder in the appdata so Visual Studio is unable to restore the Nuget package on build and there will be a build error.
Try uninstalling the cleaner and restarting the system. When I had this problem, that was how I fixed it.
I have a lot of png images into a directory. I've added it to the project as Content/Copy if newer. I can load them from the app without problems.
But, the project needs a lot of time to compile. If i make a little change in the code, the project recompiles all again. It takes a lot of time.
I've tried to add another project, add the files to the new project, but then i can not access to the files from the app.
Is there any solution?
Of course, when i debug the app into the iPad, the uploading+install takes a lot of time. These files will not change ever, so...Is there any method to copy all the content ONE time?
Thanks
I just have discovered a tricks. It seems that monotouch does not remove directories when you upload and install from the MonoDevelop environtment, so:
Add your folders and all the files and mark them as Content
Build your project for iPhone/iPad and Run it from MonoDevelop
Remove your data foldres from your porject
Clean the solution
Make any changes you need in your code, your data reamins in the device!!!
That changes all!!! Before that, when i need to make a minor change in my code, i needed to wait about 15' for building and uploading. Now it's just 1 minute!!!
Place your images in a separate class library
Mark all your files as embedded resources
Add a logical name to each resource (in your project file)
<EmbeddedResource Include="Images\Folder\Filename.ext">
<LogicalName>LogicalNameForImage</LogicalName>
</EmbeddedResource>
4. Load the resource as
UIImage.FromResource(yourAssembly, "LogicalNameForImage");
Embedded resources are loaded on demand, not when the assembly loads.
In A future version of MonoDevelop (my patch didn't make it in time for the upcoming 4.0 release), this won't be an issue any longer.
What currently happens in MonoDevelop 3.x is that when building a project, it will only copy the images that have changed into the app bundle, however, after building, MonoDevelop invokes a script that is installed along with Xcode called iphone-optimize which scans the entire app directory and uses pngcrush to crush all of the images (it also converts all plist files into binary plists). This is the step that causes such slow build times if you have a lot of images.
Just after the 4.0 branch closed for QAing, I wrote a patch that avoids the need for invoking the iphone-optimize script. Instead, what MonoDevelop will do is it will directly invoke pngcrush on only the images that have changed, passing the proper app directory location as the output argument to pngcrush so that we avoid an additional file-copy.
From my own testing, this makes a massive improvement to build times for projects with a lot of image files.
In the meantime, what you could do, is make a backup of the iphone-optimize script (should be located somewhere under /Applications/Xcode.app) and then modify it to not crush image files. Then, once you've done that, go and pre-crush all of your png files in your project.
(Note: when the MonoDevelop with my patch finally ships, it'll also have an option to disable calling pngcrush for developers who have already pre-crushed their images).
What files can be safely removed from CDT project and workspace before archiving or saving in a source control system?
Having MSVC experience, I tried to remove Debug and Release directories, this was really bad idea :(
Are you using an Eclipse plug-in for your version control system of choice? They seem to take care of everything (at least in my experience with the CVS and Mercurial plugins). If not, you'll need to tell Eclipse to refresh pretty much your whole project whenever you've interacted with version control.
The contents of the Debug and Release directories should all be autogenerated. If they're not, something's wrong.
Rather than what you can delete, turn it around and consider what you need to keep:
.project, .cproject and (if it exists) .settings
Your source directories
Your include directories
Any other human-created files at the top level e.g. Changelog, documentation
It may also be worthwhile looking inside the .metadata directory in your workspace root; for example, any launch configurations you have created are stored by default in .metadata/.plugins/org.eclipse.debug.core/.launches/ . (Although I have seen them inside project directories from time to time.)