الروبوت المكونات في إطار جرة VirtualAPK تطوير حزمة

مقدمة:

 إذا كان هذا هو الحال بالنسبة لتطوير APP (دون النظر أكثر من الحفرة)، وأعتقد أن على نوع من المكونات في وضع يمكن استخدامها. الآن أن لدي هنا هو شرط جديد، وأنا لا تتطور APP، أنا وضعت SDK، ثم سأكتب AAR احتواء إطار VirtualAPK، ولكن في الواقع الكثير من الناس يكتبون SDK AAR المحلي لا تستخدم، ولكن استخدام حزمة جرة من الطريق، واليوم أنا أفعل استخدام حزمة جرة VirtualAPK الإطار.

عملية A. التنمية

أنا لست إعادة الكتابة، ومن ثم إلى رمز من حيث:

 https://www.jianshu.com/p/3022f4b0ae28

 عرض التطبيق وضعت على نموذج وأنا استخدم اثنين من وحدة، وحدة المضيف، والمكونات في وحدة. الآن على تطوير حزمة جرة، إلى جانب وحدة اللازمة لمحاكاة قذيفة تذرعت حزمة جرة.

 وهذا يعني أن وحدة قذيفة - >  قذيفة، وحدة المضيف - >  المنزل؛ المكونات في وحدة - >  المساعد.

II. حزمة جرة المراجع

1. التعبئة والتغليف جرة

