link the payload JNI library with the runtime, rebuild the apk file if the payload library changed

This commit is contained in:
Laurent Sansonetti
2013-12-18 20:01:17 +01:00
parent 7ca01db686
commit 9edffa8925

View File

@@ -31,10 +31,12 @@ require 'motion/project/template/android/config'
desc "Create an application package file (.apk)"
task :build do
libpayload_subpath = "lib/armeabi/libpayload.so"
# XXX
FileUtils.mkdir_p("#{App.config.build_dir}/lib/armeabi")
sh "#{App.config.ndk_path}/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc -MMD -MP -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -O0 -UNDEBUG -marm -fno-omit-frame-pointer -Ijni -DANDROID -Wa,--noexecstack -I\"#{App.config.ndk_path}/platforms/android-14/arch-arm/usr/include\" -c #{App.config.build_dir}/payload.c -o #{App.config.build_dir}/payload.o"
sh "#{App.config.ndk_path}/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -Wl,-soname,libpayload.so -shared --sysroot=\"#{App.config.ndk_path}/platforms/android-14/arch-arm\" #{App.config.build_dir}/payload.o -no-canonical-prefixes -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lc -lm -llog -o #{App.config.build_dir}/lib/armeabi/libpayload.so"
FileUtils.mkdir_p("#{App.config.build_dir}/#{File.dirname(libpayload_subpath)}")
sh "#{App.config.ndk_path}/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc -MMD -MP -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -O0 -UNDEBUG -marm -fno-omit-frame-pointer -Ijni -DANDROID -Wa,--noexecstack -I\"#{App.config.ndk_path}/platforms/android-#{App.config.api_level}/arch-arm/usr/include\" -c #{App.config.build_dir}/payload.c -o #{App.config.build_dir}/payload.o"
sh "#{App.config.ndk_path}/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -Wl,-soname,libpayload.so -shared --sysroot=\"#{App.config.ndk_path}/platforms/android-#{App.config.api_level}/arch-arm\" #{App.config.build_dir}/payload.o -no-canonical-prefixes -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lc -lm -llog -o #{App.config.build_dir}/#{libpayload_subpath} -L#{File.join(App.config.motiondir, 'data', 'android', App.config.api_level, 'arm')} -lmacruby-static -L#{App.config.ndk_path}/sources/cxx-stl/stlport/libs/armeabi -lstlport_static -g"
# XXX
classes_dir = File.join(App.config.build_dir, 'classes')
@@ -84,13 +86,13 @@ EOS
end
archive = App.config.apk_path
if !File.exist?(archive) or File.mtime(dex_classes) > File.mtime(archive)
if !File.exist?(archive) or File.mtime(dex_classes) > File.mtime(archive) or File.mtime(File.join(App.config.build_dir, libpayload_subpath)) > File.mtime(archive)
App.info 'Create', archive
resource_flags = App.config.resources_dirs.map { |x| '-S "' + x + '"' }.join(' ')
sh "\"#{App.config.build_tools_dir}/aapt\" package -f -M \"#{android_manifest}\" #{resource_flags} -I \"#{App.config.sdk_path}/platforms/android-#{App.config.api_level}/android.jar\" -F \"#{archive}\""
Dir.chdir(App.config.build_dir) do
sh "\"#{App.config.build_tools_dir}/aapt\" add -f \"../#{archive}\" \"#{File.basename(dex_classes)}\""
sh "\"#{App.config.build_tools_dir}/aapt\" add -f \"../#{archive}\" lib/armeabi/libpayload.so"
sh "\"#{App.config.build_tools_dir}/aapt\" add -f \"../#{archive}\" #{libpayload_subpath}"
end
debug_keystore = File.expand_path('~/.android/debug.keystore')