问题1:
如果项目中用到了 r = Class.forName(packageName + ".R");从R文件中获取Class的写法,一定要注意packageName与applicaitonId,此时获取到的packageName是applicaitonId,假设多渠道设置了多个applicationId;
问题2:
加载so文件,在app/src/main下建立jniLibs,
build.gradle.
sourceSets { main { /* java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] // res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs']//这一行是没有的,如果我们有.so文件就需要加上这一行代码*/ manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] /* resources.srcDirs = ['src/main/res'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src']*/ res.srcDirs = ['src/main/res'] assets.srcDirs = ['src/main/assets'] jniLibs.srcDirs = ['src/main/jniLibs'] } }以前配置经过测试可用,网上有些答案,测试之后发现不可用。
问题3:
多渠道打包配置,app_icon是应用图标可以自定义修改,在application节点中 android:icon="${app_icon}"
//多渠道打包apk,可用多个 productFlavors { elove { applicationId 'com.test.demo1' resValue "string", "app_name", "名称"//这个是应用名称,通过多渠道可以修改成不同名称, versionCode=1 versionName="A1.0.1" manifestPlaceholders = [app_icon:"@drawable/ic_launcher",push_author:"com.test.demo1.bdpush", push_api_key:"百度推送key",bdditu_api_key:"百度地图key",load_theme:"@style/LoadAppTheme"] } jicaibao { applicationId 'com.test.demo2' resValue "string", "app_name", "名称2" versionCode=1 versionName="A1.0.1" manifestPlaceholders = [app_icon:"@drawable/ic_launcher",push_author:"com.test.demo2.bdpush", push_api_key:"百度推送key",bdditu_api_key:"百度地图key",load_theme:"@style/jicaibaoLoadAppTheme"] } }
AndroidManifest.xml中配置
假设第三方jar中app_name有配置会产生冲突,application节点加入
tools:replace="android:label" android:label="@string/app_name"
manifest节点加入xmlns:tools="http://schemas.android.com/tools"可以解决,还可以不配置label用问题2中的resValue直接赋值。
<meta-data
android:name="api_key"
android:value="${push_api_key}" />百度推送key
<!-- 适配Android N系统必需的ContentProvider声明,写权限包含应用包名-->
<provider
android:name="com.baidu.android.pushservice.PushInfoProvider"
android:authorities="${push_author}"
android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.manifest中packageName"
android:protectionLevel = "signature"
android:exported="true" />
这是百度推送的配置中一部分
百度地图
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="${bdditu_api_key}" />
折腾了几天,总算搞定了,小结一下。