ChatGPT解决这个技术问题 Extra ChatGPT

Libraries do not get added to APK anymore after upgrade to ADT 22

I have a rather big Android App project that is referencing several library projects. Everything was fine until i upgraded the eclipse ADT plugin to the newest version (v22). I also upgraded the SDK of course. I do not see any compile errors in eclipse, but when i run the project on the phone i get a NoClassDefFoundError.

java.lang.NoClassDefFoundError: org.acra.ACRA
....

The arca library is included in one of the referenced library project (in the libs folder) and i can see it in the "Android Private Libraries" in the package explorer, also as i said, no compile errors. The project runs fine on everyone else's computer that did not upgrade ADT.

I have already tried a whole bunch of stuff including but not limited to:

re-install the android SDK

download a fresh ADT bundle

delete all my code an get it again from git

copy the library in question to the app project

comment out the code that uses this library - i just get the same error for the next library

all without any success, so i'm getting really desperate here.

I would be really happy if anyone could give me a hint on how to solve that problem.


L
LOG_TAG

Quoting Streets of Boston from his adt-dev post:

When upgrading, the 'Order and Export' of the new 'Android Private Libraries' is not always checked. And the android-support-v4.jar is now in this 'Android Private Libraries' section. To fix this, go to 'Order and Export' and check 'Android Private Libraries'. Then refresh/clean/rebuild. After you done this 'fix' for a library project, you may need to just close and re-open any depending project, because they may not see this 'fix' immediately.

Give this a shot and with luck it will solve your problem.

https://i.stack.imgur.com/SbEWS.png


CommonsWare is like always one of the first pioneers, thank you so much! :)
Avery new ADT version a new surprise ;) Hope the new build system will be better. Thank you CommonsWare
Is it just me, or does it sound wrong to have every Developer [that uses Eclipse and Libraries] go in to all of their library projects and mark "Android Private Libraries" as Exported? This makes me think that we have all mistaken the intention of Google adding this new "feature" in the first place. Maybe we aren't supposed to mark the Libraries as Exported. Maybe we are supposed to add any missing jar files directly to our "libs" folder. Ex: This would allow my library project to use the latest android-support-v4.jar [v13], while ABS internally uses android-support-v4-12.jar.
@swooby: "Is it just me, or does it sound wrong to have every Developer [that uses Eclipse and Libraries] go in to all of their library projects and mark "Android Private Libraries" as Exported?" -- it is "wrong" insofar as it is a bug, acknowledged by the people who wrote the tools. "Maybe we are supposed to add any missing jar files directly to our "libs" folder" -- oh, you need to do that too, as you have for the past year-and-change. However, you still have to check this checkbox.
@Phillip: AFAIK, it's all projects. More accurately, I suppose, it's all projects that have stuff in libs/, but you may as well check it for all, in case you add stuff to libs/ some months later and forget about this.
Z
Zaixer

Simply checking Android Private Libraries was not enough, I also had to install Android SDK Build-tools in Android SDK Manager.


I can't confirm this is required, but I did not get past the error SimonSays ran into before installing it. It may only require proper setting of the export checkboxes as described above, but felt I should mention that I did along the way install the Build Tools.
this works for me. only changing the eclipse preferences is not enough.you might need to check out the installed build-tools in android SDK manager.
l
laaptu

I had also the same problem and my adt was 22.0.1. And none of the solution above worked. Further when adding a external library project to a working project.I always check the gen folder of working project and if R of external library project is there (along with package name),then only external library project is exported. And on my gen folder no packagename of external library was shown.

So I checked on project.properties file and there wasn't any external library link present android.library.reference.1= present. So I manually added the external library reference there ,even though I had added from project->properties->Java Build Path->Projects->Add. So manually editing the project.properties did all the work for me.

https://i.stack.imgur.com/xTUoB.png


I think it happened since the gui place to set android.library.reference.n is not java build path, but rather project->properties -> Android -> Library -> Add.... A gotcha.
R
RedSoft

I have encountered a similar problem, spent about 3 hours, but none of the proposed here decisions did not help... Finally I found a source of the problem: my project files & project.properties were read-only. Eclipse is simply silently ignoring any changes in library dependencies when I doing it in the GUI!


v
valerybodak

I had the same problem. It was because of the eclipse project. To solve it I created a new project in eclipse, copy my existing project classes and resources into it and then launched eclipse again and added my custom includes.


Too much hassle, CommonsWare's solution worked for me and I believe it would have worked for you too.
G
Gilson

I had the similar issue and my answer is slightly different from CommonsWare's. Here is my screenshot:

https://i.stack.imgur.com/GS9nF.png

After checking the libs back in my build started to work again.


I would be careful with this solution. Android Dependencies got replaced by Android Private Libraries and might only be still in there for legacy reasons. I guess it could be removed at any time.
n
n611x007

I had also the same problem,

https://i.stack.imgur.com/Gldhs.png