Android Studio多渠道打包小结

问题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直接赋值。

android:name="api_key"
android:value="${push_api_key}" />百度推送key


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" />

这是百度推送的配置中一部分

百度地图

android:name="com.baidu.lbsapi.API_KEY"
android:value="${bdditu_api_key}" />

折腾了几天,总算搞定了,小结一下。

你可能感兴趣的:(Android Studio多渠道打包小结)