Eventually the build was ready, and uploaded! Somehow updating a patch put us back on the "Just In" tab on the app store for some nice visibility. Reception has been pretty ugly. One guy sent us a support email that just says "U suck". Thanks, not helpful.
Then we got a 1 star review with actual good info in it:
by Joe (December 12, 2010)This confused me for a bit. Our APK file is only 13 megs, and it supports moving to the SD card! After some digging I found out that the .so files generated by the NDK are copied out of the APK file on the SD card into main storage. It's also 20 megs!
Really? More than 20MB used in phone storage even
after moving it to SD? BUH-BYE!
After some more digging I found out that we were exporting all of our symbols, all 33,000 of them. Time for fvisibility=hidden.
In the makefile:
LOCAL_CFLAGS += -fvisibility=hidden
In our JNI files for any functions we need to call from java:
extern "C"I was happy, surely this was going to solve all problems! After a full rebuild taking 30 minutes our .so file was down to a disappointing 19 megs. More digging in the google groups led to a little command line tool shipped with the NDK.
__attribute__((visibility("default")))
void
Java_goldenhammer_BMSnowBase_YrgEngineInterface_ourFunc(JNIEnv*
env, jobject thiz)
arm-eabi-strip --strip-debug --strip-unneeded libxxx.so
This brought us down to 1 meg! Woot! arm-eabi-strip is located in android-ndk-r5/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin.
No comments:
Post a Comment