কনসোল থেকে একটি Android অ্যাপ বন্ধ করা হচ্ছে Stop


205

কনসোল থেকে কোনও Android অ্যাপ বন্ধ করা কি সম্ভব? কিছুটা এইরকম:

adb stop com.my.app.package

এটি আমাদের পরীক্ষার প্রক্রিয়াটিকে এত বেশি গতি দিত। ম্যানুয়াল পরীক্ষার কেসগুলি একটি পরিষ্কার অবস্থায় শুরু হচ্ছে তা নিশ্চিত করার জন্য এখনই আমরা প্রতিবার অ্যাপটি আনইনস্টল / ইনস্টল করি।

উত্তর:


146

সম্পাদনা করুন: আমি এই পোস্টটি লেখার অনেক পরে এবং এটি উত্তর হিসাবে স্বীকৃত হওয়ার পরে, am force-stopআদেশটি অ্যান্ড্রয়েড দল দ্বারা প্রয়োগ করা হয়েছিল , যেমন এই উত্তরে উল্লিখিত হয়েছে ।

বিকল্পভাবে: যেহেতু আপনি প্রতিটি পরীক্ষার জন্য "ক্লিন স্লেট" চাওয়ার কথা উল্লেখ করেছেন কেবল অ্যাপটি থামিয়ে দেওয়ার পরিবর্তে, আপনি ব্যবহার করতে পারবেন adb shell pm clear com.my.app.packageযা অ্যাপ্লিকেশন প্রক্রিয়াটি বন্ধ করে দেবে এবং সেই অ্যাপ্লিকেশনটির জন্য সঞ্চিত সমস্ত ডেটা সাফ করবে ।


আপনি যদি লিনাক্সে থাকেন:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill

এটি কেবলমাত্র ডিভাইস / ইমুলেটরগুলির জন্য কাজ করবে যেখানে শেল চালানোর সাথে সাথে আপনার তত্ক্ষণাত রুট হবে। এটি সম্ভবত suআগে কল করার জন্য সামান্য পরিশ্রুত করা যেতে পারে ।

অন্যথায়, আপনি এটি করতে পারেন (ম্যানুয়ালি, বা আমি স্ক্রিপ্টযুক্ত মনে করি):
pc $ adb -d shell
android $ su
android # ps
android # kill <process id from ps output>


6
এটি কাজ করতে পারা যায় নি (হত্যা এবং সুন উভয়ের জন্য অনুমতি অস্বীকার করা হয়েছিল), তবে আমাকে দেখানোর জন্য +1 অ্যাডাবির সাথে ভাবনার চেয়ে আমি আরও অনেক কিছু করতে পারি।
এইচপিক

9
আহ, মনে হচ্ছে আপনার কাছে কোনও রুটযুক্ত ডিভাইস নেই। এটি অবশ্যই কমপক্ষে এমুলেটরটিতে কাজ করে! :)
ক্রিস্টোফার ওড়

1
পার্টিশনটি রিড-রাইটিং এবং অ্যাডাবিকে রুট হিসাবে চালাতে হবে: অ্যাডাব রিমউন্ট; অ্যাডবি রুট # এটি কেবল একটি বোকা অনুমানের চিন্তা
রোরিস্ট

569

অ্যাপটি বন্ধ করার পরিষ্কার উপায় হ'ল:

adb shell am force-stop com.my.app.package

এইভাবে আপনাকে প্রক্রিয়া আইডিটি বের করতে হবে না।


28
এটি এই সমস্যার জন্য গ্রহণযোগ্য উত্তর হওয়া উচিত। প্রশ্নটিতে কোনও মূলযুক্ত ডিভাইস অন্তর্ভুক্ত নয়।
দিমিত্রিস

10
@ ডিমিট্রিস force-stopকমান্ডের অস্তিত্বের আগে আমি আমার উত্তর উপরে লিখেছিলাম । আমি আমার উত্তর আপডেট করেছি এটির প্রতি নির্দেশ করতে।
ক্রিস্টোফার অর

2
এছাড়াও আমি পরীক্ষাগুলি চালানোর জন্য "ক্লিন স্লেট" সরবরাহের একটি ভাল উপায়ে আমার উত্তর আপডেট করেছি।
ক্রিস্টোফার অর

গুরুত্বপূর্ণ পয়েন্ট যে এই আপনার BroadcastReceiver কাজ করবে না (পরবর্তী অ্যাপ্লিকেশন খোলা পর্যন্ত) পর commonsware.com/blog/2011/07/13/...
CAMOBAP

পরীক্ষিত Android 9.0 API Level 28, অ্যাপটি অ্যাপ্লিকেশন সম্পর্কিত পাওয়া সত্ত্বেও সাম্প্রতিক অ্যাপগুলিতে এখনও প্রদর্শিত হবে PID। আপনি কীভাবে পুরোপুরি অ্যাপ্লিকেশন থেকে এমনকি সম্পূর্ণরূপে অ্যাপটি বন্ধ করবেন তা জানেন ?
তালহা 06

32

প্রথমে অ্যাপটিকে পটভূমিতে রাখুন (ডিভাইসের হোম বোতাম টিপুন)

তারপরে .... টার্মিনালে ....

adb shell am kill com.your.package

11
উল্লেখ্য আমি বিশ্বাস করি না এই API গুলি মাত্রা আর কাজ করে> 22.
dell116

এটি আমার নেক্সাস 5 এ মার্শমেলো
urSus

