Android Studio:更改包名后无法安装App

时间:2016-05-19 09:01:38

标签: android

我有一个旧项目。我想重用新项目的源代码。 我创建了具有新包名称(公司名称)的新项目,然后将源代码从旧项目复制到新项目。

一切都运作良好。 问题是: 如果在设备上安装了旧应用,那么我无法在该设备上安装新应用。 如果我删除他的旧应用程序(旧项目),我可以正常安装新应用程序(新项目)。

我是通过Android Studio调试安装的。

如果遇到此案,请提供帮助。 非常感谢你。

5 个答案:

答案 0 :(得分:2)

听起来你的build.gradle(app)中的applicationId还没有被更改。我会检查defaultConfig,看看它是否与旧项目相同并更改它:

defaultConfig {
    applicationId "com.xxx.xxx"
    minSdkVersion 15
    targetSdkVersion 22
}

答案 1 :(得分:0)

最后找到了解决方法:

清单文件中有旧的或其他程序包名称

检查<provider>中的<uses-permission><permission>AndroidManifest.xml标签

<provider    
    android:authorities="com.your.package.fileProvider"
    android:name="android.support.v4.content.FileProvider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

<permission
    android:name="com.example.google.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.example.google.permission.MAPS_RECEIVE" />

答案 2 :(得分:0)

为了创建一个新的应用程序。我复制了旧应用程序,并更改了应用程序ID(无需更改程序包名称和用法)。但是我遇到了同样的问题(如果安装了旧应用程序,则无法在设备上安装新应用程序。如果我卸载了旧的应用程序,则可以运行)。 要在移动设备上保持安装旧应用程序的同时安装新应用程序的解决方案是更改清单文件中提供程序下的权限

是这样的:

        <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.oldappname.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/fileprovider" />
    </provider>

我将权限中的 oldappname 更改为 newappname

        <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.newappname.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/fileprovider" />
    </provider>

希望对别人有帮助!

答案 3 :(得分:0)

对于那些对以上答案不满意的人,请尝试此。这对我有用。

确保已正确完成所有必要的“查找并替换”旧程序包名称至新程序包名称后,尝试从“文件”菜单尝试Android SDK IDE中的“无效缓存并重新启动”选项。一旦您的IDE恢复运行,一切都会很好。

答案 4 :(得分:0)

手动“将项目与 Gradle 文件同步”对我有用。

就我而言,应用程序 id 不是在 build.gradle 文件中配置的,而是在 kotlin 文件中配置的。更改 kotlin 文件中的应用程序 ID 和其他内容不会在 Android Studio 中触发 gradle 同步提示。重新创建“运行配置”或“清理/重建”或“重新启动 Android Studio”都不起作用。我也在项目目录中搜索了旧的包名,没有找到,这让我想起了gradle。 gradle同步后,错误解决。