سؤال

عندي حزمتين مثلا packageA و packageB.في packageA لدي فئة اسمها classA التي تأخذ الموارد من R.java:مثال:

TextView textView = (TextView) findViewById(R.id.textView);

نفس الشيء مع الحزمة B.لدي فئة اسمها classB التي تأخذ الموارد من R.java

EditText editText = (EditText) findViewById(R.id.EditText);

عندما أريد تشغيل android classB, ، يجب أن أتغير Android Manifest file, ، قم بتغيير الحزمة الافتراضية من com.packageA ل com.packageB, ، لذلك سيتم ملاحظة خطأ classA في السطر أعلاه.نفس الشيء عندما أعكس.

إذن كيف يمكنني إصلاح هذه المشكلة:استخدم حزمًا متعددة ويستخدم الكثير منها Resource data.الرجاء مساعدتي.

شكرًا :)

هل كانت مفيدة؟

المحلول

إذا كانت الحزمة المحددة في البيان الخاص بك com.packageA, ، ثم في ملفات packageA، لا تحتاج إلى القيام بأي شيء.في ملفات packageB, ، يستخدم import com.packageA.R; دون تغيير اسم الحزمة في البيان.بهذه الطريقة، يمكن لـ packageB الخاص بك الوصول إلى ملف R.java.

نصائح أخرى

لا تحتاج إلى ذكر جميع الحزم الخاصة بك في ملف البيان.فقط أعلن عن حزمة الفئة أ وقم بتشغيل البرنامج.ولكن تأكد من استيراد حزمة الفئة B في فئة Java الخاصة بك حيث تتصل بها.يعلن ملف البيان افتراضيًا عن الحزمة الأولى التي ذكرتها عند إنشاء مشروع Android جديد.

اسمحوا لي أن أعرف إذا كان هذا يحل مشكلتك

لقد واجهت نفس المشكلة لأنني كنت أقوم بتقسيم مشروع إلى آخر بموارد مختلفة، ولأنني كنت أستخدم scala (2.8.3) وtreeshaker، فإن المكونات الإضافية لن تسمح لي باستخدام مشاريع مكتبة android بشكل صحيح.

لقد قمت بحل المشكلة عن طريق إضافة خطوة إنشاء مخصصة باستخدام ant والتي تؤدي إلى إنشاء نسخة مكررة من R.java في الحزمة التي أردتها.

قمت بإضافة ملف اسمه custom_rules.xml إلى جذر مشروعي MyProjectExtened بالمحتوى التالي:

<?xml version="1.0" encoding="UTF-8"?>
  <project name="MyProjectExtended" default="debug">
  <condition property="exe" value=".exe" else=""><os family="windows" /></condition>
  <property name="aapt" location="C:\Program Files (x86)\Android\android-sdk\platform-tools\aapt${exe}" />
  <property name="android.jar" location="C:\Program Files (x86)\Android\android-sdk\platforms\android-10\android.jar" />

  <!-- Generates the R.java file for this project's resources. -->
  <target name="debug">
     <echo>Generating R.java / Manifest.java from the resources...</echo>
 <exec executable="${aapt}" failonerror="true">
   <arg value="package" />
   <arg line="" />
   <arg value="-m" />
   <arg value="-J" />
   <arg path="gen" />
   <arg value="-M" />
   <arg path="AndroidManifest.xml" />
   <arg value="-S" />
   <arg path="res" />
   <arg value="-I" />
   <arg path="${android.jar}" />
   <arg value="--custom-package" />
   <arg value="com.MyProjectExtendedPackage" />
     </exec>  
  </target>
</project>

ثم أضفت خطوة البناء المخصصة:

  • انقر بزر الماوس الأيمن على المشروع، الخصائص
  • في "المنشئ"، انقر فوق "جديد ..."
  • اختر "Ant Builder"، تابع.
  • بالنسبة لملف البناء ${workspace_loc:/MyProjectExtended/custom_rules.xml}
  • الدليل الأساسي : ${workspace_loc:/MyProjectExtended}

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top