使用Eclipse(在Android上开发)我想创建第二个项目,它与第一个项目相同,但有些类是不同的。
确切地说,我正在创建一个Android应用程序,我想提供免费版和高级版。实际上,项目的代码是相同的,但改变了一些类。
问题是我不想支持两个项目。如果我修改了一个类,那么我必须在另一个项目上修改相同的更改。这是非常多余的。
此外,该项目被推送到远程GIT存储库。
最后一点,Andriod App使用他的root包进行识别,例如:com.example.myapp
所以,我需要两个不同的根包(所以我需要创建新的文件夹),例如com.example.myappfree和com.example.myapppremium
哪个是在Eclipse中创建两个java项目共享包和类的最佳解决方案,但更改了两个类?
答案 0 :(得分:2)
创建一个公共代码项目,并从另外两个项目中引用该项目。
答案 1 :(得分:1)
这应该不是那么简单,但您可能希望利用Eclipse利用Android项目的库功能:
http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject
答案 2 :(得分:1)
将您希望在其他andorid项目中引用的项目作为库项目。你可以参考android项目中的库项目
使您的项目成为图书馆项目。 Rigth点击项目。 转到属性 选择android。选择是库。单击“应用”并单击“确定”
她是链接中的一个例子,我发布了如何在Android项目中引用actionbarsherlock whcih是一个库项目的快照。
import .R cannot be resolved when I import actionbarsherlock
指向开发者网站的链接
http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject
答案 3 :(得分:1)
您可以使用图书馆计划来执行此操作。基本上,您将获取主项目,该项目将获取所有代码并将其转换为库。创建两个新项目,即免费和付费版本。
Read here如何设置图书馆项目。
您必须确保免费和付费项目具有不同的软件包名称,并且在您的库项目中,您阅读软件包名称并验证您是运行免费还是付费版本。
Here你可以看到我发表的一个实际例子。整个来源在图书馆项目上,其他人只使用不同的资源。
查看PackageSelector class。它显示了如何检测正在运行的版本,然后相应地更改应用程序很简单。
public class PackageSelector extends Application {
public int getVersion() {
if (getPackageName().toLowerCase().contains("pro"))
return LanguagePickActivity.FULL;
else if (getPackageName().toLowerCase().contains("macedonian"))
return LanguagePickActivity.MACEDONIAN;
else if (getPackageName().toLowerCase().contains("german"))
return LanguagePickActivity.GERMAN;
else // if (getPackageName().toLowerCase().contains("spanish"))
return LanguagePickActivity.SPANISH;
}
}
关于您的活动:
public void getVersion() {
Country = ((PackageSelector)getApplication()).getVersion();
}
如果您有与单个版本相关的内容:
if (Country == LanguagePickActivity.FULL ) {
//Do something only the paid version has
finish();
}
else {
//Do something on the free version
finish();
}