如何修改和重新发布AOSP应用程序?

时间:2013-02-07 19:39:29

标签: android package

我对股票android电子邮件应用程序缺乏一个简单的功能感到恼火。当这个应用程序以open source发布时,我可以很容易地解决这个问题。

问题:如何以我和其他用户可以安装修改后的EMail应用程序(无root访问权限)的方式发布此修改?我尝试了以下方法:

  1. 通过大量复制,我能够使用标准的Eclipse / ant工具链构建EMail应用程序,而无需使用make-scripts的ASOP工具链。
  2. 现在安装此应用程序会导致错误,因为已经安装了软件包(显然,我没有更新的歌曲键)
  3. 在设备上禁用电子邮件应用也无济于事,我仍无法安装新应用。
  4. 我虽然在清单中更改应用程序的包名称,但它并不那么简单:您还必须将所有类移动到新包中。此外,正如您在AndroidManifest中看到的,应用程序定义了新权限(com.android.email.permission.READ_ATTACHMENT)以及在安装修改后的包时导致重复错误的其他因素。这些权限是源中的字符串引用。

    手动修改每个文件然后调试每个错误真的是我问题的唯一解决方案吗?由于我修改并移动了每个文件,因此这些修改也会使新版本的EMail应用程序变得非常困难。

2 个答案:

答案 0 :(得分:3)

  

我想改变清单

中应用程序的包名称

这是必需的。

  

您还必须将所有类移动到新包中

不一定。 R将生成到清单中声明的​​包中,因此您需要安排导入R类。如果适用,您将需要更新清单本身以使用完全限定的类名而不是裸类名。

  

此外,正如您在AndroidManifest中看到的那样,应用程序定义了新的权限(com.android.email.permission.READ_ATTACHMENT)以及在安装修改后的包时导致重复错误的其他内容。

完全可以定义现有权限。我不知道你在哪里/如何得到“重复错误”。

  

手动修改每个文件然后调试每个错误真的是我问题的唯一解决方案吗?

或多或少。请参阅上面的“不一定”段落。

  

由于我修改并移动了每个文件,这些修改也会使新版本的EMail应用程序变得非常困难。

您是决定开始此任务的人,而不是将您的更改提供给现有的开源邮件应用程序,例如K-9 Mail(多年前也分叉了AOSP电子邮件应用程序),或者AOSP电子邮件应用程序本身(通过AOSP contribution process)。

答案 1 :(得分:2)

这个话题可能陈旧,但我想我会分享我为子孙后代做的事情。我能够使用上面的信息修改浏览器源并创建我自己的应用程序版本(可以与股票应用程序并行安装)。我做了什么:

  • 在清单中,更改包名称
  • 在res-> values->字符串中,更改应用程序标签(这只是为了方便起见,避免使用2个具有相同名称的应用程序)
  • 在清单中,删除“original-package”属性(可能不是必需的)
  • 在清单中,更改提供商权限(以匹配我的新包名称)
  • 确保清单中的所有类名都是完全限定的。

最后一步需要几次尝试,但这只是构建,安装,启动和检查LogCat以查找错误的引用。