有没有办法在gradle的build.config中动态设置AndroidManifest中的activity screenOrientation?
我需要一个允许旋转的flavor,和一个只支持竖屏的flavor。
我已经阅读了http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger,但它们的示例似乎仅适用于普通字符串标签。
我尝试了两种方法。
使用gradle的manifestPlaceholders: build.gradle:
带有清单文件:
这种方式可以成功构建,但是当我尝试将其安装到设备时,Android Studio会显示“安装失败,错误消息为INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION。如果存在apk的现有版本,则卸载该版本,然后重新安装可能会解决此问题。”
点击“确定”仅会在事件日志中显示“安装APK时出错”。
所以,是否有一种方法可以在不同的构建类型/风味之间具有不同的方向?
我更喜欢避免在BaseActivity中以编程方式执行此操作。
抱歉,我尝试了一些操作后发现我之前尝试的第一种方法确实可行。可能是我之前在自己的设备上安装了错误的版本。唯一的问题是,Android Studio会在“android:screenOrientation =“$ {ROTATION_PREF}”属性上发出警告,说找不到它,尽管它可以正常构建和工作。感谢回答的尝试。
我需要一个允许旋转的flavor,和一个只支持竖屏的flavor。
我已经阅读了http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger,但它们的示例似乎仅适用于普通字符串标签。
我尝试了两种方法。
使用gradle的manifestPlaceholders: build.gradle:
productFlavors {
flavorRotation {
manifestPlaceholders = [ROTATION_PREF: "unspecified"]
}
flavorNoRotation {
manifestPlaceholders = [ROTATION_PREF: "portrait"]
}
}
使用 AndroidManifest.xml:
...
<activity android:name=".ui.ActivityName"
android:screenOrientation="${ROTATION_PREF}"/>
...
这似乎不起作用,没有错误提示,但旋转在构建“flavorNoRotation”时未锁定到纵向
并尝试使用gradle的resValue:
build.gradle:
productFlavors {
flavorRotation {
resValue "string", "orientation", "unspecified"
}
flavorNoRotation {
resValue "string", "orientation", "portrait"
}
}
带有清单文件:
...
<activity android:name=".ui.ActivityName"
android:screenOrientation="@string/orientation"/>
...
这种方式可以成功构建,但是当我尝试将其安装到设备时,Android Studio会显示“安装失败,错误消息为INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION。如果存在apk的现有版本,则卸载该版本,然后重新安装可能会解决此问题。”
点击“确定”仅会在事件日志中显示“安装APK时出错”。
所以,是否有一种方法可以在不同的构建类型/风味之间具有不同的方向?
我更喜欢避免在BaseActivity中以编程方式执行此操作。
抱歉,我尝试了一些操作后发现我之前尝试的第一种方法确实可行。可能是我之前在自己的设备上安装了错误的版本。唯一的问题是,Android Studio会在“android:screenOrientation =“$ {ROTATION_PREF}”属性上发出警告,说找不到它,尽管它可以正常构建和工作。感谢回答的尝试。