React Native doesn't work in physical Android Device - android

I'm having issues to run my react native apps in physical devices. When I execute react-native run-android using a Genymotion virtual device for example, it works perfectly.
But when I try to execute in physical connected devices, i get multiple errors.
I tried 2 different devices, and checked with "adb devices" if they are connected, they do.
When I try to just execute "react-native run-android", I get the following error: (and nothing appears on physical device)
But when I check for devices, and use the device id when executing like:
"react-native run-android --deviceId E6D68T7P99999999", I get the new error: (but now appearing "Unable to load script from assets 'Index.android.bundle'." on the device)
Also I have tried some other ways
In my project folder android/app/build.gradle, I changed where it was
compile "com.facebook.react:react-native:+"
to
compile "com.facebook.react:react-native:0.44.0"
This makes to BUILD appears SUCESSFULL, but otherwise, in the physical device appears like:
"The development server returned response error code: 404
URL: etc etc.
BODY: Cannot GET /index.android.delta?platform=android&dev=true&minify=false"
Can anyone help me please? I tried all the ways, using react-native start, killing process on port 8081 but NOTHING works with me!
React Native version: 0.44.0,
Windows 7 x64,
Tried on 2 different devices and
Developer mode and usb debugging mode ON

Try using adb install -r to reinstall your apk. I notice that your error says the apk already exists.
Failure [INSTALL_FAILED_ALREADY_EXISTS] when I tried to update my application

I had the same problem today and I do not know whether you have solved your problem, but for me, I had to add "ANDROID_HOME" environment variable(specify the SDK path). I hope it helps anyone who might come in contact with such problem

There's actually a hand full of things you could try to fix this problem.
1) npm install
2) npm start -- --reset-cache
3) Delete node_modules then npm install
4)cd to android and gradlew clean
5) Make sure all of your Java SDKs or what not are in the correct system path.
6) Restart your computer then try again.
Let me know your progress once you tried these options!

Related

Could not connect to development server on Android emulator Windows OS?

I am unable to solve this issue for 3 days. The same source runs fine in iOS App (Mac System ofcourse). But gets this error when I try to run in Android emulator
I have tried most of the solutions available in the internet.
1 - Dev Settings -> Adding the local ip
2 - Cleaned npm (removed node_modules and installed npm again)
3 - uninstalled npm globally and reinstalled
4 - That useless adb commands also tried
When I run, npm run start
When go to my local ip (192.168.1.61:8081) in browser, i get to know React Package manager is not running.
Turn ON the mobile data on your android emulator. This might solve the issue.

React Native app: cannot connect to dev server, but the simulator is running - why?

The image describes my current situation properly. Please have a look at it first.
I am running my app on React Native. I have Android simulator on. I give the command to start the app. The app build finishes, but it says that virtual device not found, and in my simulator, if I open the app manually, it says that it cannot connect to Development server. It shows some issues.
Can anyone help?
Try run react-native run-android to connect your app to the emulator
Check USB Debugging is on(mostly running on virtual devices)
Check how you created project(react-native-cli or Expo) and run relevant app run command
Make sure your development server(node.js) is running when you run app. Sometimes it crashes then you have to again run command to run app
If all the step does not solve your issue try to uninstall app from device and run app again. Since react-native is still developing and its wired sometime these tricks works
I was having the same issue in Ubuntu 16.04. In my case the problem was that node packager wasn't running.
To check is packager is running easily you can open the browser and enter
http://localhost:8081/
You must see "React Native packager is running."
If you dont, then you can start packager from console running
react-native start
If you get an error like
" ERROR watch /your/project/path/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values-ru ENOSPC"
Then run first
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Then run react-native start again and press the letter R twice in the emulator to reload.
Looking at the screenshot, seems like you don't have adb installed because there is a clear 'adb: not found error'.
Luckily Android studio ships with adb and is present in platform-tools under your Android SDK. (generally in /home/your-user-name/Android/Sdk/)
You only need to use it. Create a symbolic link in '/usr/bin/' or '/usr/local/bin/' depending how you'd like to use it.
Run the command:
sudo ln -s ~/Android/Sdk/platform-tools/adb /usr/local/bin/
After this run the app.

React-Native Module HMRClient is not a registered callable module (calling enable)

