android 代码打包android多渠道打包使用不同的资源、依赖、代码

android多渠道打包使用不同的资源、依赖、代码,最近在进行Adroid多渠道打包时遇到了些问题,在此做记录及分享给有需要的人。需求是这样来的,在发布我的a时,在国内的其他市场发布时都能正常通过,但到了百度市场时被拒绝了,给出的理由是个人合作者的a不能包含有支付功能,a里包含了支付的依赖。我就郁闷了,事实上我的a是没有支付功能的,只有分享功能...
最近在进行Android多渠道打包时遇到了些问题,在此做记录及分享给有需要的人。需求是这样来的,在发布我的app时,在国内的其他市场发布时都能正常通过,但到了百度市场时被拒绝了,给出的理由是个人合作者的app不能包含有支付功能,app里包含了支付的依赖。我就郁闷了,事实上我的app是没有支付功能的,只有分享功能,分享到微信及QQ的功能,所包含的依赖也是为实现此功能的。顺便也吐槽一下百度。。吐槽归吐槽,app还是得发布的,那只能打包一个不包含分享功能的app了。这就要用到多渠道打包了,不想用新建多个module的方式来做,就使用gradle配置来实现,实施的时候走了不少的弯路和花了不少时间,在此做记录及分享给有需要的人。遇到的主要问题是:选择不同的渠道时需要加载不同的依赖并使用不同的代码,这二个地方都有一些坑。工具/原料androidstudio2.3gradle方法/步骤1建立不同的渠道,主要通过设置productFlavors来实现的,如图设置了tencent_、baudu_等几个渠道,记住已经设置好的渠道名,下面的步骤需要用到。步骤阅读2编辑build.gradle的依赖(dependencies),这一步要实现不同的渠道加载不同的依赖。这里有个需要注意的地方,一般都有这么一句:compilefileTree(include:[\'*.jar\'],dir:\'libs\')这句的作用是自动加载libs里的所有的.jar文件,这一句一定要去掉,否则实现不了不同渠道加载不同的jar的目的。去掉这句之后其他的jar只能通过compile\'com.github.satyan:sugar:1.5\'的方式加载。不同渠道加载不同的依赖就要在compile上做文章了,格式是:渠道名+Compile,这样就是渠道独有的,如tencent_Compile就是tencent_渠道独有的加载。如图中的这二句://  baidu_Compilefiles(\'libs/libammsdk_weixin.jar\')//  baidu_Compilefiles(\'libs/open_sdk_r5509_qq_lite.jar\')这二句被注释了,所以baidu_渠道不会加载这二个jar了。步骤阅读3在项目(module)的src新建已渠道名称命名的文件夹,名字一定要跟渠道名一样,级别跟main文件夹是一样的,里面独有文件独有资源的文件结构要跟main一致。这里有二种文件,一种是需要用到的资源文件,如各种xml文件或图片等,一种是java代码。这里我遇到了一个坑。一开始我以为渠道文件夹里的文件在编译时会自动替换掉main文件夹里的相应文件,xml文件和图片等资源确实是这样的,没有问题;但到了java文件时,文件就出现了,如图中ShareActivity.java文件,在各个渠道文件夹里有这个文件,在main里也有这个文件,但在编译时就会提示类重复,编译不通过。哈哈。。说好的自动替换呢,怎么还编译不了呢,郁闷了。后来经过多次实验得出结论,只要把main里的java文件删除就能正常编译了。这是遇到的最大的坑,花了不少时间。后来才得知,各个渠道文件夹和main文件夹之间的关系不是单纯的替换,而是优先使用渠道的东西,编译时相当于是合并,xml等文件相当于直接替换,但java却不是这样的。我只能只要理解了,哈哈步骤阅读步骤阅读4打完,收工END注意事项要去掉compilefileTree(include:[\'*.jar\'],dir:\'libs\')使用baidu_Compilefiles(\'libs/libammsdk_weixin.jar\')加载独有依赖渠道文件夹里独有的java文件在main文件夹里不能存在相应的文件

本文来自投稿,不代表长河网立场,转载请注明出处: http://www.changhe99.com/a/oV6Mn5QrgM.html

(0)

相关推荐