এইটা কাজ করে. আপনি প্রথমে অ্যাপটিকে ব্যাকগ্রাউন্ডে রেখেছেন তা নিশ্চিত করুন।
ফিলি দ্য থ্রিলি

17

আপনি ডিভাইস কনসোল থেকে নিম্নলিখিতটি ব্যবহার করতে পারেন: pm disable com.my.app.packageএটি এটি হত্যা করবে। তারপরে ব্যবহার করুন pm enable com.my.app.packageযাতে আপনি এটি আবার চালু করতে পারেন।


1
মূলবিহীন ফোনে এটি কিছুই করতে পারে বলে মনে হচ্ছে।
রবার্ট মুয়েল

আমি এটি একটি মূলবিহীন ফোনে পরীক্ষা করেছি। প্রথমে কিছু অনুমতি অস্বীকৃত বার্তা রয়েছে এবং তারপরে এটি আমার ডালভিকভিএম অ্যাপ্লিকেশন / পরিষেবাটিকে হত্যা করেছে। শুধু এক সেকেন্ড দিন।
লাইক ইউ

1
মূলযুক্ত ডিভাইসে এটি কাজ করে এবং এতে অ্যাপ / পরিষেবাটি নিচে রাখতে সক্ষম হওয়ার অতিরিক্ত সুবিধা রয়েছে। এটি পরীক্ষার উদ্দেশ্যে পছন্দসই হতে পারে।
মিকি

2
দ্রষ্টব্য: আপনার প্রয়োজন adb shell, তারপর suপ্রথমে চালানো ।
কাকিও

সতর্কতা, এটি পুনরায় সক্ষম করার পরেও, সেই প্যাকেজটির জন্য লঞ্চার আইকন শর্টকাটগুলি অদৃশ্য হয়ে যাবে।
এলাদ নাভা

10

আপনার যদি অ্যাপ্লিকেশন প্যাকেজে অ্যাক্সেস থাকে তবে আপনি -r বিকল্পের সাহায্যে ইনস্টল করতে পারেন এবং এটি বর্তমানে পার্শ্ব প্রতিক্রিয়া হিসাবে চলতে থাকলে প্রক্রিয়াটি হারাবে। এটার মত:

adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivity

-R বিকল্পটি বর্তমানে অ্যাপের সাথে সম্পর্কিত ডেটা সংরক্ষণ করে। তবে, আপনি যদি উল্লেখ করেন যে আপনি যদি একটি ক্লিন স্লেট চান তবে আপনি সম্ভবত এই বিকল্পটি ব্যবহার করতে চাইবেন না।


7

আপনি যদি কোনও শিকড়বিহীন ডিভাইস এবং / অথবা আপনার APK তে পরিষেবাগুলি লক্ষ্য করে থাকেন যা আপনি পাশাপাশি থামাতে চান না, অন্য সমাধানগুলি কাজ করবে না।

এই সমস্যাটি সমাধান করার জন্য, আমি এটি বন্ধ করার জন্য আমার ক্রিয়াকলাপে যুক্ত করেছি এমন একটি সম্প্রচার বার্তা রিসিভারের অবলম্বন করেছি।

public class TestActivity extends Activity {
    private static final String STOP_COMMAND = "com.example.TestActivity.STOP";

    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            TestActivity.this.finish();
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //other stuff...

        registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND));
    }
}

এইভাবে, আপনি আপনার ক্রিয়াকলাপ বন্ধ করতে এই অ্যাডবি কমান্ডটি জারি করতে পারেন:

adb shell am broadcast -a com.example.TestActivity.STOP

2

আপনি যা খুঁজছেন তা যদি কোনও প্যাকেজ হত্যা করে

pkill package_name 

কাজ করা উচিত


দ্রষ্টব্য: এটি কেবলমাত্র নতুন অ্যান্ড্রয়েড সংস্করণে কাজ করে। pkill আমার 4.4 এমুলেটরটিতে উপলভ্য নয় তবে অ্যান্ড্রয়েড 6 এমুলেটরটিতে উপলব্ধ।
সাইমন

1

adb shell killall -9 com.your.package.name

ম্যাক "বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ" অনুসারে আপনার কাছে সম্ভবত প্রক্রিয়াটি মেরে ফেলার অনুমতি রয়েছে যা মূল দ্বারা শুরু হয়নি not

আনন্দ কর!


আমি এই কমান্ড চলমান পাচ্ছি প্রতিক্রিয়ায় "অপারেশন না অনুমতি"
আব্দুর রহমান Shamair

0

গ্রহণে ডিডিএমএসের দৃষ্টিকোণে যান এবং ডিভাইস ট্যাবে আপনি যে প্রক্রিয়াটি হত্যা করতে চান তার অধীনে যে প্রক্রিয়াটি আপনি হত্যা করতে চান তাতে ক্লিক করুন। তারপরে আপনাকে কেবল স্টপ বোতাম টিপতে হবে এবং এটি প্রক্রিয়াটি হারাতে হবে।

কমান্ড লাইন সরঞ্জাম থেকে আপনি এটি কীভাবে করবেন তা আমি নিশ্চিত নই তবে অবশ্যই একটি উপায় থাকতে হবে। হতে পারে আপনি এটি এডিবি শেলের মাধ্যমে করেন ...


Eclipse না চালিয়ে কমান্ড লাইন থেকে কীভাবে এটি করা যায় সে সম্পর্কে আমি গিটহাবে একটি কোড স্নিপেট পেয়েছি এবং এটি কিছুটা প্রসারিত করেছি
স্কুবার্থ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.