博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以最小代价解决同一apk不同资源定制共存问题
阅读量:5306 次
发布时间:2019-06-14

本文共 815 字,大约阅读时间需要 2 分钟。

今天在公司上班,因项目需求需要,同一套源码只是修改软件图标,以及服务器访问ip,端口等基础配置,编译出不同的定制版本。因为apk的唯一性是由工程包名来标记的,包名相同的apk不能够在同一台设备上安装,这就造成了项目演示不便,那么同事就抛出这个问题给我,并且也给我提供了几个方案:

方案一:修改包名,这无疑是最直接的,但却是工作量最大的,改完AndroidManifest.xml下package="包名"配置,还要修改整个项目的类导包,以及R.java的重新生成。

结果:我没有尝试,直接否定了。

方案二:在同一工程中建两个包,一个是主项目包,另一个是定制部分,AndroidManifest.xml下用定制包命名,但经考虑这个方案只解决了普通类的导包问题,并不能解决R.jave的路径,而R却是大量的在工程中引用的类。

结果:相比方案一进步不大,也否定了。

方案三:建立两个工程,一个主工程,保持原来的代码结构,改成library工程,通过工程依赖来实现项目关联。

具体实施:Base工程为非定制工程,改为library工程(只在eclipse中有用),新建A工程添加依赖Base工程,去掉所有res及其子目录下的文件(目的是为了防止定制工程中的资源文件生成的R.java与Base工程不同),将所有需要定制的资源放到Base工程内引用。然后将Base工程的AndroidManifest.xml复制一份到A工程中,修改package为A工程包名,然后将Base工程中用到的类库libs贴到A工程下并且添加buildpath,新建入口Activity使入口Activity在完成定制工作后(比如修改Base工程中的服务器配置),跳转到Base工程的入口Activity。大功告成,成功在同一台设备安装运行多个相同源码apk。

转载于:https://www.cnblogs.com/changewu/p/3337800.html

你可能感兴趣的文章
计算机专业及软件开发推荐书籍
查看>>
单词游戏 Poj1386
查看>>
Microsoft SQL Server 2012 数据库安装图解教程
查看>>
flask 服务器详解
查看>>
Linux内核分析 一二章读书笔记
查看>>
读《大道至简》有感
查看>>
sudo :无法解析主机
查看>>
VS2013 类向导 "异常来自 HRESULT:0x8CE0000B" 解决方法
查看>>
图论——Dijkstra+prim算法涉及到的优先队列(二叉堆)
查看>>
网页下拉菜单被flash动画遮住
查看>>
echarts设置柱状图颜色渐变及柱状图粗细大小
查看>>
Windows内核编程之:分页内存与非分页内存 #define PAGEDCODE code_seg("PAGE") (转)
查看>>
iOS 使用 socket 即时通信(非第三方库)
查看>>
android UI进阶之实现listview中checkbox的多选与记录
查看>>
MAC Safari上网弹窗弹广告的最新有效解决方法
查看>>
ligerTab简单例子
查看>>
JMeter上传文件
查看>>
MVC+三层架构
查看>>
【06】GitHub WiKi
查看>>
【05】 定义类或对象
查看>>