瀏覽代碼

Reviewed and Updated Android compilation scripts

Ray 5 年之前
父節點
當前提交
966e8adcf9

+ 10 - 9
examples/Makefile.Android

@@ -26,8 +26,10 @@ PLATFORM               ?= PLATFORM_ANDROID
 RAYLIB_PATH            ?= ..\..
 RAYLIB_PATH            ?= ..\..
 
 
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
+# Starting in 2019 using ARM64 is mandatory for published apps,
+# and minimum required target API is Android 9 (API level 28)
 ANDROID_ARCH           ?= ARM
 ANDROID_ARCH           ?= ARM
-ANDROID_API_VERSION     = 21
+ANDROID_API_VERSION     = 28
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
     ANDROID_ARCH_NAME   = armeabi-v7a
     ANDROID_ARCH_NAME   = armeabi-v7a
 endif
 endif
@@ -36,11 +38,11 @@ ifeq ($(ANDROID_ARCH),ARM64)
 endif
 endif
 
 
 # Required path variables
 # Required path variables
-# NOTE: JAVA_HOME must be set to JDK
-JAVA_HOME              ?= C:/JavaJDK
+# NOTE: JAVA_HOME must be set to JDK (using OpenJDK 13)
+JAVA_HOME              ?= C:/open-jdk
 ANDROID_HOME            = C:/android-sdk
 ANDROID_HOME            = C:/android-sdk
-ANDROID_TOOLCHAIN       = C:/android_toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
-ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/28.0.1
+ANDROID_TOOLCHAIN       = C:/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64
+ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/29.0.3
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 
 
 # Android project configuration variables
 # Android project configuration variables
@@ -81,13 +83,12 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
 endif
 endif
 
 
 # Compiler and archiver
 # Compiler and archiver
-# NOTE: GCC is being deprecated in Android NDK r16
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
-    CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
 endif
 endif
 ifeq ($(ANDROID_ARCH),ARM64)
 ifeq ($(ANDROID_ARCH),ARM64)
-    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
 endif
 endif
 
 
@@ -274,7 +275,7 @@ zipalign_project_apk_package:
 # Install $(PROJECT_NAME).apk to default emulator/device
 # Install $(PROJECT_NAME).apk to default emulator/device
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 install:
 install:
