android-plugin icon indicating copy to clipboard operation
android-plugin copied to clipboard

crash on run when "useProguard in Android := false"

Open andyli opened this issue 12 years ago • 8 comments

I would like to skip Proguard to accelerate the debug cycle. I've try setting useProguard in Android := false in build.scala, but after that, cleaned, recompiled the project, the program crashes (force close) on run.

andyli avatar Feb 08 '12 08:02 andyli

proguard is required to run on unmodified devices/emulators at the moment - need to update the docs.

jberkel avatar Feb 08 '12 09:02 jberkel

andyli you may modify emulator if you wish. I run and debug my code with useProguard in Android := false. There are 2things that you need:

  1. predex and preload appropriate libraries. For this you may use my fork, look at pull request "add ability to predex external libraries"
  2. modify your AndroidManifest.xml and add tag example of such manifest you may view at https://github.com/ezh/android-component-DigiSSHD/blob/master/AndroidManifest.xml.

I must note that without it development process have a huge slowdown. Because I use AspectJ as AOP for alter scala code that add more compilation time than ever. Without "useProguard in Android := false" development is pain

If you have any questions PM me

ezh avatar Feb 08 '12 22:02 ezh

@ezh Sounds very nice. Long build time is indeed a major issue for me to develop Android app using Scala... I will have a look to it and hope it will be merged soon. Thanks!

andyli avatar Feb 09 '12 14:02 andyli

@andyli have a look at #116 as well. It won't help with proguard on your app, like @ezh's predex/preload option, but it does at least skip proguard on your test project.

loganj avatar Feb 09 '12 15:02 loganj

Maybe I misunderstand something. I suspect, that @andyli discribe situation when installed application throw ClassNotFoundException or something like that (I saw it long time ago) because proguard skipped. There isn't scala runtime libraries at emulator by default and program crashed. It is default behavior. Just load all libraries to emulator. Or he point to other problem?

By the way, my copy paste incremental build process: with android libraries (overloading default aapt process to avoid id duplication) with aspectj weaving with png crunching without build native code

Generated 99 files Included 0 files from jar/zip files. Checking for deleted files Done! [info] Packaging /home/ezh/0projectsAndroid/android-DigiINETD.private/source/bin/digiINETD.apk [success] Total time: 18 s, completed 09.02.2012 19:06:07 3994 KB/s (823125 bytes in 0.201s) pkg: /data/local/tmp/digiINETD.apk Success [success] Total time: 4 s, completed 09.02.2012 19:06:11

I think, that it is a very nice time for such amount of build work. Please, note size - only 823125 without proguard. All stable libraries already at emulator. I think this is what @andyli want - something like that

Best regards, Alexey

ezh avatar Feb 09 '12 15:02 ezh

@ezh I think you understood @andyli correctly. If he's looking to get rid of some proguard time, there are at least two options: 1) use your predex/preload method, so proguard isn't needed at all; 2) use my patch, so that proguard isn't needed on the test project (but will still be needed on the main project). Yours is the better solution, but mine requires a little less work. I'm planning to try your branch myself soon.

loganj avatar Feb 09 '12 16:02 loganj

@loganj test is important part, you are right. if you have any thoughts about my fork - feel free to ask. Prepare emulator for uploading is all-sufficient task.

ezh avatar Feb 09 '12 16:02 ezh

@ezh I was simply using a unmodified emulatord the proguard skipped app crashed.

@loganj Thanks for your response, but I would like to skip proguard in the main project too.

Btw, it would be much nicer if there is a command in sbt that do all those predex/preload job. eg. something like: android:install-scala-emulator android:remove-scala-emulator

andyli avatar Feb 10 '12 03:02 andyli