Android Studio 3.4
У меня есть следующая активность:
public class CartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
someCommonMethod()
}
private void someCommonMethod() {
// some code
}
}
Теперь у меня есть 2 типа сборки: debug
и release
.
В debug
добавляю метод someDebugMethod()
к активности
public class CartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
someCommonMethod()
someDebugMethod()
}
private void someCommonMethod() {
// some code
}
private void someDebugMethod() {
// some debug code
}
}
В release
Я добавляю метод someReleaseMethod()
к активности
public class CartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
someCommonMethod()
someReleaseMethod()
}
private void someCommonMethod() {
// some code
}
private void someReleaseMethod() {
// some debug code
}
}
Я читаю официальную документацию
и теперь структура проекта:
app\src\debug\java\com\myproject\CartActivity.java
app\src\release\java\com\myproject\CartActivity.java
Я удаляю CartActivity.java
из app\src\main\java
.
Итак, в результате у меня есть два файла CartActivity.java
.
Nice.
А теперь, когда я запускаю приложение в debug
типе сборки, затем запускаю CartActivity
в папке debug .
И когда я запускаю приложение в release
тип сборки, затем запускаю CartActivity
в release folder.
Nice. Работает нормально.
Но предположим, теперь мне нужно обновить общий метод someCommonMethod()
. Этот метод используется в обоих типах сборки .
В результате мне нужно обновить ДВАЖДЫ этим методом. Сначала в app\src\debug\java\com\myproject\CartActivity.java
и
затем обновите тот же метод с тем же кодом в app\src\release\java\com\myproject\CartActivity.java
Так что я думаю, что это нехорошо.
Потому что это дубликат кода. Мне нужно копировать и вставлять КАЖДЫЙ время в ДВА файла при методе обновления someCommonMethod()
.
Это действительно плохо.
Как избежать этого дубликата кода?
Идеальный подход, когда в CartActivity.java
есть только дельта .
- В
app\src\debug\java\com\myproject\CartActivity.java
есть ТОЛЬКО метод someDebugMethod()
- В
app\src\release\java\com\myproject\CartActivity.java
есть ТОЛЬКО метод someReleaseMethod()
и общие код в app\src\main\java\com\myproject\CartActivity.java
Возможно ли это?
P.S. Предположим, у меня есть 3 типа сборки.
В результате мне нужно обновить один и тот же код в трех файлах . Это действительно не хорошо.