ndk_note

本文深入探讨了Android开发中JNI(Java Native Interface)的使用技巧与实践案例,包括如何在Java环境中调用C/C++代码,以及JNI在跨平台开发中的优势与局限性。通过实例讲解,读者将掌握JNI的高级应用,从而提升Android应用的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/HelloJni/jni/include

D:\apps\android-ndk-r9d\platforms\android-8\arch-arm\usr\include



#!/bin/bash set -e if [[ -z ${ANDROID_NDK_PATH} ]];then echo "Please set ANDROID_NDK_PATH, such as ANDROID_NDK_PATH=~/opts/ndk/android-ndk-r18b" echo "NDK Version r18, r19 is recommanded. Other version may cause build failure." exit fi if [[ -e ${ANDROID_NDK_PATH}/source.properties ]];then ndk_version=`strings ${ANDROID_NDK_PATH}/source.properties | grep -oE 'Revision = ([0-9]+)' | awk '{print $NF}'` # echo "NDK Version ${ndk_version}" if [ "$ndk_version" != "18" ] && [ "$ndk_version" != "19" ] && [ "$ndk_version" != "" ]; then #`"$ndk_version" != ""` used to avoid build script reporting error when it cannot read ndk_version echo "NDK Version ${ndk_version} is not recommanded. Please use 18 or 19" exit fi fi echo "$0 $@" while getopts ":t:a:d:b:m:r" opt; do case $opt in t) TARGET_SOC=$OPTARG ;; a) TARGET_ARCH=$OPTARG ;; d) BUILD_DEMO_NAME=$OPTARG ;; b) BUILD_TYPE=$OPTARG ;; m) ENABLE_ASAN=ON export ENABLE_ASAN=TRUE ;; r) DISABLE_RGA=ON ;; :) echo "Option -$OPTARG requires an argument." exit 1 ;; ?) echo "Invalid option: -$OPTARG index:$OPTIND" ;; esac done if [ -z ${TARGET_SOC} ] || [ -z ${TARGET_ARCH} ] || [ -z ${BUILD_DEMO_NAME} ]; then echo "$0 -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]" echo "" echo " -t : target (rk356x/rk3588/rk3576)" echo " -a : arch (arm64-v8a/armeabi-v7a)" echo " -d : demo name" echo " -b : build_type (Debug/Release)" echo " -m : enable address sanitizer, build_type need set to Debug" echo " -r : disable rga, use cpu resize image" echo "such as: $0 -t rk3588 -a arm64-v8a -d yolov5" echo "Note: 'disable rga option is invalid for rv1103/rv1103b/rv1106" echo "" exit -1 fi # Debug / Release / RelWithDebInfo if [[ -z ${BUILD_TYPE} ]];then BUILD_TYPE=Release fi这个脚本什么作用
03-12
~/.../python-for-android-develop/pythonforandroid $ ls __init__.py includes androidndk.py logger.py archs.py patching.py bdistapk.py prerequisites.py bootstrap.py pythonpackage.py bootstraps recipe.py build.py recipes checkdependencies.py recommendations.py distribution.py toolchain.py entrypoints.py tools graph.py util.py ~/.../python-for-android-develop/pythonforandroid $ cat __init__.py __version__ = '2024.01.21' ~/.../python-for-android-develop/pythonforandroid $ cat androidndk.py import sys import os class AndroidNDK: """ This class is used to get the current NDK information. """ ndk_dir = "" def __init__(self, ndk_dir): self.ndk_dir = ndk_dir @property def host_tag(self): """ Returns the host tag for the current system. Note: The host tag is ``darwin-x86_64`` even on Apple Silicon macs. """ return f"{sys.platform}-x86_64" @property def llvm_prebuilt_dir(self): return os.path.join( self.ndk_dir, "toolchains", "llvm", "prebuilt", self.host_tag ) @property def llvm_bin_dir(self): return os.path.join(self.llvm_prebuilt_dir, "bin") @property def clang(self): return os.path.join(self.llvm_bin_dir, "clang") @property def clang_cxx(self): return os.path.join(self.llvm_bin_dir, "clang++") @property def llvm_binutils_prefix(self): return os.path.join(self.llvm_bin_dir, "llvm-") @property def llvm_ar(self): return f"{self.llvm_binutils_prefix}ar" @property def llvm_ranlib(self): return f"{self.llvm_binutils_prefix}ranlib" @property def llvm_objcopy(self): return f"{self.llvm_binutils_prefix}objcopy" @property def llvm_objdump(self): return f"{self.llvm_binutils_prefix}objdump" @property def llvm_readelf(self): return f"{self.llvm_binutils_prefix}readelf" @property def llvm_strip(self): return f"{self.llvm_binutils_prefix}strip" @property def sysroot(self): return os.path.join(self.llvm_prebuilt_dir, "sysroot") @property def sysroot_include_dir(self): return os.path.join(self.sysroot, "usr", "include") @property def sysroot_lib_dir(self): return os.path.join(self.sysroot, "usr", "lib") @property def libcxx_include_dir(self): return os.path.join(self.sysroot_include_dir, "c++", "v1") ~/.../python-for-android-develop/pythonforandroid $
最新发布
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值