I have set my IP and made sure it's right but when I executereact-native run-android
i had the same problem , didn't knew what to do.
cd android
./gradlew clean
after that
react-native run-android
solved my problem
I resolved issue by:
1: Uninstalling app
2: Restart package: react-native run-android
This can happen when you have hot reloading enabled but you are in production mode. To use hot reloading, make sure you have __DEV__ set to true.
To check or change this, in a console type adb shell input keyevent 82, go to Dev Settings, and make sure JS Dev Mode is checked.
If you have remote JS debugging enabled, then you might also see a line in the console that looks like this:
Running application "yourapp" with appParams: {"rootTag":1}. __DEV__ === false, development-level warning are OFF, performance optimizations are ON
If that's the case, then this could be the cause of your problem.
you need to stop npm server. then hit following command in terminal.
adb kill-server
adb start-server
than start npm server
same error occurs to me when I switch off JS DEV Mode and enable Hot Reloading.I solved it by disable Hot Reloading.Hope it could help.
Santosh's answer is correct, but I couldn't use it, so for others who run into this problem and are as much of a newbie as I am at the moment... The adb that Santosh is restarting here is the Android Debugging Bridge. It seems to be at the heart of the Hot Reloading / remote debugging that's built into React Native. Basically, it got confused and needed resetting.
Alternate Solution
Trying to run adb failed for me, so I stopped the emulator, opened the Android Virtual Device manager (in Android Studio until Tools -> Android -> AVD Manager, and on the line for the particular phone I was emulating, I clicked the down arrow next to the edit (pencil) icon to the right and selected 'Wipe Data'. Then I restarted that device (the Play button just to the left of the edit (pencil) icon. Restarted my app via react-native run-ios and everything was fine.
More on Santosh's Solution
To do it Santosh's way, you need the Android SDK bin folder in your path, or to run the command with full path. It's in your Android SDK folder under platform-tools. Don't forget to re-enable Hot Reloading after restarting (if you're using it).
This issue come due to development server error.
Follow some steps to resolve this issue.
Step 1:
adb kill-server
adb start-server
then check your device/emulator is visible on command prompt or not.
adb devices
Step 2
Clean your gradle compiler files, some file may be corrupt.
android/gradlew clean
Step 3:
Remove application from your device/emulator.
Step 4:
react-native run-android
Now issue will be resoled :)

error "Could not get BatchedBridge, make sure your bundle is packaged properly" on start of app

