android: Update packaging to work with latest SDK

This removes dependencies on deprecated tools "ant" and "android project"

The new method relies on JAVA_HOME and ANDROID_SDK being set.

It also requires specific versions of the Android build-tools (26.0.1) and
platforms (android-23).  See updates to CONTRIBUTING.md and our Travis-CI
config for details.

Travis-CI and documentation also roll forward to latest public NDK r14b.
This commit is contained in:
Cody Northrop
2017-07-24 20:15:30 -06:00
committed by baldurk
parent ef84f494a2
commit a95d2bb625
2 changed files with 33 additions and 10 deletions
+32 -10
View File
@@ -57,23 +57,45 @@ target_link_libraries(renderdoccmd ${libraries})
install (TARGETS renderdoccmd DESTINATION bin)
if(ANDROID)
if(NOT DEFINED ENV{JAVA_HOME})
message(FATAL_ERROR "JAVA_HOME environment variable must be defined for Android build")
endif()
if(NOT DEFINED ENV{ANDROID_SDK})
message(FATAL_ERROR "ANDROID_SDK environment variable must be defined for Android build")
endif()
set(BUILD_TOOLS "$ENV{ANDROID_SDK}/build-tools/26.0.1")
set(ANDROID_JAR "$ENV{ANDROID_SDK}/platforms/android-23/android.jar")
set(RT_JAR "$ENV{JAVA_HOME}/jre/lib/rt.jar")
set(JAVA_BIN "$ENV{JAVA_HOME}/bin")
set(APK_TARGET_ID "android-23" CACHE STRING "The Target ID to build the APK for, use <android list targets> to choose another one.")
set(KEYSTORE ${CMAKE_CURRENT_BINARY_DIR}/debug.keystore)
add_custom_command(OUTPUT ${KEYSTORE}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${JAVA_BIN}/keytool -genkey -keystore ${KEYSTORE} -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=, OU=, O=, L=, S=, C=")
set(APK_FILE ${CMAKE_BINARY_DIR}/bin/RenderDocCmd.apk)
add_custom_target(apk ALL
DEPENDS ${APK_FILE})
DEPENDS ${APK_FILE}
DEPENDS ${KEYSTORE})
add_custom_command(OUTPUT ${APK_FILE}
DEPENDS renderdoc
DEPENDS renderdoccmd
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/android ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory libs/${ANDROID_ABI}
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:renderdoc> libs/${ANDROID_ABI}/libVkLayer_GLES_RenderDoc.so
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:renderdoccmd> libs/${ANDROID_ABI}/$<TARGET_FILE_NAME:renderdoccmd>
COMMAND android update project --path . --name RenderDocCmd --target ${APK_TARGET_ID}
COMMAND ant debug
COMMAND ${CMAKE_COMMAND} -E copy bin/RenderDocCmd-debug.apk ${APK_FILE}
COMMAND ${CMAKE_COMMAND} -E make_directory libs/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory libs/${ANDROID_ABI} libs/lib/${ANDROID_ABI}
COMMAND ${CMAKE_COMMAND} -E remove_directory libs/${ANDROID_ABI})
COMMAND ${CMAKE_COMMAND} -E make_directory libs/lib/${ANDROID_ABI}
COMMAND ${CMAKE_COMMAND} -E make_directory obj
COMMAND ${CMAKE_COMMAND} -E make_directory bin
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:renderdoc> libs/lib/${ANDROID_ABI}/libVkLayer_GLES_RenderDoc.so
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:renderdoccmd> libs/lib/${ANDROID_ABI}/$<TARGET_FILE_NAME:renderdoccmd>
COMMAND ${BUILD_TOOLS}/aapt package -f -m -S res -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
COMMAND ${JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${RT_JAR} -classpath ${ANDROID_JAR}:obj -sourcepath src src/org/renderdoc/renderdoccmd/*.java
COMMAND ${BUILD_TOOLS}/dx --dex --output=bin/classes.dex ./obj
COMMAND ${BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -S res -I ${ANDROID_JAR} -F RenderDocCmd-unaligned.apk bin libs
COMMAND ${BUILD_TOOLS}/zipalign -f 4 RenderDocCmd-unaligned.apk RenderDocCmd.apk
COMMAND ${BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE} --ks-pass pass:android --key-pass pass:android --ks-key-alias androiddebugkey RenderDocCmd.apk
COMMAND ${CMAKE_COMMAND} -E copy RenderDocCmd.apk ${APK_FILE})
endif()
+1
View File
@@ -23,6 +23,7 @@ mv android-7.1.1/* build-tools/25.0.2/
export ANDROID_HOME=`pwd`/tools
export JAVA_HOME="/usr/lib/jvm/java-8-oracle"
export ANDROID_NDK=`pwd`/android-ndk-r13b
export ANDROID_SDK=`pwd`
export PATH=`pwd`/android-ndk-r13b:$PATH
export PATH=`pwd`/tools:$PATH
export PATH=`pwd`/platform-tools:$PATH