1

I'm developing a library in c++ using the android NDK. Actually i created my project in android with both java and c++ sources. I can compile and run my project and all works fine.

Now i would like to force eclipse to reinstall the apk on the phone even if the java code is unchanged but something changed on the c++ side. Infact if i just change my c++ code and i launch the application the new library is not uploaded on the phone.

Do you know how i could achieve the result?

Thanks a lot!

hara
  • 3,274
  • 4
  • 37
  • 55

2 Answers2

4

I have encountered this problem too.

To solve this, you could touch a random java file in your project each time you compile the NDK project (easiest is to add it to the NDK makefile).
This way Eclipse is "fooled" into re-creating the APK.

Open the Eclipse Workspace containing your project and then enable Window | Preferences | General | Workspace | Refresh automatically. Otherwise, you may need to refresh the Workspace manually (F5) before Eclipse will detect the changed file(s) and rebuild the APK.

acksys
  • 492
  • 3
  • 11
adamk
  • 45,184
  • 7
  • 50
  • 57
  • hi adamk, thanks for your reply!I didn't understand what you mean with "touch"..how could i do that in the makefile? – hara Jul 11 '10 at 13:55
  • 1
    `touch` is a Unix utility which changes the timestamp of a file to the current time (it's also available under Cygwin). It causes Eclipse to believe that a file was recently edited, although it wasn't actually changed. – adamk Jul 11 '10 at 13:58
  • I tried to touch both .java and .class file in my project but eclipse still doesn't refresh my apk..it says "Application already deployed. No need to reinstall."...i post my custom eclipse builder on the question... – hara Jul 11 '10 at 14:26
  • Did you enable Window->Preferences->Workspace->Refresh Automatically? – adamk Jul 11 '10 at 14:57
1

Rather than touching a source file, I prefer deleting the apk file. With the "Refresh Automaticaly" option enabled, I found that it immediatly rebuilds the apk.

So I added that to my build. Here's my build alias:

alias b='ndk-build; rm -v ./bin/*.apk'

Judd
  • 11
  • 1