修改构建风格的包名(不仅限于应用程序ID)

7
在同一代码库上构建多个白标应用时,可以使用Android Studio的构建风格机制。我可以在build.gradle文件中轻松设置一个新的applicationId
android {
    productFlavors {
        original {
            applicationId "com.original.myapp"
        }
        whitelable {
            applicationId "com.whitelable.myapp"
        }
    }
}

一切都很好,但是白标应用的包名仍然是com.original.myapp,主活动的组件名称为com.whitelable.myapp/com.original.myapp.MainActivity。每个人都可以看到白标应用是基于原始应用构建的。

是否有一种方法可以替换生成口味的包名,以便在风味应用的组件名称中至少不出现原始包名?


这可能会对您有所帮助:https://dev59.com/FGEi5IYBdhLWcg3wndZw - KuLdip PaTel
那里接受的答案仅建议使用${applicationId}而不是${packageName},这显然对我的目的不够。 - Alexey Ozerov
我也需要帮助! - abotrix
1个回答

0
这个问题很久以前就被问过了,但我想回答一下给那些新来的人参考。 首先,你需要使用Flavors创建两个版本。 然后,如果你正在使用它,你需要在google-service.json文件的"client": []部分中为刚刚创建的版本创建数据。(你也可以为它们各自的包文件夹创建单独的google-service.json文件。) 接着,在清单文件中用${packageName}代替显式地输入你的包路径。 我通过遵循这种方式成功地创建了两个完全不同的包名。

Flavors;

flavorDimensions "default"
productFlavors{
    product1{
        applicationId "com.product.package"
    }

    product2{
        applicationId "com.white.label"
    }
}

google-service.json; 我无法分享google-service.json文件,但您将通过Firebase获得的google-service.json文件中“client”下的数据应复制并添加到您项目中google-service.json文件下的第二个“client”数据。示例;

"client": [
{
  "client_info": { //Old App Info
    data...
  },
  ...
},
{
  "client_info": {
    //New App Info
    data...
  },
  ...
}
]

清单;

com.project.package.fileprovider

请使用这个。
${packageName}.fileprovider

请在您的回答中包含示例google-service.json和Manifest文件的相关部分。 - Alexey Ozerov
我更新了我的回答。希望能对你有所帮助。@AlexeyOzerov - Devrim Catak

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