gpt4 book ai didi

android - 为什么 Android Studio 会忽略我在 OSX 上的 .bashrc 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:22:01 24 4
gpt4 key购买 nike

我已经下载了一个使用Android的ndk的项目。 gradle 文件包含以下行:

task ndkBuild(type: Exec) {
commandLine 'ndk-build', '-B', '-C', file('src/main/jni').absolutePath
}

这在运行 ./gradlew assembleDebug 时工作正常。我的 ~/.bashrc 中有以下内容:

# Append android sdk paths and stuff.
export ANDROID_HOME=/Users/gradha/instalacion_manual/android-sdk-r10-mac_x86
#export ANDROID_NDK_ROOT=/Users/gradha/instalacion_manual/android-ndk-r8b
export ANDROID_NDK_ROOT=/Users/gradha/instalacion_manual/android-ndk-r10e
export NDK_PATH="${ANDROID_NDK_ROOT}"
export NDK_HOME="${ANDROID_NDK_ROOT}"
export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/Users/gradha/instalacion_manual/apache-maven-3.3.3/bin:"${ANDROID_NDK_ROOT}"

但是,当我尝试从 Android Studio 内部构建项目时,我得到了

process.internal.ExecException: A problem occurred starting process 'command 'ndk-build''
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:196)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:325)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:83)
... 1 more
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'ndk-build'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:65)
... 1 more
Caused by: java.io.IOException: Cannot run program "ndk-build" (in directory "/Users/gradha/project/questionity/archivo/SuperpoweredSDK/Android/CrossExample/app"): error=2, No such file or directory
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 3 more
Caused by: java.io.IOException: error=2, No such file or directory
... 4 more

这表明 PATH 变量未在环境中正确设置,甚至 ndk-build 进程也无法运行。 Touching .bashrc is supposed to make this work .为什么 Android Studio 不获取 .bashrc 文件中指定的 PATH 环境变量?

编辑伪答案:Android Studio 遵循other development environments like Xcode以避免用户个人配置文件改变软件构建过程。正确的解决方法,like Alex mentions是读取外部 local.properties 文件,其中包含指向正确路径的 ndk.dir 变量,并获取此变量以构建到 ndk- 的完整路径build 而不是依赖于环境的 PATHlocal.properties 文件可以不受源代码控制,并且可以针对每次 check out 进行自定义。

最佳答案

对于 Android Studio 损坏的 PATH,我们无能为力,但很容易解决 ndk-build 的问题 - 一劳永逸。

将以下 block 添加到模块(应用程序或库)的build.gradle 文件的顶部:

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def ndkBuild = properties.getProperty('ndk.dir') + '/ndk-build'
import org.apache.tools.ant.taskdefs.condition.Os
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
ndkBuild += '.cmd'
}

这是 gradle 任务:

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
commandLine "$ndkBuild" …
}

关于android - 为什么 Android Studio 会忽略我在 OSX 上的 .bashrc 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33725630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com