mirror of
https://github.com/zhigang1992/RubyMotion.git
synced 2026-04-07 22:42:10 +08:00
link the payload JNI library with the runtime, rebuild the apk file if the payload library changed
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user