常見問題
Android 環境相關
0.
SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable
解法:在react-native專案的andorid目錄下創建如下local.properties,並寫上路徑。
可直接輸入以下指令
echo sdk.dir = "$HOME"/Library/Android/sdk >> ./android/local.properties
或是加入環境變量
export ANDROID_HOME = <SDK位置>
1.
Failed to find Build Tools revision
解法:開啟Android Studio後按到plugin manager,之後點選Android SDK Build-tools,然後按右下角的show package Details.
之後更改react-native 的 android folder內的build.gradle ,更改buildToolsVersion
2.
Failed to find Platform SDK with path: platforms;
到SDK頁面把版本號碼,填入剛才build.gradle的SDK版本位置即可。
3.
Unable to unzip '/Users/lin/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.0.0/30c60a8a357ee1321ffd0c9f08ef54b24045cd10/runtime-1.0.0.aar' to '/Users/lin/.android/build-cache/461463660edaf90dfdbbbdf1b3fd11a320fb50df/output' or find the cached output '/Users/lin/.android/build-cache/461463660edaf90dfdbbbdf1b3fd11a320fb50df/output' using the build cache at '/Users/lin/.android/build-cache'.
解法:加上sudo
sudo react-native run-android
4.
error: could not install *smartsocket* listener: Address already in use
或是
adb server version (40) doesn't match this client (39);
這時通常輸入adb start-server
也會無法執行,通常是因為有兩個版本,所以只要把/sdk/platform-tools/adb
複製到/usr/local/bin
即可
解法:https://github.com/facebook/react-native/issues/8401#issuecomment-344628512
5.Development Server response 500
通常為node_module包含不相容的專案
重新啟動專案或重建都一樣時可輸入以下指令:
npm start -- --reset-cache
6.
不穩定,有時跳出錯誤訊息,有時又沒有
建議關閉 hot-reload 功能。
7.
安裝模組後如果執行出現錯誤,例如:Unable to symbolicate stack trace: The stack is null
輸入以下即可。
npm start -- reset-cache
8.
執行 react-native run-android
後畫面空白,或是說無法連線到development server
重新執行
react-native run-android
即可
9.
避免特定資料夾更改後,觸發 react native server hot reload
https://stackoverflow.com/a/41963217
const blacklist = require('metro-config/src/defaults/blacklist');
// blacklist is a function that takes an array of regexes and combines
// them with the default blacklist to return a single regex.
// 下面輸入不要觸發更新的資料夾名稱
module.exports = {
resolver: {
blacklistRE: blacklist([/server\/.*/])
}
};
10.Unable to load script from assets index.android.bundle
加入以下:
package.json
"scripts": {
"android-linux": "react-native bundle --platform android --dev false --entry-file App.js --bundle-output android/app/src/main/assets/App.android.bundle --assets-dest android/app/src/main/res && react-native run-android"
},
11.Failed to install the following Android SDK packages as some licences have not been accepted
到 android studio 安裝 SDK 版本

12.Could not determine artifacts for com.facebook.fresco:fresco:1.10.0: Skipped due to earlier error
在 build.gradle 新增
dependencies {
....
implementation "com.facebook.fresco:fresco:1.13.0"
}
13. 上架時要求更改 package name
14. 您已經有一個 APK 或 Android App Bundle 使用版本代碼 1
15. Google Play 64 位元規範
build.gradle(app) 新增如下
defaultConfig {
....
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
}
不過目前測試完加上這樣會閃退,建議還是使用 bundleRelease 打包
16. adb command not found
加上以下環境變數,不過目前測試就算 adb comand 沒找到還是可以 run-android,但有時候使用最新的 react-native 創建專案卻可以沒有adb command 下執行
export ANDROID_HOME="/Users/easonwang/Library/Android/sdk"
export PATH="/Users/easonwang/Library/Android/sdk/platform-tools":$PATH
17. react version mismatch
通常只要把所有監聽 8081 (emulator)的 port 刪除,或是關閉所有 terminal 重啟 emulator即可。
18.產生的apk 安裝後網路無法連線
如果 network endpoint 指向 http 記得加上以下不然會無法連線 https://stackoverflow.com/a/56801525/4622645
19.Warning: Activity not started, intent has been delivered to currently running top-most instance.
這樣 app 不護更新畫面,需要把 app 從模擬器關閉後重新 run-android
20. Execution failed for task ':app:mergeDexDebug'
When your app and the libraries it references exceed 65,536 methods, you encounter a build error that indicates your app has reached the limit of the Android build architecture
加上以下即可
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 28
multiDexEnabled true
}
...
}
dependencies {
implementation 'com.android.support:multidex:1.0.3'
}
21.
Execution failed for task ':app:processDebugResources'. AAPT: error: unexpected element <queries> found in <manifest>
更新 gradle 版本:
project/build.gradle
dependencies {
classpath("com.android.tools.build:gradle:4.0.1")
22.No non-density apk found
cd android && ./gradlew clean
23.Error type 3 Error: Activity class {} does not exist.
adb uninstall PACKAGE_NAME
24.accessibilityinfo could not be found within the project
watchman watch-del-all;
rm rf ./node_modules;
yarn;
yarn start --reset-cache;
rm -rf /tmp/metro-*;
25.重新安裝 debug.keystore file
開發相關
1.無法用e.target
建議採用map並加上index方法傳遞。
https://stackoverflow.com/a/42125039
{Object.keys(this.state.locationURL).map((location, idx) => (
<ListItem key={idx} onPress={(e) => this.changeURL(idx)}>
<Text>{location}</Text>
</ListItem>
))}
2.取得Input的值或對象
<Input onChangeText={(e) => console.log(e)} />
3. Genymotion 存取跟電腦相同的 VPN
設定Adapter 2 的網路為 NAT 即可。
4.重置 ios 或 android 專案
rm -rf ./ios
yarn add react-native-eject
npx react-native eject
iOS 環境相關
Could not find the following native modules
rm -rf ios/Pods && rm -rf ios/build && cd ios && pod install && cd ../
rm -rf node_modules && rm yarn.lock && yarn install
Pod version 不夠
sudo gem install cocoapods
如果出現 CompileC /Users/Library/Developer/Xcode/DerivedData/rnVideoChat-glonxrdqrszkjpegwxeamdfiunvm/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/react-native-webrtc.build/Objects-normal/x86_64/VideoCaptureController.o /Users/easonwang/rnVideoChat/node_modules/react-native-webrtc/ios/RCTWebRTC/VideoCaptureController.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
重新 npm 安裝該模組,升級他的版本即可
Build fail code 65
這時可以去 xcode 查看相關錯誤,或是先更新 xcode。
例如:https://stackoverflow.com/questions/50718018/xcode-10-error-multiple-commands-produce
Last updated
Was this helpful?