অ্যান্ড্রয়েড স্টুডিওতে প্রোগার্ড কীভাবে ব্যবহার করবেন?


99

এটি অ্যান্ড্রয়েড স্টুডিওতে আমার প্রথম প্রকল্প, এবং আমার অ্যাপ্লিকেশনগুলির কোড অবরুদ্ধ নয়। আমি বিল্ড.gradle ফাইলটিতে এই কনফিগারেশনটি ব্যবহার করছি: এখানে চিত্র বর্ণনা লিখুন

আমি রান> প্রগার্ডটি চেক করে বিল্ড> জেনারেট সাইনড এপিএক ... ব্যবহার করছি। এবং, যখন আমি Apk_OneClick.v4.2 ব্যবহার করে পরীক্ষা করেছি, আমার কোডটি পড়তে সম্পূর্ণ সহজ:

এখানে চিত্র বর্ণনা লিখুন

আমাকে সাহায্য করুন. :(


ওফসকেট কোডের জন্য পাঠ্য ফাইলে সংজ্ঞায়িত আপনার অগ্রবর্তী নিয়মগুলি দেখান।
পাইস 13

অ্যাপটি অবরুদ্ধ কিনা তা কীভাবে পরীক্ষা করবেন?
ভিভিবি

বিপরীতমুখী এপিএল-ফাইলটি বিভক্ত করে @ ভিভিবি আমার ধারণা: ডি
হটহিড

উত্তর:


71

আপনি সম্ভবত স্বাক্ষর উইজার্ডের মাধ্যমে APK এর রিলিজ বিল্ডটিতে সাইন ইন করছেন না। আপনি কমান্ডটি দিয়ে কমান্ড লাইন থেকে মুক্তির APK বানাতে পারেন:

./gradlew assembleRelease

বা আপনি বিল্ড ভেরিয়েন্টস ভিউ থেকে রিলিজ বৈকল্পিকটি চয়ন করতে পারেন এবং এটি জিইউআই থেকে বিল্ড করতে পারেন:

আইডিই প্রধান উইন্ডোতে ভেরিয়েন্টগুলি দেখায়


দুর্দান্ত! আমি ডিবাগটি রানপ্রোগার্ডকে সত্যে পরিবর্তন করে পরীক্ষা করেছি এবং পুরোপুরি কাজ করে works এখন আমি আপনার উত্তর পড়েছি, এবং কাজ করে !!!! মহান মানুষ! ধন্যবাদ.
ফিলিপ পার্জে জাভিয়ার

ওফস, আমি আমার কমান্ড-লাইনের নির্দেশাবলীতে দুর্ঘটনাক্রমে "এসেম্বলডেলব্যাগ" রাখি আমি আমার উত্তর স্থির করলাম।
স্কট বার্তা

কমান্ড লাইনের মাধ্যমে রপ্তানি হওয়া .apk ফাইলের পথটি কী?
শাজিল আফজাল

50

অগ্রগতি বাস্তবায়নের জন্য আপনি আপনার বিল্ড.gradle ফাইলটি কনফিগার করতে পারেন। এটি মডিউল স্তর বা প্রকল্প পর্যায়ে হতে পারে।

 buildTypes {

    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

    }

}

প্রদর্শিত কনফিগারেশনটি ডিবাগ স্তরের জন্য তবে আপনি নিজের বিল্ড ফ্লেভারগুলি বিল্টটাইপগুলির অভ্যন্তরে দেখানো মতো লিখতে পারেন:

    myproductionbuild{
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }

আপনার ডিবাগ করা ভাল minifyEnabled false এবং প্রোডাকশন বিল্ড এবং অন্যান্য বিল্ডস হিসাবে minifyEnabled true

আপনার মডিউল বা প্রজেক্ট ফোল্ডারের মতো মূলটিতে আপনার প্রগর্ড-বিধিগুলি .txt ফাইলটি অনুলিপি করুন

$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt

