通常是这样构建Android代码来声明包和导入的:
package com.company.myApp
import com.company.myApp.SomeClass
import com.company.myApp.somePackage.SomeOtherClass
是否有任何方法使用Android Studio/Java/任何传递"编译时"变量或pragma来有效地传递"com.company.myApp"字符串到源代码?比如:
package BASE_PACKAGE_NAME
import BASE_PACKAGE_NAME.SomeClass
import BASE_PACKAGE_NAME.somePackage.SomeOtherClass
我个人不知道有什么适合你的但是当我读到http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
在构建的.apk清单中使用的最后一个包,并且是你的应用程序在你的设备和Google Play上的名称Store,为"应用程序id"。
源代码中用来引用R类的包,并继续解析任何相关的活动/服务注册被称为"包"
你可以在gradle文件中指定应用id,如下所示:
app/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包以及重构导入语句。这将与您的最终id无关application,它现在总是applicationId
你可以改变你的应用程序的applicationId的风格和构建类型使用Gradle DSL方法:
app/build.gradle:
productFlavors {
pro {
applicationId = "com.example.my.pkg.pro"
}
free {
applicationId = "com.example.my.pkg.free"
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
....