在Android Studio中使用大写的包名称制作APK [英] Make apk with Capitalized package name in android studio

查看:261
本文介绍了在Android Studio中使用大写的包名称制作APK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在开始之前,我先解释一下这些假设:

Before we start let me explain the assumptions:

  1. 我知道使用大写的软件包名称是不好的约定.在我的情况下,我们正在处理第3方发布的带有大写包名的android应用程序,不幸的是该应用程序有数百万下载,因此无法重新发布.

  1. I realize it is bad convention to have capitalized package names. In my situation, we are dealing with an 3rd party published android app with capitalized package name, unfortunately app has millions download so republishing is not an option.

我已经进行了广泛的研究,无法找到解决方案,最接近的SO问题是.

I have done extensive research and cannot find solution, the closest SO questions are this and this and this.

问题:

App最初是使用eclipse开发的,可以创建带有大写包名的签名应用.应用必须立即移至AS,AS拒绝使用大写的软件包名称生成签名的apk.看到以下错误:

App was originally developed with eclipse, which can create signed app that has capitalized package name. App must be moved to AS now, which refuses to generate signed apk with capitalized package name. See error below:

以下是我的清单文件的相关部分:

Here are relevant parts of my manifest file:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="TESTING.CAPITALIZED"

...

<meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

<activity
        android:name="TESTING.CAPITALIZED.Activity_xxx"
...

请注意,我已尝试将清单活动标记的命名约定更改为:(但相同的错误)

Please note I have tried changing manifest activity tagged naming convention to: (but same error)

<activity
        android:name=".Activity_xxx"
...

问题:

我们需要Android Studio中的方法/技巧才能克服这一问题.我不在乎如何或是否涉及魔术(例如编辑dll),需要在AS中生成签名的apk.

We need a method/hack in Android Studio to get past this. I don't care how or if it involves magic such as editing dlls, need generate signed apk in AS.

其他发现:在Android Studio中,只要包中的第一个字母是小写字母,我们就可以编译并生成apk.例如,在我的示例中,如果将项目重构为zTESTING.CAPITALIZED,则可以成功生成apk.但这不能解决我的问题,因为我客户的包裹名称全为大写.

Additional Findings: It appears that in Android Studio, as long as the 1st letter in the package is lower case, we can compile and generate apk. For example, in my example if I refactor my project to zTESTING.CAPITALIZED, I can successfully generate apk. However this doesn't fix my problem because my client's package name is all caps.

推荐答案

我找到了INSTALL_PARSE_FAILED_MANIFEST_MALFORMED的解决方案 eclipse和android studio项目之间的区别仅在AndroidManifest.xml中

I found solution for INSTALL_PARSE_FAILED_MANIFEST_MALFORMED The difference between the eclipse and android studio project just in AndroidManifest.xml

在Eclipse的活动路径中:

in Eclipse path to activity:

<activity android:name="WinActivity">

在Android Studio中:

in Android Studio :

<activity android:name="Com.my.package.WinActivity">

AS中的大写字母问题仅出现在AndroidManifest中所有Activity的路径中;由于Android Studio始终合并清单文件,并填充所有Activity的完整路径;因此,

And problem with capital letter in AS only in path to all Activityes in AndroidManifest; Because Android Studio always merge manifest file, and fill full path to all Activityes;

如果从AS获取编译的apk,请将其打开apktools,更改AndroidManifest.xml(将路径更改为<activity android:name="WinActivity">),然后使用apktools返回apk.一切都会起作用.

If you get compiled apk from AS, open it it apktools, change AndroidManifest.xml (change path to <activity android:name="WinActivity">) and make apk with apktools back. All will work.

解决此问题的第二种方法: 将所有Java文件移动到另一个带有小写字母的程序包中.例如some.new.package. 带大写字母的包裹将为空. 在AndroidManifest.xml中-您需要设置所有Activityes的完整路径.

Second way to fix this problem: Move all java files into another package with lowercase letter. for example some.new.package. Package with capital letter will stay empty. In AndroidManifest.xml - you need to set full path to all Activityes.

<activity android:name="some.new.package.WinActivity">`

打包成清单,你要老了;

Package in manifest you stay old;

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="Com.my.package"

在build.gradle中,您将旧软件包保留为:

and in build.gradle you stay old package to:

applicationId "Com.my.package"

如果您在类中看到R类并出错.只需在需要时在所有类中导入Com.my.package.R.

If you see and error with R class in your classes. Just import Com.my.package.R in all class when need it.

这篇关于在Android Studio中使用大写的包名称制作APK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