আপনি নিজের ফাইলটির নাম নিজের ইচ্ছামত পরিবর্তন করতে পারেন। কনফিগারেশনের পরে বিল্টটাইপ অনুযায়ী আপনার বিল্ড তৈরি করতে তিনটি বিকল্পের মধ্যে একটি ব্যবহার করুন

  1. ডান প্যানেলে গ্রেড টাস্ক এ যান এবং অনুসন্ধান করুন assembleRelease/assemble(#your_defined_buildtype) অধীনে

  2. বাম প্যানেলে বিল্ডেন্ট ভেরিয়েন্টে যান এবং ড্রপ ডাউন থেকে বিল্ডটি নির্বাচন করুন

  3. ফাইল এক্সপ্লোরারে প্রোজেক্ট রুট ডিরেক্টরিতে যান এবং সিএমডি / টার্মিনাল খুলুন এবং রান করুন

লিনাক্স ./gradlew assembleRelease or assemble(#your_defined_buildtype)

উইন্ডোজ gradlew assembleRelease or assemble(#your_defined_buildtype)

আপনি আপনার মডিউল / বিল্ড ডিরেক্টরিতে apk পেতে পারেন।

কনফিগারেশন এবং অগ্রবর্তী ফাইল অবস্থান সম্পর্কিত আরও লিঙ্কটিতে উপলব্ধ

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC- চালনা- প্রোগ্রু গার্ড


আমি যেখানে আমার প্রোডাকশন বিল্ডটি ব্যবহার করতে বলতে পারি?
ফিলিপ পার্জে জাভিয়ার

হ্যাঁ, আপনি ঠিক বলেছেন :) আপনি বাম পাশের প্যানেলে বিল্ড ভেরিয়েন্ট ট্যাবে একই দেখতে পাবেন।
পাইস 13


আপনি কি প্রগুয়ার্ড-রুল কনফিগারেশনটি লিখেছেন? অনুগ্রহ করে এখানে কিছু উদাহরণ দেখুন proguard.sourceforge.net/index.html#manual/exferences.html
pyus13

গ্রেডল ডিএসএল পদ্ধতিতে রানপ্রোগার্ড () পাওয়া যায়নি।
স্লিপনট

41

এনবি .: এখন পরিবর্তে

runProguard false

আপনি ব্যবহার করতে হবে

minifyEnabled false

5
অনুমান করুন এটি সত্য হওয়া উচিত
anna_manzhula

1

আপনার 'প্রগুয়ার্ড-রুলস.টেক্সট' ফাইলটির নাম পরিবর্তন করে 'প্রগুয়ার্ড-অ্যান্ড্রয়েড.txt' করে দেওয়ার চেষ্টা করুন এবং আপনার গ্রেড ফাইলটিতে 'প্রগুয়ার্ড-বিধি। getDefaultProguardFile(...)কল একটি ভিন্ন ডিফল্ট proguard ফাইল, এক Google দ্বারা সরবরাহিত এবং আপনার প্রকল্পের নেই রেফারেন্স। সুতরাং এটিও সরান, যাতে গ্রেড ফাইলটি এখানে পড়ে:

buildTypes {
    release {
        runProguard true
        proguardFile 'proguard-android.txt'
    }
}

আমার জন্য কাজ করবেন না। আমি আমার কাস্টম প্রগুয়ার্ড-android.txt একই ডিরেক্টরিতে প্রগুয়ার্ড-বিধিগুলি দ্বারা পাঠিয়েছি তবে আমার কোডে কিছুই পরিবর্তন হয়নি।
ফিলিপ পার্জে জাভিয়ার

0

এখানে অন্যান্য উত্তরগুলি অগ্রগতি ব্যবহারের ক্ষেত্রে দুর্দান্ত রেফারেন্স। যাইহোক, আমি যে বিষয়টি নিয়ে আলোচনা করেছিলাম তা দেখেনি যে এটি আমার মাইন্ড বেন্ড ছিল। আপনি একটি স্বাক্ষরিত রিলিজ .apk জেনারেট করার পরে এটি /releaseআপনার অ্যাপ্লিকেশনটির ফোল্ডারে রেখে দেওয়া হয়েছে তবে আমার অ্যাপ্লিকেশনটিতে এমন একটি APK রয়েছে যা /releaseফোল্ডারে ছিল না । অতএব, আমি কেন আমার অগ্রগতির পরিবর্তনগুলির কোনও প্রভাব ফেলছে না তা ভেবে ভুল এপিকে বিকলিত করতে ঘন্টা ব্যয় করেছি। আশা করি এটি কাউকে সাহায্য করবে!


0

এখানে অ্যানড্রয়েড সুতদিওতে প্রগার্ড- rules.pro ফাইল যুক্ত করতে আপনার বেশিরভাগ প্রচলিত প্রগার্ড নিয়ম রয়েছে।

মাখন ছুরি

 -keep class butterknife.** { *; }
 -dontwarn butterknife.internal.**
 -keep class **$$ViewBinder { *; }
 -keepclasseswithmembernames class * {
        @butterknife.* <fields>;
  }
 -keepclasseswithmembernames class * {
        @butterknife.* <methods>;
  }

Retrofit

 -dontwarn retrofit.**
 -keep class retrofit.** { *; }
 -keepattributes Signature
 -keepattributes Exceptions

OkHttp3

 -keepattributes Signature
 -keepattributes *Annotation*
 -keep class okhttp3.** { *; }
 -keep interface okhttp3.** { *; }
 -dontwarn okhttp3.** 
 -keep class sun.misc.Unsafe { *; }
 -dontwarn java.nio.file.*
 -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 

গসন

 -keep class sun.misc.Unsafe { *; }
 -keep class com.google.gson.stream.** { *; }

কোড অবলম্বন

-keepclassmembers class com.yourname.models** { <fields>; }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.