繁体   English   中英

如何更改应用程序ID但保留相同的资源ID?

[英]How to change app-id but keep the same resource-id?

在Android项目中,资源ID由应用程序ID完全标识。 例如,如果我的appid为com.mycompany.myapp,则资源ID为com.mycompany.myapp.R.blah。

就我而言,我需要创建该应用程序的两个版本-Beta版和发行版。 两种版本都可以安装在同一设备上。 仅当appid不同时,才会发生这种情况。 我的策略是,在每晚构建期间,我将以编程方式修改清单文件,并将appid更改为com.mycompany.myappbeta。 但是,如果执行此操作,则需要触摸许多使用资源ID的源文件。

我想知道清单文件中是否有一些标记,我可以在其中明确说明资源ID如何限定? 问候。

编辑

事实证明,应用程序ID和程序包ID确实是两个不同的概念。 我想更改app-id,但不更改package-id。 但是,看来这在Eclipse下是不可能的。 正如其他帖子所指出的那样,Gradle构建可以处理更改应用程序ID的同时保留包ID的问题。 我现在要移到Android Studio。

资源ID由应用程序ID完全标识

从技术上讲,它们是通过根清单中package属性中的包名称来标识的。

我的策略是,在每晚构建期间,我将以编程方式修改清单文件,并将appid更改为com.mycompany.myappbeta。 但是,如果执行此操作,则需要触摸许多使用资源ID的源文件。

这就是为什么您的每晚构建应使用Gradle和Android的Gradle插件。 然后,您跳过所有描述的内容,而是使用构建类型。 预先定义了两种构建类型( debugrelease ),如果您想发明另一种构建类型(例如beta ),则可以。 然后,在build.gradle文件中的构建类型配置中,使用applicationIdSuffix为非release构建提供不同的后缀。 为了唯一安装的目的,它将被添加到应用程序ID中,但是您的软件包名称不会受到影响,因此您的资源也不会受到影响。

例如:

android {
    compileSdkVersion 19
    buildToolsVersion "21.1.2"

    defaultConfig {
        versionCode 2
        versionName "1.1"
        minSdkVersion 14
        targetSdkVersion 18
    }

    signingConfigs {
        release {
            storeFile file('HelloConfig.keystore')
            keyAlias 'HelloConfig'
            storePassword 'laser.yams.heady.testy'
            keyPassword 'fw.stabs.steady.wool'
        }
    }

    buildTypes {
        debug {
          applicationIdSuffix ".d"
        }

        release {
          signingConfig signingConfigs.release
        }

        beta.initWith(buildTypes.release)

        beta {
            applicationIdSuffix ".beta"
            debuggable true
        }
    }
}

我在这:

  • debug构建类型一个应用程序ID后缀.d

  • 从应用程序ID后缀的角度出发,保留release版本的类型

  • 创建一个新的beta构建类型(从release构建类型中克隆),在其中给我一个.beta应用程序ID后缀并将其标记为可调试

但是,如果执行此操作,则需要触摸许多使用资源ID的源文件。

不,你不会的。 您只需要更改清单文件中的包ID,确保清单文件中列出的所有服务和活动都使用完整的类路径,即:

android:name="com.mycompany.myapp.MainActivity"

不只是简写:

android:name=".MainActivity"

因为当包ID与您的代码包不匹配时,这会使您的应用无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM