Java 如何避免使用应用程序';源代码中的包名是什么?
我的Android应用程序源代码包括以下代码行:Java 如何避免使用应用程序';源代码中的包名是什么?,java,android,Java,Android,我的Android应用程序源代码包括以下代码行: import lfreytag.TideNowOR.R; 为了在不同的项目中使用此源代码,我希望 从导入中删除包名,因为我必须每次更改它 项目我正在使用Android Studio。在基于此源代码的其他应用程序中,包名的最后部分会有所不同,例如TideNowOR、TideNowWA、TideNowCA等 作为背景,我试图将所有特定于版本的信息作为简单的文本文件放在原始目录中。因此,我可以生成一个新版本,只需更改清单并将其转储到新的文本文件集合中
import lfreytag.TideNowOR.R;
为了在不同的项目中使用此源代码,我希望
从导入中删除包名,因为我必须每次更改它
项目我正在使用Android Studio。在基于此源代码的其他应用程序中,包名的最后部分会有所不同,例如TideNowOR、TideNowWA、TideNowCA等
作为背景,我试图将所有特定于版本的信息作为简单的文本文件放在原始目录中。因此,我可以生成一个新版本,只需更改清单并将其转储到新的文本文件集合中。谢谢。在使用java时,请记住,包是一个名称空间,它实际上允许程序员组织代码。请检查以了解它是什么以及为什么需要它 现在,是否可以不在源代码中使用该包? 可能是,但肯定不是很方便,因为您必须告诉编译器在哪里找到您需要的所有类,这意味着要设置一个非常繁重的类路径(了解类路径) 您可能会为非常简单的java应用程序执行此操作,但谁知道对于更复杂的应用程序(如android应用程序),您需要做多少工作呢
总之如果它没有损坏,不要试图修复它您可以将它打包成一个(AAR)。这将允许您在不同的程序之间共享代码和资源。首先,创建一个脚本来遍历您的文件并更改包名并不太困难。因此,如果你真的只想更改包名,我会运行一个脚本来更改包名,viola,你有一个新的应用程序 但是,我建议针对您的情况采用这种方法:
Context.getPackageName()
,但不能在导入语句中使用
另一编辑:
基本上,通过选择将文件放入“raw”目录,可以将文件绑定到包.R导入。如果您使用了assets文件夹,您可以绕过它。向Android Studio Flavors问好。 不仅可以使用一个命令创建多个生成,还可以为每个生成指定其自己的包名和文件夹结构 我想说更多关于这一点,但已经有很多人在网站上这样做了
这里有一个很好的链接:我不是100%确定你在问什么,但我认为这个问题是基于一些我想消除的误解
import lfreytag.TideNowOR.R;
正在导入对特定模块()中定义的资源的引用。这些资源包括res文件夹中的所有内容(字符串、ID、绘图、布局等)
此导入必须包括包名称,因为该名称是代码的命名空间。名称空间是所有现代编程语言的基本元素,可以避免共享同一名称的多个标识符之间的名称冲突
在不同项目中使用通用代码的方法(假设您使用Android Studio和Gradle进行构建)是:
defaultConfig {
applicationId "lfreytag.TideNowOR"
}
productFlavors {
wa {
applicationId "lfreytag.TideNowWA"
}
ca {
applicationId 'lfreytag.TideNowCA'
}
// .. more flavors
}
要为不同的口味使用不同的应用程序名称,请执行以下操作:
defaultConfig {
manifestPlaceholders = [appName: "Tide Now Oregon"]
}
wa {
manifestPlaceholders = [appName: "Tide Now Washington"]
}
在生成文件和清单的以下文件中:
<application
android:name="MyApp"
android:label="${appName}"
长话短说,不要担心更改Java包名称。事实上,我会从中删除任何特定的标识符,以便它是通用的,比如com.lfreytag.tidenow
当新的Gradle建立时
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.lfreytag.tidenow"
minSdkVersion 7
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
productFlavors {
wa {
applicationId "com.lfreytag.tidenow.wa"
}
or {
applicationId "com.lfreytag.tidenow.or"
}
ca {
applicationId "com.lfreytag.tidenow.ca"
}
... etc ...
}
buildTypes {
...
}
}
dependencies {
...
}