我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。
然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。
我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?
更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。
我已经构建了我的应用程序,我可以在我的本地模拟器上运行它(也可以在同一网络内通过更改调试服务器在我的android设备上运行)。
然而,我想构建一个APK,我可以发送给没有访问开发服务器的人,我希望他们能够测试应用程序。
我看到有一节使用离线捆绑在iOS部分的文档。但我不知道如何在android上实现同样的功能。这可能吗?如果有,怎么做?
更新:关于这个问题的答案(Android无法加载JS包),据说离线包可以从开发服务器下载。但是当我从开发服务器获取包时,图像文件无法加载。
当前回答
对于最新的react原生版本来捆绑项目
安卓
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/
iOS
React-native bundle——entry-file index.js——platform ios——dev false——bundle-output ios/main。Jsbundle——assets-dest ios
其他回答
Android Studio中的GUI方式
Have the Android app part of the React Native app open in Android Studio (this just means opening the android folder of your react-native project with Android Studio) Go to the "Build" tab at the top Go down to "Build Bundle(s) / APK(s)" Then select "Build APK(s)" This will walk you through a process of locating your keys to sign the APK or creating your keys if you don't have them already which is all very straightforward. If you're just practicing, you can generate these keys and save them to your desktop. Once that process is complete and if the build was successful, there will be a popup down below in Android Studio. Click the link within it that says "locate" (the APK) That will take you to the apk file, move that over to your android device. Then navigate to that file on the Android device and install it.
React Native 0.49及以上版本
你应该在终端的工程目录下运行这个命令
1 - mkdir android/app/src/main/assets
2 - 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
如果低于0.49
1 - mkdir android/app/src/main/assets
2 - 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,并按照那里的指示。那好。
根据Aditya Singh的回答,生成的(未签名的)apk不会安装在我的手机上。我必须使用这里的说明生成一个签名apk。
下面的方法对我很有效:
$ keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
把我的释放钥匙放上去。android/app下的Keystore文件 目录。然后编辑文件 ~ / .gradle / gradle。属性并添加以下内容(替换**** . Properties) 使用正确的密钥存储库密码、别名和密钥密码)
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=****
MYAPP_RELEASE_KEY_PASSWORD=****
如果你使用的是MacOS,你可以使用这里的说明将密码存储在钥匙链中,而不是以明文形式存储。
然后编辑app/build。gradle并确保存在以下内容(可能需要添加带有signingConfigs signingConfig的部分):
...
android {
...
defaultConfig { ... }
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
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...
然后执行cd android && ./gradlew assemblerrelease命令,
对于Windows, cd android,然后执行gradlew assemblerrelease命令,在android/app/build/outputs/apk/app-release.apk或android/app/build/outputs/apk/release/app-release.apk下找到签名的apk
希望对初学者有所帮助
这里是官方文档
如果您没有密钥存储库,请使用之前的命令否则跳过
生成签名密钥/ 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
第一个
cd android
然后运行
./gradlew installRelease
最后你将能够在这里找到apk。
Project\android\app\build\outputs\apk\release\app-release.apk