برای این کار هم همون گریدل خوب هست !
buildTypes {
def serverUrl = '"' + (System.getenv("SERVER_URL")?: "http://default.fallback.url.com")+'"'
debug{
buildConfigField "String", "SERVER_URL", serverUrl
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", "SERVER_URL", serverUrl
}
}
خوب در این حالت بازهم این property ها در یک فایل به نام buildConfig.java ذخیره میشه که بازهم به راحتی قابل دی کامپایل هستش همونطور که در بالا هم عرض کردم شاید خود فایل build.gradle پروژه دی کامپایل نشه ولی پراپرتی های استفاده شده قابل دسترس هستند.
پس این روش هم خیلی قابل اعتماد نیست.
یکی از روشهای مقابله با هک برنامه ها استفاده از لایبررهای استاتیک مثل DLL در ویندوز SO در اندروید هست. پس می توان دیتا های حساس را در لایبرری ذخیره و استفاده کرد البته به غیر از URL ها که ذخیره اونها در لایبرری مفید فایده نخواهد بود.
بستگی به حساسیت برنامه شما داره !
به هرحال...
1- برنامه های اندروید فوق العاده شکننده هستند و به راحتی قابل کامپایل (اصولا تمامی زبان هایی که به یک زبان میانی تفسیر می شوند به راحتی قابل کامپایل هستند این نقطه ضعف را در سی شارپ هم وجود داره ).
2- برای امن کردن برنامه ها باید از تکنیک هایی که در برنامه نویسی اندروید هست استفاده کرد مثل JNI - در هم سازی سورس کد - استفاده از پکیچ های متفاوت در سورس - استفاده از تکنیکهای SOLID برای سخت تر شدن پروسه مهندسی معکوس.
3- استفاده از زبانهای چند رگه برای ساخت برنامه های اندرویدی مثل Qt-Qml , ReactJS که خوب استفاده از این برنامه ها هم چالش های خودش را داره.
4- استفاده از ابزارهای سایت هایی که برای همین منظور خدمات میدن.
به نظر من در این برهه کمتر کسی هست که دنبال سورس کد برنامه خاصی باشه وقتی یک سایتی مثل StackOverFlow هست شاید دنبال اطلاعات باشند که اونهم راه های زیادی برای مقابله وجود داره.