أولا، نحن نريد لكتابة التعبئة والتغليف قيادة جرة في المنزل gradle في هذا الاكتشاف على شبكة الإنترنت الكثير. على سبيل المثال، I

 مهمة buildJar (dependsOn: ، اكتب: جرة) { archiveName = 'testVirtual.jar " مواطنه srcClassDir = . من srcClassDir استبعاد "** / R.class" استبعاد "** / R \ $ * الدرجة" }

هذا هو منزل I الخروج من حزمة جرة اسمه testVirtual.jar

2. حزمة جرة المرجعي

ونحن الآن قد وضعت للإشارة إلى قصف حزمة جرة يا قذيفة بسيطة جدا، انتقل مباشرة المنزل الطبقة OneActivity (هذه الفئة هي واحدة من قبل تجريبي).

الطبقة العامة MainActivity يمتد نشاط { Override محمية OnCreate الخاص باطل (حزمة savedInstanceState) { super.onCreate (savedInstanceState)؛ setContentView (R.layout.activity_main)؛ عازمة = عازمة الجديدة النوايا (MainActivity.this، OneActivity.class)؛ startActivity (النية)؛ } }

ثم testVirtual.jar إلى مجلد يبس، إذا كانت الإشارة (الافتراضي عموما هناك) في قذيفة gradle في

تبعيات { تنفيذ fileTree (دير: "يبس"، ما يلي: ) }

3. الوثائق الانتهاء

وبطبيعة الحال، تماما كما سبق أنه لا يمكن تشغيل. لأننا قتال من أجل ذلك هو حزمة جرة بدلا AAR. لذلك، لدينا موارد الوطن تكمل لشركة شل، وحدث ما حدث على الموارد ولدي هنا فقط activity_one، ووضعها في وعاء من المجلد تخطيط، فقط التجريبي فقط نشاط واحد، وذلك لقذيفة واضح لل التعاريف. وأخيرا، لأن المنزل يحتوي على تنفيذ مرجعية "com.didi.virtualapk: الأساسية: 0.9.8، ونحن بحاجة لجعله في حزمة جرة في يبس قذيفة.

  هنا يمكن القول في كيفية العثور على حزمة جرة المطابقة وفقا لالتنفيذ:

 فتح محرك ج / المستخدمين / اسم المستخدم /.gradle/caches/modules-2/files-2.1 مجلد، ثم انتقل إلى محتويات الإطار، على سبيل المثال، وجدت هذا على

 انتقل بعد تنفيذ للعثور على اسم

 3 مجلدات داخل وجدت حزمة جرة تساءل لم يكن، ثم أحصل على AAR وبناء على هذا، لأنني أخشى أن يكون هناك إطار في ملف الموارد، وضغط عليه لاتخاذ هذا AAR اتخاذ حزمة جرة (تبين أي موارد ملف)

 للوصول الى جرة ثم الى تغيير اسم قذيفة يبس يمكن تشغيل وضعها الطبيعي. ملاحظة:

هناك قد تقرير خطأ معرف الموارد، مشيرا إلى أنه قد يكون هناك تعارض في موارد، والحل لا يكمن في استخدام وسيلة R. الإشارة إلى الموارد، يمكنك استخدام context.getResources (). GetIdentifier (اسم، اكتب، context.getPackageName ()) .

III. بلج الدعوة

شيئا لقذيفة الكتابة، لأننا نكتب عملية الاحتجاج المكونات في المنزل، طالما الموروثة من التطبيقات الرئيسية على خط المرمى.

 ثم استخدام سطر الأوامر لحزمة البرنامج المساعد، تجديد، مع assemblePlugin نظيفة gradlew

 البرنامج المساعد في مجلد معين (على الجانب من العملية وسابقة، هي موطن لتشغيل البرنامج المساعد، وكان وعاء لفعل أي شيء)

وأخيرا، تشغيل، وقراءة سابقة نعلم جميعا، وأنا تتفاعل على المساعد في المنزل، وهناك نوعان من الأماكن، واحد هو وسيلة لطباعة دخول المنزل للاتصال المساعد ثم قم بتغيير زر الاستدعاء، والثانية هي موطن للقفز البرنامج المساعد النشاط.

 إذا كنت تتبع لي طريقة للقيام سوف تجد المقام الأول العادية، نداء الوطن العادية المساعد طرق، ولكن المركز الثاني يولى، المنزل لا تقفز المساعد النشاط، والخطأ

 android.content.ActivityNotFoundException: غير قادر على العثور على فئة النشاط صريحة {com.example.plugin.virtualmastertest / com.didi.virtualapk.core.A $ 1}؛ هل أعلن هذا النشاط في AndroidManifest.xml لديك؟

لم يتم تعريف أنه في معنى واضح، ولكن لماذا كتبت قبل الحاجة لا تكون محددة في البيان، ونحن بحاجة للقتال حزمة جرة، ولكن com.didi.virtualapk.core.A $ 1.

APK المنزل قبل ذلك I فك، وجدت أن اضح بعد بتفريغ اقل بكثير من هذه الاشياء

  < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "القياسية" الروبوت: اسم = "com.didi.virtualapk.delegate.StubActivity" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "المعيار" الروبوت: اسم = "com.didi.virtualapk.core.A $ 1" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "المعيار" الروبوت: اسم = "com.didi.virtualapk.core.A $ 2" الروبوت: موضوع = "@ الروبوت: أسلوب / Theme.Translucent" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 1" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 2" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 3" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 4" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 5" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 6" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 7" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTop" الروبوت: اسم = "com.didi.virtualapk.core.B $ 8" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 1" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 2" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 3" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 4" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 5" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 6" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 7" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleTask" الروبوت: اسم = "com.didi.virtualapk.core.C $ 8" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 1" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 2" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 3" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 4" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D 5 $" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 6" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 7" / > < النشاط الروبوت: تصدير = "كاذبة" الروبوت: launchMode = "singleInstance" الروبوت: اسم = "com.didi.virtualapk.core.D $ 8" / > < خدمة الروبوت: تصدير = "كاذبة" الروبوت: اسم = "com.didi.virtualapk.delegate.LocalService" / > < خدمة الروبوت: تصدير = "كاذبة" الروبوت: اسم = "com.didi.virtualapk.delegate.RemoteService" الروبوت: عملية = ": الخفي" > < القصد فلتر > < الروبوت عمل: اسم = "com.example.bn.virtualapktest.intent.ACTION_DAEMON_SERVICE" / > < / النوايا فلتر > < / الخدمة > < مزود الروبوت: السلطات = "com.example.bn.virtualapktest.VirtualAPK.Provider" الروبوت: تصدير = "كاذبة" الروبوت: اسم = "com.didi.virtualapk.delegate.RemoteContentProvider" الروبوت: عملية = ": شيطان" / >

PS: أنا لا أعرف ما هو هذا ربما معنى بت حفرة (بعد الدراسة بعد سأقولها مرة أخرى)

 وأخيرا، وضعنا هذه الأشياء في وعاء واضح، وسوف تكون قادرة على التشغيل العادي، ويمكن تحقيق ذلك بعد ان لعب حزمة جرة VirtualAPK من المكونات الإضافية، هو قذيفة + الوطن + المساعد النموذج.

----- انقر فوق للاستماع الى المقابلة للتركيز على استمرار الجافة

بريد إلكتروني الخاص "666" لطلب الروبوت الفيديو المتقدم (الرفرفة المتقدمة المكونات في التكنولوجيا، المعالجة الحرارية التكنولوجيا)

ودعا "أجمل هونج كونج ملكة جمال" وتزوج ابنه البالغ من العمر 38 عاما الآن أمام لأول مرة تعرض صور

سوف هواتف المستقبل توديع الشاشة LCD؟

"الفقراء" دفع وست مواد لغسل الاستجابة مشروع الباب؛ سوف يتم تسلا في شنغهاي

حجم أقصى OFF-WHITE س نايك التاريخ؟ بلاكي الأحذية المفضلة الأخيرة لا أحد!

رونالد تشنغ الحفل مع اثنين من اصدقائه Tucao ولكن لديهم في برنامج استضافته TVB على خشبة المسرح

وانهيار تقاسم السيارة التي تعاني من المشكلة، ولكن أيضا مدى مفتوحة؟

"ثلاثة أسئلة الشركات المملوكة للدولة،" يجيب 15 رجال الأعمال والخبراء القادمة!

فقط أم تبلغ من العمر 20 عاما قادمة! يستحق كايلي جينر أكثر من 900 مليون $!

تألق شارمين البر الرئيسى الدراما في البطولة النسائية ستعمل مع الطاقم هوانغ شياو مينغ الاعتراف قرض ستة الرقم

"خطة إعلامية النخبة المستقبل" التسجيل مفتوح! حصلت في السيارة

"ألقي القبض على الطبيب النبيذ ماو كونج" طلب الإفراج بكفالة بكين نيوز خمسة الحدث بين المحافظات

اديسون تشن ومروحة تعليقات مع شون الكراهية المتبادلة الرسمية، إيسون تشان، ميريام يونغ استراحة