res\ and AndroidManifest.xml not added to my .apk file - android

Due to a change of computers, I had to do a new installation of Eclipse and the Android SDK. I copied over my work environment (directory) and voila, everything works fine when compiling and running my app in the emulator.
However, when creating a distribution package, the generated .apk file is just about +half the size of the previous versions+ and produces the +"There was a problem parsing the package"+ eror message when trying to install it on a phone.
On a closer check, I found that the following files are not added to the .apk file:
res/ folder
AndroidManifest.xml
resources.arsc
There are no error messages in the Error log in Eclipse and I have already disabled Proguard (just to sort it out as a possible cause). Any idea?

I'd try two things...
First, the obvious would be to open the project and then use Project -> Clean.
Second (if the above doesn't fix it), close the project then right-click on it in the Package Explorer and select Delete - this won't delete the project files (unless you select the checkbox which you obviously don't want to do). When the project is deleted go to File -> New -> Project. Select "Android Project From Existing Code" then select the project folder as the source.

Related

Android Studio: "Import Project" and "Open Project" have issues when opening a duplicate project

When initially trying make a copy of an Android Studio project, I duplicated the project folder in finder, renamed it, brought it up in AS using "Import Project," refactoring the package and editing the manifest. At first first it seemed to run on my device without any issue.
I later noticed, however, that every time I ran either the original or the duplicate app on my device, one would replace the other's icon on the home screen.
I found a solution that said not to use "Import Project" but instead to use "Open Project" to open the duplicate. Doing so solves the initial problem of the app replaced with the other app, but opened a whole new can of worms where some of the pointers in the duplicate project refer to files and file paths in the original project. Apparently this is a known bug. I have not confirmed this with Google, however.
Searching for solutions only lead to "you need to use "Import Project" not "Open Project," which of course takes me back to the original problem. Any ideas?
Android uses the applicationId in the Gradle build file to set the package attribute in AndroidManifest.xml; this string is used by Android devices to disambiguate applications. If you install an app it will replace any other installation with that package ID. Change the value in Project Structure > Flavors > defaultConfig, or modify it directly in your build file.
Note that if you try to change it directly in AndroidManifest.xml, it will be overwritten at build time with what's in build.gradle; you need to modify it in the build file.
Try deleting *.iml in duped dir then import.
Instead of trying to copy the project outside of Eclipse, try copying it IN Eclipse, like this:
Copy and paste your project (ctrl+c and then ctrl+v)
Change the package name in your Manifest.
Rename your package name with refractor by right-clicking on the package.
Change your application name in your Manifest.
This will create a new source folder for the project and it will already have the new project in your Eclipse.

i want to change my sdk path in android adt?

a few days ago i have lost my R.java file from my android app app project from android adt while cleaning it...as it was showing some errors when i was trying to add the feature of ads in my xml file...now i am unable to recover my R.java file in the project .
I have tried many options such as:-
cleaning the project .
checking for errors in the xml file and corrected and tried to clean the project once again.
copied and pasted the res,gen and android manifest.xml file in the new project of the same in another workspace and pasting the new R.java file generated over there into the actual workspace but still its not working and showing errors.
i tried to cut and paste the sdkmanager.exe from the actual folder to some folder elsewhere and tried to clean the project again to regain its R.java file but it is still not working and the sdk manager is showing the same path even though i have shifted it somewhere else...
now what am i supposed to do...
To change SDK path: Window/Preferences/Android.. and then Set SDK Location
R.java is an auto generated file and it's error is based on errors in Manifest file or resources , maybe there is an unnamed string in your string file ,if you can, post your R.java file errors. and for changing sdk path its through Window -> Preferences - > Android .
On Windows : Window > Preferences > Android. Then click on "Browse" to change SDK path.
On Mac : ADT > Preferences > Android and "Browse"
You need to provide your R.java file errors mine was R cannot be resolved to a variable and I had to go to project properties -> java build path, then make sure your libraries are selected and clean and build and if that doesn't work delete your bin and gen folder and clean and build...Hope this works for you good luck!

Eclipse Android won't clean, won't refresh resources

I upgraded to Ubuntu 11.10, Eclipse 3.7.0, ADT 14.0.0.
When I replaced a picture resource in the /res/drawable-nodpi directory on the desktop, or a sound resource in the /res/raw directory, both the recompiled program and the Project Explorer use some previously cached version.
I tried the following, none of which worked:
right-click on filename in project explorer: Refresh
right-click on /drawable-nodpi dir in p.e.: Refresh
right-click on /res dir in p.e.: Refresh
right-click on Project in p.e.: Refresh
Project -> Clean...
Project -> check Build Automatically, Run->Run
The program recompiles new source code changes correctly, but reuses its own cached resources.
This is with an existing project that used to work under Ubuntu 10.
As a workaround, I renamed the file on disk; Deleted the file in the Eclipse Project Explorer; restored the name of the file on disk; and then dragged the file from the desktop into the /res/drawable-nodpi folder in the Project Explorer. Eclipse came back with a popup asking whether I wanted to Copy or Link the file into Eclipse. I chose Link. This finally got the new version of the resources imported.
Update: After the source code that used these images got modified elsewhere, it quit recompiling, saying R.drawable.mypicname no longer referred to anything. So the Linked resources don't appear to be reliable after all. The latest workaround is to manually Copy the file on the desktop and Paste it into the Eclipse ProjEx /res/drawable-nodpi directory. This recompiled without any source code change, and ran on the device.
Both Clean and Refresh not working correctly is quite unexpected behavior. Why is it doing this? What am I doing wrong? How can I set the Eclipse environment so that when I change the file on disk, it uses the current latest version? Or at least allows me to Refresh? Thanks.
Enable lightweight "refresh on access" to keep the workspace synchronized with the filesystem.
This option in Eclipse is in Preferences under General->Workspace as shown here.
Look for bin on your application. Probably there is a folder called res/crunch, so search for your drawable that isn't refreshing and refresh manually.
In my case, I import the wrong 'R' so that eclipse couldn't find the right image file.
try change this: import android.R; => import com.example.myfirstapp.R;

Creating an Android Test project in Eclipse

How do I create an Android Test project in Eclipse in the target project's /test directory?
Note: I'm just doing my own Q+A for people according to the Stackoverflow FAQ on answering your own question.
I am using Helios with the latest current version of Android (10.0.1)
The Android Testing fundamentals recommends you
place the tests in the same project folder as your src folder. Some people have recommended that you create a new test project in its own folder so it doesn't get packaged into the apk.
I looked inside my apk and I don't think the test stuff was included (but I could be wrong). I like having it in the same directory as its more convenient for revision control - you don't need to sync two projects each time.
Assume we want to create a test suite for the MyAndroidApp project
Goto File.. New.. Other.. Android...Android Test Project
Set "Test Project Name" to MyAndroidAppTest
For Test Target, choose "An existing Android project".. Use the Browse button to select MyAndroidApp
Unselect "Use default location". This changes the location to be inside the MyAndroidApp project under the tests directory
Click Finish
When it is being created, if you get a An internal error occurred during: "Refreshing workspace". error (or other errors) just ignore it. Click OK.
-Clean the MyAndroidApp project
Even though the project is in the <workspace path>/MyAndroidApp/tests directory it will appear as a normal Eclipse project in the package explorer.
Clean the MyAndroidAppTest project.
This worked for me.
EDIT
If you upload to SVN in Eclipse (by syncing the MyAndroidApp project, not the MyAndroidAppTest project) you need to do a little more (I've just done it now).
So when you update your other working copy it will pull down the /tests directory.
The MyAndroidAppTest project does not automatically show up in the Package Explorer.
So you need to go to File.. Import...Existing Projects into Workspace....
Then select the root directory by browsing to your <workspace path>/MyAndroidApp/tests directory and click Finish.
I found here a very detailed solution to this problem. It seems to be an ADT bug.
http://jonblack.org/2012/11/24/creating-an-android-test-project-within-a-project
Still, when I import the test project back into the workspace at Step 5 I get the following error message:
java.io.FileNotFoundException: C:\projects\MyApp\com.myapp.test-test\project.properties ( The system could not finde the file specified ).
I simply closed the error dialog and the test project appeared in my workspace at the same level as my android project, but the location was correctly set to MyApp/tests.
So I wrote a test, run it and it worked.

Missing AndroidManifest.xml when importing an old Android project into Eclipse

I have an Android project developed on Eclipse (GNU/Linux) that I last touched half a year ago. I am trying to import the project into Eclipse 3.6 on Windows (with ADT installed) installed using File -> Import Project in Eclipse. When the project is imported, I see the following error twice on the console:
[2010-12-10 02:17:12 -
com.android.ide.eclipse.adt.internal.project.AndroidManifestHelper]
Unable to read C:\Program
Files\Android\android-sdk-windows\AndroidManifest.xml:
java.io.FileNotFoundException:
C:\Program
Files\Android\android-sdk-windows\AndroidManifest.xml
(The system cannot find the file
specified)
Why is Eclipse looking for AndroidManifest.xml on the Android SDK path? The file actually seems to be in the project's directory. How do I fix this problem and get the project to compile?
A simple solution is to either reimport the AndroidManifest.xml file or make a change to the file and save it. This worked for me.
If you see an error about AndroidManifest.xml, or some problems
related to an Android zip file, right click on the project and select
Android Tools > Fix Project Properties. (The project is looking in the
wrong location for the library file, this will fix it for you.)
from: http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html
The way you are importing the Android project into Eclipse is wrong. The Correct way of doing is File -> New Android Project. In the Contents Tab in "New Android Project", select "Create project from existing source" and choose the Build Target. That should fix your problem.
It appears that this error is produced because Eclipse thinks the default location for new Android projects is the Android SDK path. Even if the project location is changed, the error fails to be resolved, so the trick is to change the project location before Eclipse is aware of the condition generating the error.
To circumvent this quirk I imported the old project with the following steps:
File -> New -> Android Project
Un-check 'Use default location' and browse to project root directory.
Click 'Create project from existing source'
It's important to do step (2) before (3) otherwise the error persists and prevents running the project.
I had the same problem, all of the above did not work. I cleaned the project and it worked.
Instead of using File ---> New Android Project --> "Create project from existing sources", which will result in the error your are seeing, choose "Create project from existing sample" and choose it from the drop down. This will work.
Experienced JAVA developers tend to go with the first option which is normally there and works for classic Eclipse projects. But this is not your typical project and I bet the Google developers put this special case in the wizard to accommodate the differences.
I had the same problem. I was trying to compile the JakeWharton view page sample, so I checked out the GIT in a directory in a different folder then the workspace which caused the problem.
Eclipse was maintaining 2 folders:
1. A new workspace folder was made under the workspace directory, which eclipse checks for libraries and others source code including the AndroidManifest.xml file
2. The existing folder which was not under the Root workspace
To fix the problem after importing I had to manually move the files in the new workspace folder created by eclipse.
I met this problem when using Facebook SDK, now I solve it by doing this:
Close the project;
Copy "AndroidManifest.xml" file to the project's root path;
Open the project and refresh it, it's Done!
this worked for me by the way:
I changed the project name to the exact name of the project that I am importing.
Eclipse seems somewhat fragile in its naming conventions. One of the causes for this error is a difference between the project name and the folder name in the workspace. I imported a zip file for a project named "HelloDialogs" into a workspace folder named "HelloDialog". This caused the "AndroidManifest.xml file missing" error. Once I renamed the folder correctly, everything worked fine.
Because of the multiple different answers here, I thouhgt I'd add yet another one that worked for me, as I had exactly the same issue when first working with Phonegap android dev tools.
So I found (as mentioned by Gintautas in comments to the accepted answer), that I had to create a new project using the phonegap 'create' script, then when importing the project into eclipse. the only way to get this to work successfully was if the project was originally created in some temp folder somewhere other than the place I actually want to work with it.
So I created a project in windows like this in a cmd window...
c:\phonegap\phonegap-2.6.0\lib\android\bin>create.bat c:\temp\android_boilerplates\test app.test test
Then I imported the project in eclipse like this...
File > New > Project
Within the new project wizard select: "Android Project from Existing Code"
Click "Next"
Now navigate to the temp location of your project and set that to the root directory, check the project you want and check "Copy projects into workspace" as the example below...
Click "Finish"
And that's it, Eclipse should copy all your project files into your workspace and there shouldn't be any errors in your project (fingers crossed).
Your project should look something like this...
Hope that helps, it took me an age to work out why Eclipse didn't like creating a new project from existing code when the new project was being setup in the same place as the existing code. This isn't a problem for other languages I've used, so it was a little weird, but understandable as Eclipse (I'm guessing) seems to want to overwrite certain files.
Eclipse randomly decided to make another folder instead of the one that i had specified, but doesnt have any resources or data or layout etc in it..
it has some conflicts i guess..
anyway, a noob approach to this was, copying the original file to some other location(i put it to desktop)..
now create new project-create existing project, select this one from desktop, n VOILA.. its all fine.. :D
I am a little late to this game but I caused this same problem by generating the initial application into the exact location I was going to work on it. That is to say I put it directly into my current workspace. I then did File, Import, Existing Android Code Into Workspace. The import process blanked out my android.xml file.
I tried above solutions and had no joy. I then generated the initial application into a temp directory and imported from there. This worked for me.
The only way to import a project into eclipse workspace is to create an empty project and then drag and drop all the folders and files into this project. Why is this so is beyond me.
The answer from Raunak is wrong.
I found a .classpath file in the root directory of my Android project. I opened it and updated the file paths in it, and it seemed to fix the problem for me.
I had the problem when I tried to update an old project with recent code from the SVN. I had the Manifest.xml exported to my local file system as backup and deleted it. I've then reverted my complete project to the most recent version from the SVN and then it worked :)
This is what I had to do to get this to work. Fortunately I had backups of earlier "project".
1) Import the project as usual.
2) If the errors with empty xml etc. comes up, close the project.
3) Go to the original project if you have backup.
4) Copy all of the projects root files and directories and paste it over where Eclipse expects the projects root directories and files to be.
5) Open the project and refresh. Make "Clean" if necessary and you're done!
Always make backups because Eclipse f--kups! I learned this the hard way when suddenly my Android project refused to work because of empty manifest-file.
Sometimes if you automatically fix imports in MainActivity IDE imports android.R class instead of one that will be generated for the project. Remove the import and recompile.
when importing project from another workspace add existing project in workspace. and tick to the copy projects in workspace.then check the api level and supporting library from project.properties files.then rebuilt project and clean it.. it is works for me.
2017 Solution: Much Easier and tested solution is to remove your application folder from elipse project only then Import it again and the problem will be fixed immediately!

Categories

Resources