踩坑将一个AndroidStudio项目变成一个module引入到自己的项目中

最近工作中遇到了需要将一个完整的androidstudio项目移植到自己项目中去,因为考虑到自己已经有的项目和需要引入的项目资源都很庞大,为了方便代码管理,决定将需要引入的项目作为一个module导入到自己现有项目中来。

操作步骤:

1,在主项目下新建一个module随意命名,然后将需要导入的项目的src,res,AndroidManifest等文件全部copy过来(这一步可能有其他更好方法),然后将build.gradle文件里的  apply plugin: 'com.android.application' 改为 apply plugin: 'com.android.library' 然后将compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion  都改为与主项目一样就好,去掉applicationid也是必须,其他配置可以不变就好,主要是去掉原来的作为application的一些配置。还要将AndroidManifest文件里面application下面的Launcher等属性都去掉,只注册activity等其他需要注册的组件就好!(这一步很简答,不详细多说)

 

2,在主项目中compile一下你建好的module,试着运行一下,可能会出现错误,

这个问题很简单,是因为你原项目用了switch (view.getId()),当作为module的时候view的id变成了非常量,而switch下面的case需要常量。所以没说的,改为if()else()去判断就好了!改完了之后再尝试去跑一下,你会发现又有新的问题,

Warning:Exception while processing task java.io.IOException: Can't write [F:\save\HG-appsoft\app\build\intermediates\transforms\proguard\GOOGLEPLAY\debug\jars\3\1f\main.jar] (Can't read [F:\save\HG-appsoft\app\build\intermediates\classes\GOOGLEPLAY\debug(;;;;;;**.class)] (Duplicate zip entry [com/******/camplayer/HiCamPlayer$HiCamPlayerStateListener.class]))这个问题看起来会让人一脸懵逼,本人各种百度,google也没有得出具体准确解法,花费了一天多时间,最后突然发现HiCamPlayerStateListener这个类是有重复的,原来在我主项目中就已经有这个类了,我点进去查看发现同事之前有将module下的这部分代码放进主项目,知道了之后将所有重复了类文件全部删除。然后再程序,这次就顺利了,安装APP成功。

3,到了这里,将一个独立androidstudio项目添加到自己项目中去的想法已经算是实现了,点击看看module代码的功能是否正常运行吧!一测试又发现了问题,居然报出了NullPointerException ,通过log查看发现在我的某一个类中通过findviewbyid找到的控件对象是null。。刚开始以为这个是简单问题好坚决,一番调试,查找问题原因,发现这个null实在没道理,最后将代码拷出来写了简单demo测试发现是正常的,最后我使用了一个神奇的解决办法,那就是将layout文件名称换了一个,原封不动的复制了xml里面的代码,然后就正常了。不会为空了,最后我估计问题应该还是跟上面那个问题一样,有相同的资源id,导致拿到了错误的资源对象,所以会为空!

ok,,到这里就都完了,很早之前就有想法写Blog,一直到现在才真正实现,以后再接再厉吧!




  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值