-	$(ANDROID_PLATFORM_TOOLS)/adb install --abi $(ANDROID_ARCH_NAME) -rds $(PROJECT_NAME).apk
+	$(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk
     
     
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 check_device_abi:
 check_device_abi:

+ 14 - 15
src/Makefile

@@ -157,24 +157,19 @@ endif
 
 
 ifeq ($(PLATFORM),PLATFORM_ANDROID)
 ifeq ($(PLATFORM),PLATFORM_ANDROID)
     # Android architecture: ARM64
     # Android architecture: ARM64
-    # Starting at 2019 using ARM64 is mandatory for published apps
+    # Starting at 2019 using ARM64 is mandatory for published apps,
+    # and minimum required target API is Android 9 (API level 28)
     ANDROID_ARCH ?= ARM
     ANDROID_ARCH ?= ARM
-    ANDROID_API_VERSION = 26
+    ANDROID_API_VERSION = 28
 
 
     # Android required path variables
     # Android required path variables
-    # NOTE: Android NDK is just required to generate the standalone toolchain,
-    # in case is not already provided
+    # NOTE: Starting with Android NDK r21, no more toolchain generation is required, NDK is the toolchain on itself
     ifeq ($(OS),Windows_NT)
     ifeq ($(OS),Windows_NT)
-        ANDROID_NDK = C:/android-ndk
+        ANDROID_NDK = C:/android-ndk-r21
+        ANDROID_TOOLCHAIN = $(ANDROID_NDK)/toolchains/llvm/prebuilt/windows-x86_64
     else
     else
         ANDROID_NDK = /usr/lib/android/ndk
         ANDROID_NDK = /usr/lib/android/ndk
-    endif
-
-    # Android standalone toolchain path
-    ifeq ($(OS),Windows_NT)
-        ANDROID_TOOLCHAIN = C:/android_toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
-    else
-        ANDROID_TOOLCHAIN = /usr/lib/android/toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
+        ANDROID_TOOLCHAIN = $(ANDROID_NDK)/toolchains/llvm/prebuilt/linux
     endif
     endif
 
 
     ifeq ($(ANDROID_ARCH),ARM)
     ifeq ($(ANDROID_ARCH),ARM)
@@ -248,11 +243,11 @@ endif
 ifeq ($(PLATFORM),PLATFORM_ANDROID)
 ifeq ($(PLATFORM),PLATFORM_ANDROID)
     # Android toolchain (must be provided for desired architecture and compiler)
     # Android toolchain (must be provided for desired architecture and compiler)
     ifeq ($(ANDROID_ARCH),ARM)
     ifeq ($(ANDROID_ARCH),ARM)
-        CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
+        CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang
         AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
         AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
     endif
     endif
     ifeq ($(ANDROID_ARCH),ARM64)
     ifeq ($(ANDROID_ARCH),ARM64)
-        CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
+        CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang
         AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
         AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
     endif
     endif
     ifeq ($(ANDROID_ARCH),x86)
     ifeq ($(ANDROID_ARCH),x86)
@@ -298,9 +293,13 @@ endif
 ifeq ($(RAYLIB_BUILD_MODE),RELEASE)
 ifeq ($(RAYLIB_BUILD_MODE),RELEASE)
     ifeq ($(PLATFORM),PLATFORM_WEB)
     ifeq ($(PLATFORM),PLATFORM_WEB)
         CFLAGS += -Os
         CFLAGS += -Os
-    else
+    endif
+    ifeq ($(PLATFORM),PLATFORM_DESKTOP)
         CFLAGS += -s -O1
         CFLAGS += -s -O1
     endif
     endif
+    ifeq ($(PLATFORM),PLATFORM_ANDROID)
+        CFLAGS += -O2
+    endif
 endif
 endif
 
 
 # Additional flags for compiler (if desired)
 # Additional flags for compiler (if desired)

+ 9 - 8
templates/advance_game/Makefile.Android

@@ -26,6 +26,8 @@ PLATFORM               ?= PLATFORM_ANDROID
 RAYLIB_PATH            ?= ..\..
 RAYLIB_PATH            ?= ..\..
 
 
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
+# Starting in 2019 using ARM64 is mandatory for published apps,
+# and minimum required target API is Android 9 (API level 28)
 ANDROID_ARCH           ?= ARM
 ANDROID_ARCH           ?= ARM
 ANDROID_API_VERSION     = 21
 ANDROID_API_VERSION     = 21
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
@@ -36,11 +38,11 @@ ifeq ($(ANDROID_ARCH),ARM64)
 endif
 endif
 
 
 # Required path variables
 # Required path variables
-# NOTE: JAVA_HOME must be set to JDK
-JAVA_HOME              ?= C:/JavaJDK
+# NOTE: JAVA_HOME must be set to JDK (using OpenJDK 13)
+JAVA_HOME              ?= C:/open-jdk
 ANDROID_HOME            = C:/android-sdk
 ANDROID_HOME            = C:/android-sdk
-ANDROID_TOOLCHAIN       = C:/android_toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
-ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/28.0.1
+ANDROID_TOOLCHAIN       = C:/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64
+ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/29.0.3
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 
 
 # Android project configuration variables
 # Android project configuration variables
@@ -81,13 +83,12 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
 endif
 endif
 
 
 # Compiler and archiver
 # Compiler and archiver
-# NOTE: GCC is being deprecated in Android NDK r16
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
-    CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
 endif
 endif
 ifeq ($(ANDROID_ARCH),ARM64)
 ifeq ($(ANDROID_ARCH),ARM64)
-    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
 endif
 endif
 
 
@@ -274,7 +275,7 @@ zipalign_project_apk_package:
 # Install $(PROJECT_NAME).apk to default emulator/device
 # Install $(PROJECT_NAME).apk to default emulator/device
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 install:
 install:
-	$(ANDROID_PLATFORM_TOOLS)/adb install --abi $(ANDROID_ARCH_NAME) -rds $(PROJECT_NAME).apk
+	$(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk
     
     
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 check_device_abi:
 check_device_abi:

+ 10 - 9
templates/simple_game/Makefile.Android

@@ -26,8 +26,10 @@ PLATFORM               ?= PLATFORM_ANDROID
 RAYLIB_PATH            ?= ..\..
 RAYLIB_PATH            ?= ..\..
 
 
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
+# Starting in 2019 using ARM64 is mandatory for published apps,
+# and minimum required target API is Android 9 (API level 28)
 ANDROID_ARCH           ?= ARM
 ANDROID_ARCH           ?= ARM
-ANDROID_API_VERSION     = 21
+ANDROID_API_VERSION     = 28
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
     ANDROID_ARCH_NAME   = armeabi-v7a
     ANDROID_ARCH_NAME   = armeabi-v7a
 endif
 endif
@@ -36,11 +38,11 @@ ifeq ($(ANDROID_ARCH),ARM64)
 endif
 endif
 
 
 # Required path variables
 # Required path variables
-# NOTE: JAVA_HOME must be set to JDK
-JAVA_HOME              ?= C:/JavaJDK
+# NOTE: JAVA_HOME must be set to JDK (using OpenJDK 13)
+JAVA_HOME              ?= C:/open-jdk
 ANDROID_HOME            = C:/android-sdk
 ANDROID_HOME            = C:/android-sdk
-ANDROID_TOOLCHAIN       = C:/android_toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
-ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/28.0.1
+ANDROID_TOOLCHAIN       = C:/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64
+ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/29.0.3
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 
 
 # Android project configuration variables
 # Android project configuration variables
@@ -81,13 +83,12 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
 endif
 endif
 
 
 # Compiler and archiver
 # Compiler and archiver
-# NOTE: GCC is being deprecated in Android NDK r16
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
-    CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
 endif
 endif
 ifeq ($(ANDROID_ARCH),ARM64)
 ifeq ($(ANDROID_ARCH),ARM64)
-    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
 endif
 endif
 
 
@@ -274,7 +275,7 @@ zipalign_project_apk_package:
 # Install $(PROJECT_NAME).apk to default emulator/device
 # Install $(PROJECT_NAME).apk to default emulator/device
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 install:
 install:
-	$(ANDROID_PLATFORM_TOOLS)/adb install --abi $(ANDROID_ARCH_NAME) -rds $(PROJECT_NAME).apk
+	$(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk
     
     
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 check_device_abi:
 check_device_abi:

+ 10 - 9
templates/standard_game/Makefile.Android

@@ -26,8 +26,10 @@ PLATFORM               ?= PLATFORM_ANDROID
 RAYLIB_PATH            ?= ..\..
 RAYLIB_PATH            ?= ..\..
 
 
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
 # Define Android architecture (armeabi-v7a, arm64-v8a, x86, x86-64) and API version
+# Starting in 2019 using ARM64 is mandatory for published apps,
+# and minimum required target API is Android 9 (API level 28)
 ANDROID_ARCH           ?= ARM
 ANDROID_ARCH           ?= ARM
-ANDROID_API_VERSION     = 21
+ANDROID_API_VERSION     = 28
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
     ANDROID_ARCH_NAME   = armeabi-v7a
     ANDROID_ARCH_NAME   = armeabi-v7a
 endif
 endif
@@ -36,11 +38,11 @@ ifeq ($(ANDROID_ARCH),ARM64)
 endif
 endif
 
 
 # Required path variables
 # Required path variables
-# NOTE: JAVA_HOME must be set to JDK
-JAVA_HOME              ?= C:/JavaJDK
+# NOTE: JAVA_HOME must be set to JDK (using OpenJDK 13)
+JAVA_HOME              ?= C:/open-jdk
 ANDROID_HOME            = C:/android-sdk
 ANDROID_HOME            = C:/android-sdk
-ANDROID_TOOLCHAIN       = C:/android_toolchain_$(ANDROID_ARCH)_API$(ANDROID_API_VERSION)
-ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/28.0.1
+ANDROID_TOOLCHAIN       = C:/android-ndk-r21/toolchains/llvm/prebuilt/windows-x86_64
+ANDROID_BUILD_TOOLS     = $(ANDROID_HOME)/build-tools/29.0.3
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 ANDROID_PLATFORM_TOOLS  = $(ANDROID_HOME)/platform-tools
 
 
 # Android project configuration variables
 # Android project configuration variables
@@ -81,13 +83,12 @@ ifeq ($(RAYLIB_LIBTYPE),SHARED)
 endif
 endif
 
 
 # Compiler and archiver
 # Compiler and archiver
-# NOTE: GCC is being deprecated in Android NDK r16
 ifeq ($(ANDROID_ARCH),ARM)
 ifeq ($(ANDROID_ARCH),ARM)
-    CC = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/armv7a-linux-androideabi$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/arm-linux-androideabi-ar
 endif
 endif
 ifeq ($(ANDROID_ARCH),ARM64)
 ifeq ($(ANDROID_ARCH),ARM64)
-    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-clang
+    CC = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android$(ANDROID_API_VERSION)-clang
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
     AR = $(ANDROID_TOOLCHAIN)/bin/aarch64-linux-android-ar
 endif
 endif
 
 
@@ -274,7 +275,7 @@ zipalign_project_apk_package:
 # Install $(PROJECT_NAME).apk to default emulator/device
 # Install $(PROJECT_NAME).apk to default emulator/device
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 # NOTE: Use -e (emulator) or -d (device) parameters if required
 install:
 install:
-	$(ANDROID_PLATFORM_TOOLS)/adb install --abi $(ANDROID_ARCH_NAME) -rds $(PROJECT_NAME).apk
+	$(ANDROID_PLATFORM_TOOLS)/adb install $(PROJECT_NAME).apk
     
     
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 # Check supported ABI for the device (armeabi-v7a, arm64-v8a, x86, x86_64)
 check_device_abi:
 check_device_abi: