修改app.json的name字段含非ASCII字符致EAS构建失败求助
问题:EAS构建含非ASCII土耳其字符的Expo项目失败
修改app.json的name字段为包含土耳其非ASCII字符(例如"Çevrim dışı İngilizce")时,EAS构建失败;保持原字段内容则无错误。
Gradle构建日志
Running 'gradlew :app:assembleRelease' in /home/expo/workingdir/build/android Downloading https://services.gradle.org/distributions/gradle-8.3-all.zip 10% 20%. 30%. 40% 50 %. 60%. 70% 80% 90%. 100% Welcome to Gradle 8.3! Here are the highlights of this release: - Faster Java compilation - Reduced memory usage - Support for running on Java 20 For more details see https://docs.gradle.org/8.3/release-notes.html To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.3/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build > Configure project : Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Task :gradle-plugin:pluginDescriptors > Task :gradle-plugin:processResources > Task :gradle-plugin:compileKotlin > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:classes > Task :gradle-plugin:jar > Task :gradle-plugin:inspectClassesForKotlinIC > Configure project :expo-modules-core Checking the license for package NDK (Side by side) 25.1.8937393 in /home/expo/Android/Sdk/licenses License for package NDK (Side by side) 25.1.8937393 accepted. Preparing "Install NDK (Side by side) 25.1.8937393 v.25.1.8937393". "Install NDK (Side by side) 25.1.8937393 v.25.1.8937393" ready. Installing NDK (Side by side) 25.1.8937393 in /home/expo/Android/Sdk/ndk/25.1.8937393 "Install NDK (Side by side) 25.1.8937393 v.25.1.8937393" complete. "Install NDK (Side by side) 25.1.8937393 v.25.1.8937393" finished. Path for java installation '/usr/lib/jvm/openjdk-17' (Common Linux Locations) does not contain a java executable > Configure project :expo Using expo modules - [32mexpo-constants[0m (15.4.5) - [32mexpo-file-system[0m (16.0.8) - [32mexpo-font[0m (11.10.3) - [32mexpo-keep-awake[0m (12.8.2) - [32mexpo-modules-core[0m (1.11.10) - [32mexpo-modules-core$android-annotation[0m (1.11.10) - [32mexpo-modules-core$android-annotation-processor[0m (1.11.10) - [32mexpo-speech[0m (11.7.0) - [32mexpo-sqlite[0m (13.3.0) Checking the license for package Android SDK Build-Tools 34 in /home/expo/Android/Sdk/licenses License for package Android SDK Build-Tools 34 accepted. Preparing "Install Android SDK Build-Tools 34 v.34.0.0". "Install Android SDK Build-Tools 34 v.34.0.0" ready. Installing Android SDK Build-Tools 34 in /home/expo/Android/Sdk/build-tools/34.0.0 "Install Android SDK Build-Tools 34 v.34.0.0" complete. "Install Android SDK Build-Tools 34 v.34.0.0" finished. Checking the license for package Android SDK Platform 34 in /home/expo/Android/Sdk/licenses License for package Android SDK Platform 34 accepted. Preparing "Install Android SDK Platform 34 (revision 3)". "Install Android SDK Platform 34 (revision 3)" ready. Installing Android SDK Platform 34 in /home/expo/Android/Sdk/platforms/android-34 "Install Android SDK Platform 34 (revision 3)" complete. "Install Android SDK Platform 34 (revision 3)" finished. Checking the license for package Android SDK Build-Tools 33.0.1 in /home/expo/Android/Sdk/licenses License for package Android SDK Build-Tools 33.0.1 accepted. Preparing "Install Android SDK Build-Tools 33.0.1 v.33.0.1". "Install Android SDK Build-Tools 33.0.1 v.33.0.1" ready. Installing Android SDK Build-Tools 33.0.1 in /home/expo/Android/Sdk/build-tools/33.0.1 "Install Android SDK Build-Tools 33.0.1 v.33.0.1" complete. "Install Android SDK Build-Tools 33.0.1 v.33.0.1" finished. > Task :expo-modules-core$android-annotation-processor:processResources > Task :expo-constants:createExpoConfig > Task :expo-constants:preBuild > Task :expo-constants:preReleaseBuild ... > Task :expo-sqlite:extractDeepLinksRelease > Task :expo-sqlite:mergeReleaseJavaResource > Task :expo-sqlite:syncReleaseLibJars > Task :expo-sqlite:compileReleaseLibraryResources > Task :expo-sqlite:writeReleaseLintModelMetadata > Task :expo-sqlite:mergeReleaseNativeLibs > Task :expo-sqlite:bundleLibRuntimeToJarRelease > Task :expo-sqlite:createFullJarRelease > Task :expo-sqlite:copyReleaseJniLibsProjectOnly > Task :expo-sqlite:stripReleaseDebugSymbols > Task :expo-sqlite:copyReleaseJniLibsProjectAndLocalJars > Task :expo-sqlite:bundleReleaseLocalLintAar > Task :app:processReleaseMainManifest /home/expo/workingdir/build/android/app/src/main/AndroidManifest.xml Warning: provider#expo.modules.filesystem.FileSystemFileProvider@android:authorities was tagged at AndroidManifest.xml:0 to replace other declarations but no other declaration present > Task :app:processReleaseManifest > Task :app:processReleaseManifestForPackage > Task :app:mergeReleaseNativeLibs > Task :app:processReleaseResources > Task :app:stripReleaseDebugSymbols > Task :app:extractReleaseNativeSymbolTables > Task :app:compileReleaseKotlin FAILED e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainActivity.kt:18:14 Unresolved reference: R e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainActivity.kt:35:11 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:35:60 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:37:52 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:38:51 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:48:10 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:51:9 Unresolved reference: BuildConfig e: file:///home/expo/workingdir/build/android/app/src/main/java/com/aceylan/ingilizce_cevrimdisi/MainApplication.kt:55:9 Unresolved reference: BuildConfig > Task :app:mergeReleaseNativeDebugMetadata > Task :app:optimizeReleaseResources FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileReleaseKotlin'. > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction > Compilation error. See log for more details * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 8m 19s Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. 414 actionable tasks: 414 executed Error: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.
package.json内容
{ "name": "Çevrim dışı İngilizce", "version": "1.0.0", "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web" }, "dependencies": { "@react-navigation/bottom-tabs": "^6.5.18", "@react-navigation/material-bottom-tabs": "^6.2.26", "@react-navigation/native": "^6.1.15", "@react-navigation/stack": "^6.3.27", "expo": "~50.0.11", "expo-asset": "^9.0.2", "expo-file-system": "^16.0.8", "expo-speech": "^11.7.0", "expo-sqlite": "^13.3.0", "expo-status-bar": "~1.11.1", "react": "18.2.0", "react-native": "0.73.4", "react-native-gesture-handler": "^2.15.0", "react-native-paper": "^5.12.3", "react-native-safe-area-context": "^4.9.0", "react-native-screens": "^3.29.0" }, "devDependencies": { "@babel/core": "^7.20.0" }, "private": true }
解决建议
分离显示名称与包标识符:在app.json中,
name字段保留ASCII字符(作为包名生成的基础),新增displayName字段设置带土耳其字符的应用名称。示例:{ "name": "IngilizceCevrimdisi", "displayName": "Çevrim dışı İngilizce", // 其他原有配置 }这样既满足应用在设备上的显示需求,又避免非ASCII字符干扰Android构建过程中的包名、资源文件生成。
配置Gradle编码为UTF-8:在项目的
android/build.gradle文件中添加编码配置,确保构建过程支持Unicode字符:allprojects { tasks.withType(JavaCompile) { options.encoding = "UTF-8" } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { kotlinOptions.encoding = "UTF-8" } }清理构建缓存后重新构建:执行
eas build --clean命令清除之前的构建缓存,避免残留的错误配置影响新构建流程。
内容的提问来源于stack exchange,提问作者aceylan
相关产品推荐
相关产品推荐

