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

6
我对原生Android电子邮件应用缺少一个简单的功能感到烦恼。由于该应用程序是作为开源发布的,我可以很容易地解决这个问题。
问题:我如何以这样的方式发布修改,使我和其他用户可以安装修改后的电子邮件应用程序(无需root访问权限)?我尝试了以下方法:
  1. 通过大量复制,我能够使用标准的Eclipse / ant工具链构建电子邮件应用程序,而不使用使用make脚本的ASOP工具链。
  2. 现在安装此应用程序会导致错误,因为包已经安装(显然,我没有签名密钥来更新)
  3. 在设备上禁用电子邮件应用程序也没有帮助,我仍然无法安装我的新应用程序。
我考虑在清单中更改应用程序的包名称,但这并不简单:您还必须将所有类移动到新包中。此外,正如您在AndroidManifest中看到的那样,应用程序定义了新权限(com.android.email.permission.READ_ATTACHMENT)和其他一些内容,这会导致安装修改的软件包时出现重复错误。这些权限在源代码中作为字符串引用。
手动修改每个文件,然后调试每个错误,真的是解决我的问题的唯一方法吗?这些修改还会使拉取新版本的电子邮件应用程序变得非常困难,因为我已经修改并移动了每个文件。

1
为了节省您的麻烦,我之前成功编译并安装了我的版本,可以与原始电子邮件应用程序一起使用,并已将其开源此处 - Raghav Sood
2个回答

3
我考虑在清单中更改应用程序的包名称。
这是必须的。
您还需要将所有类移动到新包中。
不一定。 R将生成到清单中声明的包中,因此您需要安排导入该R类。如果适用,您还需要更新清单本身以使用完全限定的类名而不是裸类名。
此外,如您在AndroidManifest中所见,应用程序定义了新权限(com.android.email.permission.READ_ATTACHMENT)和其他内容,这会导致在安装修改后的包时出现重复错误。
完全可以定义现有权限。我不知道您从何处/如何获得“重复错误”。
每个文件手动修改然后调试每个错误真的是解决我的问题的唯一方法吗?
或多或少。请参阅上面的“不一定”段落。
这些修改也会使拉入新版本的电子邮件应用程序变得非常困难,因为我已经修改并移动了每个文件。

相较于向现有的开源邮件应用程序(例如多年前分叉了AOSP电子邮件应用程序的K-9邮件或AOSP电子邮件应用程序本身(通过AOSP贡献过程))贡献您的更改,您决定着手进行这项任务。


Raghav的Git存储库(上面的链接)是一个很好的起点。我还能够对AOSP中的电子邮件应用程序源代码进行更改,但测试它需要在模拟器中运行生成的映像或修改股票模拟器映像以删除电子邮件应用程序。Raghav的工作允许针对标准SDK进行编译,使开发过程变得更加容易。 - SurlyDre

2
这个话题可能有些陈旧,但我想分享一下我为后人所做的事情。我能够使用上面的信息修改浏览器源代码并创建自己的应用程序版本(可以与原始版本同时安装)。我的操作如下:
  • 在清单文件中更改包名
  • 在res->values->strings中更改应用程序标签(这只是为了方便,避免出现两个同名应用程序)
  • 在清单文件中删除“original-package”属性(可能不需要)
  • 在清单文件中更改提供者权限(以匹配我的新包名)
  • 确保清单中的所有类名都是完全限定的。
最后一步尝试了几次,但只是构建、安装、启动,并检查LogCat中的错误引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接