Ulr*_*ler 47 automation android
什么是部署Android应用程序的多个自定义版本的最佳方式?
目前我有一个脚本来交换资源文件夹以获取我的应用程序的自定义版本.它工作得很好,但所有自定义版本在AndroidManifest.xml中仍然具有相同的包名称.因此,无法同时安装两个自定义版本的应用程序.
您能想到一个更简单的解决方案,或者如何将其纳入skript?
(顺便说一句:它不适用于色情/垃圾邮件/任何应用程序,甚至不是付费应用程序)
lar*_*am1 24
也许内置的Android"库"概念在原始帖子时尚未完全出炉,但它可能是2011年的首选方法.请按照以下步骤进行ant构建:
从一个正在运行的应用程序开始(让我们将其命名为"myOrigApp",包com.foo.myapp),只需将此行添加到"default.properties"以使其成为库:
android.library=true
Run Code Online (Sandbox Code Playgroud)
现在以您喜欢的任何方式在兄弟目录中创建一个新的应用程序(让我们称之为"sibling"目录,包com.foo.myVariant).例如,使用Intellij Idea,从头开始创建一个带有目录'sibling'的项目,它将创建您通常需要的所有文件/目录.
在新的兄弟目录中编辑"default.properties"以添加依赖项:
android.library.reference.1=../myOrigApp
Run Code Online (Sandbox Code Playgroud)
从原始目录复制清单:
cd sibling
cp ../myOrigApp/AndroidManifest.xml ../myOrigApp/local.properties ../myOrigApp/build.properties .
Run Code Online (Sandbox Code Playgroud)
编辑复制的Manifest文件,将其包名更改为新变种"com.foo.myVarient"; 这是唯一的变化.
如果你只是运行ant构建脚本,你可能会完成.(我不得不设置签名密钥.)
如果要设置像Idea这样的IDE以使库项目作为变体项目的依赖项,请按照以下步骤将库项目添加到变体项目中(假设您已经为两者设置了项目):
我对类似的事情所做的就是使用antlib任务,然后浏览所有java和xml文件,将旧的包字符串替换为新的包字符串.根据包,文件是否在正确的src路径中并不重要.只是对所有文件进行正则表达式替换就足以让我完成这项工作......
例如,在src目录下的所有java文件中替换它:
<replaceregexp flags="g" byline="false">
<regexp pattern="old.package.string" />
<substitution expression="new.package.string" />
<fileset dir="src" includes="**/*.java" />
</replaceregexp>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26517 次 |
| 最近记录: |