Error: Your project contains C++ files but it is not using a supported native build system

本文介绍了解决Android开发中NDK配置问题的方法。通过在gradle.properties文件中添加特定行,并修改build.gradle(Module:app)文件来排除JNI源目录,帮助开发者正确配置并避免构建错误。

Add this line to gradle.properties file

android.useDeprecatedNdk=true





put this part in build.gradle(Module:app) above

buildTypes{
}sourceSets {
        main {
            jni.srcDirs = []
        }
    }

buildTypes{
}
share improve this answer

当系统日志中出现 `WARN Posix file attribute permissions not supported by file system` 的警告信息时,表明应用程序尝试设置 POSIX 文件权限,但当前文件系统不支持此类操作。 ### 原因分析 POSIX 文件权限机制依赖于底层文件系统的支持。某些文件系统(如 FAT、NTFS 或某些网络文件系统)并不支持 POSIX 的文件权限模型。在这种情况下,尝试使用 Java 的 `Files.setPosixFilePermissions()` 方法或某些日志框架(如 Log4j 2)在配置中指定 `filePermissions` 属性时,会触发该警告[^2]。 ### 影响范围 该警告常见于以下场景: - 使用 Log4j 2 的 `RollingFileAppender`,在配置中指定了 `filePermissions` 属性,如 `rw-r--r--` 等权限设置[^3]。 - Java 应用程序使用 `java.nio.file.Files` 的 `setPosixFilePermissions` 方法来设置文件权限时[^2]。 - 应用部署在不支持 POSIX 权限的文件系统上,例如 Windows 文件系统通过 WSL 或网络挂载目录。 ### 解决方案 1. **更换文件系统** 将文件存储路径迁移至支持 POSIX 权限的文件系统,如 ext4、XFS 或某些配置下的 NFS。这是根本性解决方式,但可能受限于部署环境。 2. **避免设置 POSIX 权限** 在 Log4j 2 配置中移除 `filePermissions` 属性,或在 Java 代码中跳过调用 `setPosixFilePermissions` 方法。此方式适用于不依赖特定文件权限的运行环境。 示例:修改 Log4j2.xml 中的 RollingFile 配置,去掉 `filePermissions` 属性[^3]: ```xml <RollingFile name="RollingFileInfo" fileName="/var/log/springboot/spring-boot-start0.log" filePattern="/var/log/springboot/spring-boot-start0-%d{yyyy-MM-dd}-%i.log"> <Filters> <ThresholdFilter level="INFO"/> </Filters> <PatternLayout charset="UTF-8" pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100M"/> </Policies> </RollingFile> ``` 3. **使用兼容性封装或适配层** 在代码中增加对文件系统能力的检测逻辑,仅在支持 POSIX 权限时调用相关 API。例如,在 Java 中可以先检查文件系统的支持情况再决定是否设置权限: ```java import java.nio.file.*; import java.nio.file.attribute.*; import java.util.*; public class PosixPermissionSetter { public static void setPermissions(Path path) { try { Set<PosixFilePermission> perms = new HashSet<>(); perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.OWNER_WRITE); perms.add(PosixFilePermission.GROUP_READ); perms.add(PosixFilePermission.OTHERS_READ); Files.setPosixFilePermissions(path, perms); } catch (UnsupportedOperationException e) { System.err.println("File system does not support POSIX file permissions."); } catch (Exception e) { e.printStackTrace(); } } } ``` 4. **环境适配与日志记录抑制** 如果警告不影响实际功能,可以选择性地抑制日志输出。例如,在日志框架中调整日志级别以避免记录此类警告信息。 ### 注意事项 - 在生产环境中,建议始终使用支持 POSIX 权限的文件系统以确保安全性和一致性。 - 如果应用部署在容器或虚拟化环境中,需检查挂载卷的文件系统类型及其权限模型。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值