mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
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:
+32
-10
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user