const
(только для C ++) Для людей, прибывающих с C, может показаться неожиданным, что в C ++ глобальные переменные const
имеют внутренние (или статические) связь. В C это не так, поскольку все глобальные переменные неявно extern
(т.е. когда отсутствует ключевое слово static
).
Пример:
// file1.cpp
const int test = 5; // in C++ same as "static const int test = 5"
int test2 = 5;
// file2.cpp
extern const int test;
extern int test2;
void foo()
{
int x = test; // linker error in C++ , no error in C
int y = test2; // no problem
}
correct would использовать файл заголовка и включить его в file2.cpp и file1.cpp
extern const int test;
extern int test2;
. В качестве альтернативы можно было бы объявить переменную const
в файле file1.cpp с явным extern
Proguard - это инструмент, который поможет вам обфузировать ваш код. Это входит в состав ваших инструментов для Android, и вам просто нужно его активировать. Эта ссылка и этого помогут в дальнейшем.
Конфигурация по умолчанию Proguard (в proguard.cfg) будет достаточной, чтобы достаточно запутать ваш код. Однако вы можете настроить свою конфигурацию proguard, когда у вас есть методы / классы, которые динамически доступны.
Это можно сделать, добавив
-keep public class <MyPackage.MyClass>
к вашему proguard.cfg.
Вы не можете предотвратить декомпиляцию android apk, вы можете просто увеличить сложность декомпиляции, proguard - лучший вариант.
DexGuard обеспечивает еще лучшую защиту, чем ProGuard, но НЕ БЕСПЛАТНО: https://www.saikoa.com/dexguard
DexGuard может даже обфускать строковые константы.