Просмотр исходного кода

Suppress policy CMP0054 dev warnings on Android build.
Enhance android rake task to have additional option to install the APK before testing it.
[ci only: Android]

Yao Wei Tjong 姚伟忠 10 лет назад
Родитель
Сommit
a3e0072e79
2 измененных файлов с 20 добавлено и 5 удалено
  1. 3 3
      CMake/Toolchains/android.toolchain.cmake
  2. 17 2
      Rakefile

+ 3 - 3
CMake/Toolchains/android.toolchain.cmake

@@ -269,7 +269,7 @@ endmacro()
 macro( __INIT_VARIABLE var_name )
   set( __test_path 0 )
   foreach( __var ${ARGN} )
-    if( __var STREQUAL "PATH" )
+    if( __var STREQUAL PATH )   # Urho3D: avoid CMP0054 warning
       set( __test_path 1 )
       break()
     endif()
@@ -284,7 +284,7 @@ macro( __INIT_VARIABLE var_name )
     foreach( __var ${ARGN} )
       if( __var STREQUAL "VALUES" )
         set( __values 1 )
-      elseif( NOT __var STREQUAL "PATH" )
+      elseif( NOT __var STREQUAL PATH )      # Urho3D: avoid CMP0054 warning
         if( __var MATCHES "^ENV_.*$" )
           string( REPLACE "ENV_" "" __var "${__var}" )
           set( __value "$ENV{${__var}}" )
@@ -481,7 +481,7 @@ if( BUILD_WITH_ANDROID_NDK )
   set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../${ANDROID_NDK_HOST_SYSTEM_NAME}/toolchain" )
   set( ANDROID_NDK_TOOLCHAINS_SUBPATH  "" )
   set( ANDROID_NDK_TOOLCHAINS_SUBPATH2 "" )
- elseif( ANDROID_NDK_LAYOUT STREQUAL "ANDROID" )
+ elseif( ANDROID_NDK_LAYOUT STREQUAL ANDROID )      # Urho3D: avoid CMP0054 warning
   set( ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_NDK_HOST_SYSTEM_NAME2} ) # only 32-bit at the moment
   set( ANDROID_NDK_TOOLCHAINS_PATH "${ANDROID_NDK}/../../gcc/${ANDROID_NDK_HOST_SYSTEM_NAME}/arm" )
   set( ANDROID_NDK_TOOLCHAINS_SUBPATH  "" )

+ 17 - 2
Rakefile

@@ -161,8 +161,8 @@ task :make do
   system "cd \"#{build_tree}\" && #{ccache_envvar} cmake --build . #{cmake_build_options} -- #{build_options} #{filter}" or abort
 end
 
-# Usage: rake android [parameter='--es pickedLibrary Urho3DPlayer'] [intent=.SampleLauncher] [package=com.github.urho3d] [success_indicator='Initialized engine'] [payload='sleep 30'] [api=19] [abi=armeabi-v7a] [avd=test_#{api}_#{abi}] [retries=10] [retry_interval=10]
-desc 'Test run already installed APK in Android (virtual) device, default to Urho3D Samples APK if no parameter is given'
+# Usage: rake android [parameter='--es pickedLibrary Urho3DPlayer'] [intent=.SampleLauncher] [package=com.github.urho3d] [success_indicator='Initialized engine'] [payload='sleep 30'] [api=19] [abi=armeabi-v7a] [avd=test_#{api}_#{abi}] [retries=10] [retry_interval=10] [install]
+desc 'Test run APK in Android (virtual) device, default to Urho3D Samples APK if no parameter is given'
 task :android do
   parameter = ENV['parameter'] || '--es pickedLibrary Urho3DPlayer'
   intent = ENV['intent'] || '.SampleLauncher'
@@ -174,8 +174,23 @@ task :android do
   avd = ENV['avd'] || "test_#{api}_#{abi}"
   retries = ENV['retries'] || 10 # minutes
   retry_interval = ENV['retry_interval'] || 10 # seconds
+  build_tree = ENV['android_build_tree'] || ENV['build_tree'] || '../android-Build'
+  install = false
+  ARGV.each { |option|
+    task option.to_sym do ; end; Rake::Task[option].clear   # No-op hack
+    case option
+    when 'install'
+      install = true
+    end
+  }
   android_prepare_device api, abi, avd or abort 'Failed to prepare Android (virtual) device for test run'
+  if install
+    system "cd \"#{build_tree}\" && android update project -p . -t $(android list target |grep android-#{api} |cut -d ' ' -f2) && ant debug" or abort 'Failed to generate APK'
+  end
   android_wait_for_device retries, retry_interval or abort 'Failed to start Android (virtual) device'
+  if install
+    system "cd \"#{build_tree}\" && ant -Dadb.device.arg='-s #{$specific_device}' installd" or abort 'Failed to install APK'
+  end
   android_test_run parameter, intent, package, success_indicator, payload or abort "Failed to test run #{package}/#{intent}, make sure the APK has been installed"
 end