Signed Apk not found in directory React Native - Android - android

I am using react-native 0.60 version and my Gradle version is 5.4.1. Now I'm trying to extract signed apk. When I execute, all the steps the apk build successfully. But When I checking this path F:\React Native\AwesomeProject1\android\app\build\outputs\apk
please check this screenshot https://prnt.sc/p391mr.

Use this command to generate release apk
react-native run-android --variant=release
 Note that --variant=release is only available if you've set up signing as described above.
You can kill any running packager instances, since all your framework and JavaScript code is bundled in the APK's assets.
Please follow this link
https://facebook.github.io/react-native/docs/signed-apk-android
You using this command
$ cd android
$ ./gradlew bundleRelease
You only generate android apk bundle (AAB)not an apk.The generated AAB can be found under 
android/app/build/outputs/bundle/release/app.aab

On windows if you're going to use gradlew directly you need to run the windows variant of the command. See https://developer.android.com/studio/build/building-cmdline
So you should be running gradlew bundleRelease
From your screenshot you are running the *nix variant of ./gradlew bundleRelease. Note the removal of the leading ./ in the Windows version.

Related

Unable to load script. Make sure you're either running a metro server or that your bundle 'index.android.bundle' is packaged correctly for release

Hello have you experienced this error after generate an apk with command ./gradlew assembleDebug ??
I just see this error after download the apk on my android phone...
"react-native": "~0.61.5",
The apk that you built is still debug version.
./gradlew assembleDebug
Thats why it still need the metro server to debug and run normally.
If you want to test out a release version of the apk you need to build and run the apk in release mode:
Either, build a signed apk
https://reactnative.dev/docs/signed-apk-android
or
Let react native run a release variant on your device(you may still need metro server)
react-native run-android --variant=release
If the above command doesn't work try:
react-native run-android --configuration=release
Recently I tried to create and run in windows 10 by referring the link https://reactnative.dev/docs/environment-setup. I too face same issue and I figure out that this is because by default mobile device try to search build in port 8081. So I gave this command to change the port and run
npx react-native run-android --port=1234 and it worked.
npx react-native run-android --port=1234
go to android folder ./gradlew clean
and go back to your project
and npx run react-native run-android
I had to add the Android SDK path to my .bash_profile or .zshrc:
export ANDROID_SDK=/Users/<username>/Library/Android/sdk export PATH=/Users/<username>/Library/Android/sdk/platform-tools:$PATH

How to regenerate an apk?

This morning I generated an apk via this command:
./gradlew bundleRelease
which generated the following:
However, now I need to generate a newer version of the apk as I made some changes to the application.
I tried just running the above command again, but that did not seem to work. The files are all the same ones. How do I regenerate an apk? Do I need to delete the old ones first?
Clean your older build first using
./gradlew clean
Then build your apk using
# for debug
./gradlew assembleDebug
# for release
./gradlew assembleRelease
# if you want all the build variants, just using below command
./gradlew assemble
Your apks can be found inside output/apk directory
bundleRelease generates a bundle - filing in just the bundle directory you see. You should be using assembleRelease if you want to generate an APK and the apk directory:
./gradlew assembleRelease

How to build react native android app for producation in ubuntu

I have a react native project in ubuntu, and I want to build android app for production.
I have read this article Generating Signed APK, which say run the following in a terminal:
$ cd android
$ ./gradlew assembleRelease
But when I run this I got this error message
sudo: ./gradlew: command not found
My question is what package I have to install on ubuntu to start build andriod's app

apk build file come with errors in react native android

Here, I have built the react native android app using this documentation Doc
in jenkins which was configured on ubuntu 16.04 (in virtual machine).
Here is the build command which I used to build the react native app(android) in Jenkins
cd $WORKSPACE && chmod -R 777 ./android && cd ./android && npm install && ./gradlew clean && ./gradlew assembleDebug
The build process end successfully creating an apk file in the following path
build_release_v1/ws/android/app/build/outputs/apk/
Note build_release_v1 is the jenkins project name and ws is for the workspace of it.
Though the apk is created it comes up with following errors
What may be the case ....please help me with this ...Thanks in advance...
The problem is that if you want a debug build (since you are using assembleDebug), React Native generates an APK that expects to have a connection to the bundle server (it does the same as react-native run-android). My guess is that you want to test the app without the bundler, so you have two options: either run assembleRelease instead (have a look here for more details) or manually create the bundled JavaScript code and then create the APK. Please refer to this question for details.

How to build Expo APK local

