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

Android 如何修改和重新发布AOSP应用程序?,android,package,Android,Package,我对android股票电子邮件应用程序中的一个简单功能缺乏感到恼火。由于这个应用程序已经发布,我可以很容易地修复它 问题:我如何发布此修改,以便我和其他用户可以安装修改后的电子邮件应用程序(无需root访问)?我尝试了以下方法: 通过大量复制,我能够使用标准Eclipse/ant工具链构建电子邮件应用程序,而不使用使用make脚本的ASOP工具链 现在安装这个应用程序会导致一个错误,因为软件包已经安装(显然,我没有要更新的唱歌键) 禁用设备上的电子邮件应用程序也没有帮助,我仍然无法安装我的新应用

我对android股票电子邮件应用程序中的一个简单功能缺乏感到恼火。由于这个应用程序已经发布,我可以很容易地修复它

问题:我如何发布此修改,以便我和其他用户可以安装修改后的电子邮件应用程序(无需root访问)?我尝试了以下方法:

  • 通过大量复制,我能够使用标准Eclipse/ant工具链构建电子邮件应用程序,而不使用使用make脚本的ASOP工具链
  • 现在安装这个应用程序会导致一个错误,因为软件包已经安装(显然,我没有要更新的唱歌键)
  • 禁用设备上的电子邮件应用程序也没有帮助,我仍然无法安装我的新应用程序
  • 我考虑过在清单中更改应用程序的包名,但并不是那么简单:还必须将所有类移动到新包中。此外,正如您在中所看到的,应用程序定义了新的权限(
    com.android.email.permission.READ_ATTACHMENT
    )以及在安装修改后的软件包时导致复制错误的其他内容。这些权限在源中作为字符串引用

    手动修改每个文件,然后调试每个错误真的是解决我问题的唯一方法吗?由于我已经修改并移动了每一个文件,这些修改也会使引入新版本的电子邮件应用程序变得非常困难

    我想更改清单中应用程序的包名

    这是必须的

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

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

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

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

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

    或多或少。见上文“不一定”一段

    由于我已经修改并移动了每一个文件,这些修改也会使引入新版本的电子邮件应用程序变得非常困难


    您是决定开始这项任务的人,而不是将您的更改贡献给现有的开源邮件应用程序,例如K-9 mail(几年前,它也是AOSP电子邮件应用程序的分支)或AOSP电子邮件应用程序本身(通过)。此主题可能已经过时,但我想我会分享我为后代所做的工作。我能够使用上述信息修改浏览器源代码并创建我自己的应用程序版本(可以与股票应用程序并行安装)。我所做的:

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

    最后一步进行了几次尝试,但这只是构建、安装、启动和检查LogCat的错误引用的问题。

    为了给您省去一些麻烦,我设法让它与股票电子邮件应用程序一起编译和安装,并开放了我的版本Raghav的Git repo(上面的链接)这是一个很好的起点。我还可以在AOSP中更改电子邮件应用程序源代码,但测试它需要在模拟器中运行生成的图像,或者修改股票模拟器图像以删除电子邮件应用程序。Raghav的工作允许根据标准SDK进行编译,从而使开发过程更加简单。