我正试图将我的codenameone应用程序安装到外部存储中,所以我不需要root权限即可调试写入存储的内容,因为即使在模拟器中也无法在Android上运行。
首先,我假设仅在codename1.arg.android.installLocation=preferExternal
中加入codenameone_settings.properties
即可,但是即使将installLocation从auto更改为preferredExternal,应用程序仍会安装到内部存储中。
因此,我认为也许需要对quoteExternal进行引号,然后继续使用引号(=\"preferExternal\"
)-这在构建服务器上产生了清单生成错误,该清单显示了带有双引号的清单,因此原始文件是正确的表格。
从错误报告中,我看到了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="false" />
所以我认为也许可能需要这样做才能实际安装到外部存储器。我尝试像文档中建议的那样将codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE=true
添加到属性文件中,但是在清单合并中失败了:
合并结果:ERROR /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml:48:7-69错误: 元素在AndroidManifest.xml:49:5-81处使用了permission#android.permission.WRITE_EXTERNAL_STORAGE与在AndroidManifest.xml:45:5-106中声明的元素重复 /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml错误: 验证失败,正在退出
好,所以我认为它总是包含在内,因此我只需要将所需设置更改为true,然后按照文档中的说明在属性中添加codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE.required=true
即可。这样就可以构建,但是实际的权限未设置为android:required="true"
,但仍为false。
使用android.xpermissions
标签插入想要的行<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />
确实会将其插入到清单,但是清单构建器给出并出错,因为默认的错误行也仍然存在:
合并结果:ERROR /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml:48:3-103错误: 元素在AndroidManifest.xml:48:3-103处使用了permission#android.permission.WRITE_EXTERNAL_STORAGE与在AndroidManifest.xml:45:5-106中声明的元素重复 /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml错误: 验证失败,正在退出
所以问题仍然存在,如何配置一个codenameone项目以安装在Android的外部存储中?
答案 0 :(得分:0)
查看此android:installLocation="preferExternal" not working
要点是,您的应用程序的某些部分将始终安装在隐藏区域中,并且存储可能会放在该区域中。
如果您想将内容写入SD卡,则可以使用FileSystemStorage
API来做到这一点,该API允许您写入任意根目录。您可以检测到SDCard根,然后在其中写入。我建议您在模拟器中进行调试,尽管您可以在.cn1
目录中轻松查看存储内容。