Trying to create a react-native project on Android 4.4.2 I get this error screen
and couldn't find any way to resolve it. I tried restarting packager, reconnecting device, even reinstalling react native and starting new project. On 6.0.0 and later versions it works just fine.
A possible solution for this is that you most probably not bundling your application first, perform the following steps and then deploy your app-debug.apk to your device
$ cd myproject
$ react-native start > /dev/null 2>&1 &
$ curl "http://localhost:8081/index.android.bundle?platform=android" -o "android/app/src/main/assets/index.android.bundle"
(if the folder assets does not exists create it)
Then run from project root
$> (cd android/ && ./gradlew assembleDebug)
install the created apk to you device, from location: android/app/build/outputs/apk/app-debug.apk
let me know if that fixes your issue
EDIT:
You can simply put it to your package.json as a script to automate it, I believe it will be fixed in upcoming releases of react-native and will be executed prior assembling the final APK, hence this won't be needed (I hope as well)
put :
"scripts": {
"build": "(cd android/ && ./gradlew assembleDebug)",
"start": "node node_modules/react-native/local-cli/cli.js start",
"bundle-android": "react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --sourcemap-output android/app/src/main/assets/index.android.map --assets-dest android/app/src/main/res/"
},
or as mentioned the curl equivalent, but for most cases the above is more robust
I came across this issue as well.
What I did was force kill the app on my device, then I opened up another console and ran
react-native start
and then I opened the app again from my device and it started working again.
EDIT: If you are using an android device via USB and have unplugged it or your computer went to sleep, you may have to first run
adb reverse tcp:8081 tcp:8081
Just got this error. Here's what I did to fix:
I selected Dismiss, Went into the Developer menu, then Dev Settings,
Choose Debug server host & port for device, I added my computers IP address and the port: 192.168.0.xx:8xxx, use whatever your developer machines assigned IP address is on your wifi network. The port is usually :8081
Once I did this, all went well. Also, while you're in the dev menu remember to select Enable Live Reload and Debug JS Remotely, it makes your life much-much easier while debugging.
This is what worked for me (After trying every other solution i found ...):
Run adb reverse tcp:8081 tcp:8081 inside \Android\sdk\platform-tools
I got this also when I started for the first time with React Native, using a physical device. If that's the case, you need to do some extra things before you can get started. You have to enter some information about your development machine in the 'Dev Settings' of React Native.
When you see the error, shake your device. A dialog will popup, the last option will be 'Dev Settings'. Select 'Debug server hot & port for device' and enter your local IP and the used port (usually 8081).
See the last paragraph of https://facebook.github.io/react-native/docs/running-on-device-android.html
If none of the solution work for you try this:
I found that my <root>/android/app/build/intermediates/assets/debug folder was empty and by running cd android && ./gradlew assembleDebug was not creating those files required, which are later used by javascript thread in our react native apps.
I ran manually the following command which the debug build command should have created ideally.
node node_modules/react-native/local-cli/cli.js bundle --platform android --dev true --reset-cache --entry-file index.android.js --bundle-output /<path to dir>/android/app/build/intermediates/assets/debug/index.android.bundle --assets-dest /<path to dir>/android/app/build/intermediates/res/merged/debug
After running these commands I found two bundle files in this directory <root>/android/app/build/intermediates/assets/debug
And then a I ran again cd android && ./gradlew installDebug my app started working again.
Will debug more and would update what is failing actually.
In a separate terminal, connect your device to the computer and run the following commands:
react-native start
cd user/Library/Android/sdk/platform-tools/
./adb reverse tcp:8081 tcp:8081
Application terminal:
react-native run-android
install apk on your device from this location android/app/build/outputs/apk/app-debug.apk
It's little too late but this really works for me.
react-native run-android.
react-native start.
First command will build apk for android and deploy it on your device if its connected. When you open the App it will show red screen with error. Then run second command which will run packager and build app bundle for you.
see issue:
1.react-native start
2.click Reload(R,R) on your device.
Try this command in terminal and then reload. It worked for me
adb reverse tcp:8081 tcp:8081
restart the genymotion
run react-native run-android
the problem was solved
I was having the same exception on the device Z3 Compact D5803 - 6.0.1
I went opened the .buckconfig file and changed the line:
target = Google Inc.:Google APIs:23
to
target = Google Inc.:Google APIs:24
Because i saw in SDK Manager that Android 6.X has api level 24.
For me, it's because adb was not in the PATH. It's located /Users/man/Library/Android/sdk/platform-tools for me, it may be somewhere else for you, but anyway, find it and add it to your path to see if that help.
Since you are using Android < 5.0 you can't use the default adb reverse method, but Facebook has added official documentation to connect to the development server via Wi-Fi, which would support your version. Quoting the instructions for MacOS, but they also have them for Linux and Windows:
Method 2: Connect via Wi-Fi
You can also connect to the development server over Wi-Fi. You'll first need to install the app on your device using a USB cable, but once that has been done you can debug wirelessly by following these instructions. You'll need your development machine's current IP address before proceeding.
You can find the IP address in System Preferences → Network.
Make sure your laptop and your phone are on the same Wi-Fi network.
Open your React Native app on your device.
You'll see a red screen with an error. This is OK. The following steps will fix that.
Open the in-app Developer menu.
Go to Dev Settings → Debug server host for device.
Type in your machine's IP address and the port of the local dev server (e.g. 10.0.1.1:8081).
Go back to the Developer menu and select Reload JS.
It had this issue "randomly" and took me sometime to realize what was wrong in my scenario.
After I have updated to React-native-cli 2.0.1, there was a message output to the log which helped me to dig and find the root cause:
JS server not recognized, continuing with build...
After researching some links I found this one:
Unable to recognize JS server
Since I´m on windows, I ran netstat and found out that my VLC player was also running on port 8081 causing the issue.
So, in my case, if I started the vlc server prior to the react-native server it wouldn´t work.
This same log message wasn´t output on previous versions of the react-native-cli, making it fail silently.
TL, DR: check if there´s anything running on the same port as the package manager (8081 by default)
someone suggested the following one
react-native run-android
react-native start --reset-cache,
But in my case, I just close the cli command prompt window and used the following.
npx react-native run-android
and it worked fine.
My way are:
react-native start
After that in your device using:
click to Reload.
See in console react-native, it will be fetch js bundle data.
My issue was that I went through my AndroidManifest.xml file and had removed the line
<uses-permission android:name="android.permission.INTERNET" />
because my app will not need internet. However, the react native debugging app does need internet access (to access the packager) Whoops. :)
I had the same problem. When I did create a react native project via create-react-native-app AwesomeProject it worked well in Expo app on phone. After that I wanted to use that quickstart project for developing my project and got same error as you do.
After some research I find out it's better to start new project with react-native init AwesomeProject (with all setting in react native docs) Then run this command:
react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
That should fix the thing with bundle (--dev false is not showing warnings)
All you need to do for app to run on your virtual / real device is:
react-native run-android
And it should be working just fine. At least it worked for me.
Try to clean cache
react-native start --reset-cache
Please check if you have following error when you run react-native run-android:
adb server version (XX) doesn't match this client (XX); killing...
In that case make sure /usr/local/opt/android-sdk/platform-tools/adb and /usr/local/bin/adb are pointed to the same adb
In my case one was pointed to /Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK), but another was pointed to /usr/local/Caskroom/android-platform-tools/26.0.2/platform-tools/adb (Homebrew)
And issue have been fixed after both of them pointed to /Users/sd/Library/Android/sdk/platform-tools/adb (Android SDK)
I got this error too, really confused. cuz all answers does not work.
Just after add adb to path.
For me, I had side-sync enabled and active. Closing it imediately made the issue go away. It might be worth closing this or any other communication between PC and device
I ended up having to open up the port that I was using (8081 by default). On Linux, you can do the following
sudo iptables -A INPUT -p tcp --dport 8081 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 8081 -m conntrack --ctstate ESTABLISHED -j ACCEPT
You can test to see whether you actually need to do this. Just navigate to your dev server in Chrome on your Android device. If it doesn't respond, then this might be what you need. If it does respond, then this won't help you.
For me the problem was that 'adb' was not recognised - check this answer.
To fix this add C:\Users\USERNAME\AppData\Local\Android\sdk\platform-tools to Environment Variables
Most of us face this problem for the first time, when we start react native project#1.
Few simple steps solved my problem:
I created a sample project using command:
react-native init ReactProject1
Solution
The fix is to help local-cli\runAndroid\adb.js to find adb.exe, the same way as local-cli\runAndroid\runAndroid.js:
find replace statement under projectname(whatever you have given)\node_modules\react-native\local-cli\runAndroid
Replace:
const devicesResult = child_process.execSync('adb devices');
By:
const devicesResult = child_process.execSync( (process.env.ANDROID_HOME ? process.env.ANDROID_HOME + '/platform-tools/' : '') + 'adb devices');
after doing above replacement, just run react-native run-android in your cmd, it will bundle apk and at first try to install js bundle locally in your device. (Got Success)
"npm start"
I just closed the terminal and open a new one. Went to project location by cd command. And then just simply type - "npm start". and then 'r' for reload. Everything just vanished. I think everybody should try this at once.
I tried many of the suggestions above/below, but ultimately, the issue I faced was a permissions one with watchman, which was installed using homebrew earlier. If you look at your terminal messages while trying to use the emulator, and encounter 'Permission denied' errors with regards to watchman along with this 'Could not get BatchedBridge" message on your emulator, do the following:
Go to your /Users/<username>/Library/LaunchAgents directory and change the permissions settings so your user can Read and Write. This is regardless of whether or not you actually have a com.github.facebook.watchman.plist file in there.
I found that I needed to also add in a
react-native upgrade
to get the application to run correctly.
I got the same issue but it was a stupid mistake from myself...
From Android studio, I was launching installDebug/installRelease gradle script from app projet instead of root projet.

