fan*_*tly 1 ant android android-manifest
Android Manifest 中是否有可能有条件?我知道它可能不是直接开箱即用的,因为它依赖于 R.java 等。我希望的是一些插件可以替换清单的某些部分(也注释/取消注释)到简化我的部署过程。
基本上,我们有一些我们想要完全锁定的设备,所以我将它们设置为category.HOME等等。但我们还有一些个人设备仍然用于测试。因此,确保我不会使用新的启动器来打击个人设备是非常乏味的。
我知道这很琐碎,但在以前的语言中我会使用ifdef等,但 Java 不是这样工作的。
我设法找到了这个:http : //www.ibm.com/developerworks/rational/library/09/eclipsecustomanttasks/ - 给我一些时间我可能会一起捏造一些东西,但我必须承认,我不真的知道从哪里开始,或者即使这可能吗?
希望之前有人想到过这个并有一个神奇的解决方案!:)
干杯。
您可以拥有一个布尔资源——is_this_for_realz在此处调用它——设置为true用于生产和false其他。然后你可以设置一个<activity-alias>有你的HOME <intent-filter>,那里<activity-alias>有android:enabled="@bool/is_this_for_realz"。然后,是否使用该HOME过滤器取决于该布尔资源的状态。您需要安排在设置is_this_for_realz为的资源文件中让您的生产版本交换true,而您的正常调试版本则是false.
正如 Machinarius 所指出的,使用 Gradle for Android会变得更简单。您可以使用布尔资源方法,但调试/发布版本is_this_for_realz由 Gradle 构建类型驱动。或者,如果您遇到<activity-alias>技术问题,您可以使用不同的清单进行调试和发布。
回答有点晚了,但这就是我所做的。
首先在 Gradle 中创建清单变量,如下所示:
buildTypes {
debug {
manifestPlaceholders = [ applicationLabel: "@string/app_name_dev",
azureRedirectURI: "URI_FOR_DEV"]
}
release {
manifestPlaceholders = [ applicationLabel: "@string/app_name",
azureRedirectURI: "URI_FOR_PROD"]
}
}
Run Code Online (Sandbox Code Playgroud)
然后在清单中你可以这样做:
<application android:label="${applicationLabel}" />
<activity android:name="com.microsoft.identity.client.BrowserTabActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!--Add in your scheme/host from registered redirect URI-->
<data
android:scheme="${azureRedirectURI}"
android:host="auth" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |