-
23
-
24
-
25
-
26
-
27
-
28
注意啦,这里有个坑,我们上面写了
resValue "string","app_name","demo"
- 1
运行之后,AS会自动生成@string/app_name,内容是这样的
<item type="string" name="app_name">demo</item>
- 1
那么问题来了,如果你在app的strings.xml文件也定义了
<string name="app_name">demo</string>
- 1
编译的时候就会出现问题,因为有2个app_name,所以我们要把app的strings.xml去掉,编译就会正常了。
再注意啦,我们只能在app的build.gradle文件配置各个版本的值,如
`app1 { buildConfigField "in
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 开源分享
t", “TYPE”, “1” } app2 { buildConfigField “int”, “TYPE”, “2” }`
-
1
-
2
-
3
-
4
-
5
-
6
如果你在其他子模块配置的话,编译时出现乱七八糟的错误!!
如果子模块需要配置的值,可以在公共模块定义静态变量,在app模块取出配置值后,设置到公共模块定义的静态变量中,这样的话各个模块都可以取到!!
修改AndroidManifest.xml文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.johan.demo"> <application android:allowBackup="true" // 注意啦,这里改为${app_icon} android:icon="${app_icon}" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".ui.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
注意啦,icon属性的值是${app_icon},虽然为红色,但是不要紧,我们在build.gradle文件中加入了这么一段代码:
android { ... lintOptions { checkReleaseBuilds false abortOnError false } }
-
1
-
2
-
3
-
4
-
5
-
6
-
7
这里的作用就是即使项目中报错也不会停止打包 。
打包并签名APK
我们打包时,就会出现2个app:
我们选择2个app,AS就会帮我们打包2个不同的APK了,就这么简单!!