这通常是如何构建用于声明包和导入的Android代码:
package com.company.myApp
import com.company.myApp.SomeClass
import com.company.myApp.somePackage.SomeOtherClass
有没有办法使用Android Studio / Java /传递“编译时”变量或编译指示来有效地将“com.company.myApp”字符串传递给源代码?类似的东西:
package BASE_PACKAGE_NAME
import BASE_PACKAGE_NAME.SomeClass
import BASE_PACKAGE_NAME.somePackage.SomeOtherClass
答案 0 :(得分:2)
我个人不知道任何能为你做这件事的事 但正如我在http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
中读到的那样您构建的.apk的清单中使用的最终包,并且是 您的应用在您的设备和Google Play中所知的套餐 store,是"应用程序ID"。
源代码中用于引用R类的包, 并继续解决任何相关活动/服务注册 被称为"包"。
您可以在gradle文件中指定应用程序ID,如下所示:
应用程序/的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "19.1"
defaultConfig {
applicationId "com.example.my.app"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
关键部分来了:当你完成上述任务时,两者 包是独立的。你可以完全自由地重构你的 代码 - 更改用于您的活动的内部包 服务,更新您的Manifest包,并重构您的导入 声明。这与你的最终身份无关 应用程序,现在总是将成为applicationId 在Gradle文件中指定。
您可以为应用程序和构建类型改变应用程序的applicationId 使用以下Gradle DSL方法:
应用程序/的build.gradle:
productFlavors {
pro {
applicationId = "com.example.my.pkg.pro"
}
free {
applicationId = "com.example.my.pkg.free"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
....