我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。

然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。

我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?

更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。


当前回答

希望对初学者有所帮助

这里是官方文档

如果您没有密钥存储库,请使用之前的命令否则跳过

生成签名密钥/ Keystore文件 您可以使用keytool生成一个私有签名密钥。在Windows上,keytool必须从C:\Program Files\Java\jdkx.x.x_x\bin.运行

$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

您将得到一个类似my-release-key.keystore的文件

设置gradle变量 把我的释放钥匙放上去。在项目文件夹的android/app目录下的Keystore文件。 编辑文件android/gradle。属性并添加以下内容(将*****替换为正确的密钥库密码、别名和密钥密码), enableAapt2设置为false是变通的,因为android gradle 3.0版本的问题

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****

android.enableAapt2=false

然后添加这些app/ build。gradle(应用)

下面是默认配置

signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }

和Inside Build类型release {}

 signingConfig signingConfigs.release

然后在android studio终端上简单地运行这个命令 以下命令将自动回答以上所有问题

如果窗户

cd android
gradlew assembleRelease

Linux / MAC

$ cd android
$ ./gradlew assembleRelease

如果你得到任何错误删除所有构建文件夹和运行命令

gradlew clean

又比

gradlew assembleRelease

其他回答

如果您得到“Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES].”

我尝试使用@Aditya的方法来生成一个无签名APK文件并安装它,但当我在我的Android平板电脑上安装它时,它给了我一个失败的错误[INSTALL_PARSE_FAILED_NO_CERTIFICATES]。

我想这是因为APK文件没有签名,平板电脑对此不满意。所以,在生成React Native包文件后,我能够通过Android Studio生成一个签名的APK文件。

顺便说一句,我们的应用是一款功能齐全的Android应用,已经在Play Store中存在,我们只是将React Native添加到它中,因为它很棒。

总结一下,我的步骤如下:

1)生成React Native包:

react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/<your-package-name>/src/main/assets/index.android.bu‌​ndle --assets-dest android/<your-package-name>/src/main/res/ 

2)从Android Studio生成一个Signed APK文件。

3)将签名APK文件安装到USB设备:

adb -d install -r <path_to_signed_apk> 

-d标志只是告诉adb在附加的usb设备上安装,如果您有一个模拟器也在运行。如果你想在任何模拟器上安装,去掉-d标志。

4)利润!

进入工程目录,执行如下命令:

cd android && ./gradlew assembleRelease

对我来说这是可行的(MACOS)

打开终端

cd project_directory

执行此命令

yarn start

打开另一个终端

运行这些命令

cd android
./gradlew assembleRelease

只有这对我有用- yarn android -variant=release

你应该使用android studio来完成这个过程。这样更简单。但是首先在react原生应用目录下运行这个命令:

对于react-native的更新版本(例如:React原生0.49.0等等…)

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

对于react-native的旧版本(0.49.0及以下)

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/

然后使用android studio在你的react原生应用目录中打开“android”文件夹,它会要求升级gradle和其他一些东西。去build->生成签名APK,并按照那里的指示。这真的很直接。