我试图在Android
上获得一个.jpg
文件的绝对路径。我正在使用Expo Asset
库。当我的应用程序在debug mode
中运行时,一切都按预期运行。Expo Asset
库使用正确的localUri
路径返回我的文件,但在release mode
中,localUri
属性仅包含文件名,而不包含实际路径。作为debug
的示例,localUri
包含以下内容:file:///data/user/0/com.test.app/cache/ExponentAsset-10f8d3f8108915f49694bdd86e85fcbd.jpg
而在CCD_ 12中,相同的属性将包含CCD_
以下是请求:
backgroundUri = await Asset.loadAsync(require('../../assets/bg_img.jpg'));
这是我用来构建release
apk:的命令
cd android
./gradlew assembleRelease
这是我在debug
:中运行应用程序时使用的命令
npx react-native start --port 8084 --reset-cache
npx react-native run-android --port 8084
有没有办法做到这一点?或者有更好的解决方案可以在Android上获得文件的绝对路径吗?
根据我的经验,仅仅以发布模式构建是不够的。构建发布时需要遵循以下步骤:
./gradlew clean
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/
./gradlew assembleRelease
正如您所看到的,为了成功地将所有内容打包以供发布,首先需要绑定。
使用Expo File System
库找到了一个解决方案:
const imgUri = `${FileSystem.cacheDirectory}/bg_img.jpg`;
await FileSystem.copyAsync({from: 'asset://assets/images/bg_img.jpg', to: imgUri });
我还在/android/app/src/main/assets/images
下创建了一个资产映像文件夹,并在其中添加了我的.jpg
文件。