Tho*_* H. 2 android build gradle android-manifest
我有一个应用程序只有使用不直接访问的服务,接收器和活动(没有启动器活动).
但是现在我必须添加一个用作启动器活动的活动但是只有当应用程序在BUILD期间设置了一些特定变量时,此启动器活动才必须存在.
所以基本上,当调用gradle构建时,我设置了一个变量HAS_LAUNCHER=1
,在我的build.gradle中,我有类似的东西:
defaultConfig {
...
def hasLauncher = System.getenv("HAS_LAUNCHER")
if (hasLauncher != null && hasLauncher == "1") {
// Something here to include the activity tag in the AndroidManifest.xml
}
}
Run Code Online (Sandbox Code Playgroud)
在我的AndroidManifest中,我必须<activity>
在if
条件成立时添加标记:
<activity
android:name=".LauncherActivity"
android:label="Launcher"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
可能为时已晚,但经过多天寻找解决方案,我已经这样做了:
gradle defaultConfig
defaultConfig {
resValue "bool", "showActivity", "true"
...
Run Code Online (Sandbox Code Playgroud)
在builTypes中
buildTypes {
release {
resValue "bool", "showActivity", "false"
debuggable false
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
Run Code Online (Sandbox Code Playgroud)
在清单中
<activity
android:name="xxx.xx.xxx"
android:enabled="@bool/showActivity"
android:label="@string/myActivity"
android:icon="@android:drawable/ic_menu_preferences">
...
Run Code Online (Sandbox Code Playgroud)
这样您就可以从gradle控制活动可见性.请注意,您也可以在代码中使用,只需创建一个bool资源showActivity,它将被gradle值替换,您将能够读取它
context.getResources().getBoolean(R.bool.showActivity)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1549 次 |
最近记录: |