包名变量可以被传递到Android源代码中吗?



通常是这样构建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"
    }
}
....

最新更新