Cordova run android is taking forever to install app on device

Ok, I have created and run various Cordova apps in the past, but since the last 2 weeks I have more and more issues with getting any app to install on my device. I have an LGE975 (LG Optimus G) phone, and there are already 5 Cordova apps installed on it.
Sometimes if I just try it 20 times it will work. Today however I have tried to run apps I don't know how many times, but they just won't install, and no error is thrown.
What I've tried so far:
Reinstalling Cordova
Upgrading cordova from 3.1.0-0.1.0 to -0.2.0
Downgrading back to -0.1.0
Rebooting device
Rebooting pc
Running app on platform "android" via command "cmd" /c C:\CordovaProjects\HelloW
orld\platforms\android\cordova\run --device
Buildfile: C:\CordovaProjects\HelloWorld\platforms\android\build.xml
What is it doing during the installation on device? The verbose output of Cordova isn't showing much of where it could go wrong. Also no error is thrown.
Is there anything I can do to fix this?
As suggested in the comment aboive i just runned:
platforms\android\cordova\run --device
and it worked!
It must be a bug or something.
I had the same problem, but it worked when I launched the process from an Administrator command prompt.
(On windows 7, Start -> Search Programs and Files -> type "cmd" -> Right-click on CMD -> Run as Administrator -> run phonegap command)
This is sort of a 'duh' answer, but maybe its an android version update that was applied to your device (phone) and the OS is now slowing things down?
Or, maybe your device is really full on storage space, and you should free up some space to speed things up :)

Categories

Resources