Is it possible to build the APK of an expo app locally?
The doc says:
If you haven’t used exp before, the first thing you’ll need to do is login with your Expo account using exp login.
I tried exp start, exp build:android but the commands require a login.
I don't want to build the APK using expo server. Is there a way to run this build locally? So no login and push of source code required?
If not, can I view the whole source code of the generated APK?
New to the party, so guessing this wasn't available at the time of the post - Instructions for building expo apps locally:
Building Standalone Apps on Your CI
Update Jan, 2023:
You may want to check out the updated version:
This doc was archived in August 2022 and will not receive any further updates. SDK 46 is the last SDK supported by Classic Builds and the Classic Build service will stop running for all SDK versions after January 4, 2023. Check out Running builds on your own infrastructure and Triggering builds from CI.
if you want to generate apk eject the CRNA with npm run eject command. Then you will get android and ios folders suppurate in mac and you will get an only android folder in windows. and follow the instruction which is in a given link below
"https://facebook.github.io/react-native/docs/signed-apk-android.html"
I've straggled with similar issue, I managed to solve it following several steps found on the web, and tweaking a bit:
https://forums.expo.io/t/expokit-full-local-build-without-publish-android/31400/2
Run the https server your machine, note that the server must have a certificate since it is a HTTPS server (I used port 4443), but it does not need to be trusted by your machine - it works anyway (I found it easy to use: https://gist.github.com/dergachev/7028596 - Python 2.7,
https://gist.github.com/dergachev/7028596#gistcomment-1989299 - Python 3.X)
Go to your Expo project folder, make sure there is no dist
folder in it; alternatively you can provide dist path with the --output-dir flag
(the react-native bundle and assets will be generated to it).
Open command line and run:
expo export -t bare --dev --public-url https://localhost:4443/, once done you will have the android bundle and assets in the output-dir (default - dist)
Copy the android bundle from dist/bundles/android-<bunch of numbers (MD5)>.js to <YourExpoProjectFolder>/android/app/src/main/assets/index.android.bundle and to <YourExpoProjectFolder>/android/app/build/generated/assets/react/release/index.android.bundle (note: the name of the bundle must be index.android.bundle)
In /dist/bundles/assets you'll have your assets files, but they would be named as their MD5 value, copy each of them to <YourExpoProjectFolder>/android/app/src/main/assets/, but add the asset_ prefix and .<ext> for each. e.g. for a PNG image file with MD5 value of de57a0c7a3a23aabcaceaf1185b1e79e:
copy <YourExpoProjectFolder>/dist/bundles/assets/de57a0c7a3a23aabcaceaf1185b1e79e <YourExpoProjectFolder>/android/app/src/main/assets/asset_de57a0c7a3a23aabcaceaf1185b1e79e.png
cd android
gradlew.bat assemble
expo diagnostics output:
Expo CLI 3.18.6 environment info:
System:
OS: Windows 10 10.0.18363
Binaries:
Node: 12.16.2
Yarn: 1.22.0
npm: 6.14.4
npmPackages:
expo: ~37.0.3 => 37.0.8
react: ~16.9.0 => 16.9.0
react-native: ~0.61.5 => 0.61.5
react-navigation: ^4.3.9 => 4.3.9
If you want to build the app locally without using the turtle CLI of expo, you can build it just how you would build a normal react native app
But beware that you will have to touch some native android code (gradle only)
But only one or two files....
Steps:
Generate a release Keystore by keytool
Link the keystore in build.gradle file
Run cd android && ./gradlew assembleRelease to build the apk
Check out this post to follow these steps in detail
Motivation: build local, test performance of release build on a real device.
Environment: Expo SDK 46 managed project, on AlmaLinux 8.6 (ymmv)
Caution:
I keep a copy of my entire project dir in case things get messed up:
cd <project *parent* dir>
\cp -far <project dir name> <project dir name>.bak
and update that when appropriate with
cd <project dir> # if not there
rsync -atvi --delete . ../<project dir name>.bak/
Steps to create android project dirs/files and a debug build apk :
cd <project dir>
npx expo run:android # not the same as "npm run android"
see ref in official expo docs here
release build:
cd <projectDir>/android/app
keytool -genkey -v -keystore <projectName>.keystore -alias <<projectName>> -keyalg RSA -keysize 2048 -validity 10000
ammend android/app/build.gradle file - see details here but do not use the build instructions (atow). Then ...
cd ../../ # to project dir
npx expo run:android --no-install --no-bundler --variant release
(although tbh I'm guessing for now that --no-bundler is to do with the Metro server)
You should find a release apk in
<project dir>/android/app/build/outputs/apk/release
Note this includes full expo and the build can take quite a while. It took more than 12 mins on the following:
Operating System: AlmaLinux 8.6
KDE Plasma Version: 5.23.3
KDE Frameworks Version: 5.88.0
Qt Version: 5.15.2
Kernel Version: 4.18.0-372.32.1.el8_6.x86_64 (64-bit)
Graphics Platform: X11
Processors: 12 × Intel® Xeon® CPU E5-2620 v3 # 2.40GHz
Memory: 31.1 GiB of RAM
Graphics Processor: AMD CEDAR
You can reduce build time and the final apk size by going for an expo development build or moving your code to a porn project (plain old react-native) :-)

Categories

Resources