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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值