SORU
3 Ocak 2010, Pazar


Ambalaj dağıtılabilir bir Jar dosyası içinde Kaynak dosyalar Android

Kendi uygulamaları içinde kullanım için diğer geliştiricilere dağıtmak istediğim bazı yeniden Android kodu üzerinde çalışıyorum. Kodu eklemek mümkün olmak istiyorum bazı kaynak bağımlılıkları (düzenleri, xml ve png drawables) ve tek bir paket (Jar dosyası) içinde referans.

Bunu yapmanın en iyi yöntemi nedir? bu yüzden bu mümkün değildir, ve?

CEVAP
19 AĞUSTOS 2011, Cuma


Android otomatik olarak R sınıfı /res klasörü altında kaynak dosyaları ile yapar, final static R sınıfını kullanarak imkansızdır.

Güzel bir çözüm res dosyaları ile jar Bir dosya kullanmak buldum. Nasıl yaptığımı burada

  1. jar dosyası ihraç edilecek olan, kaynak kodukullanmayınR derleme zamanında final statik bir bellek adresi ile değiştirilecek, çünkü değişken. R, yerine kendi yöntemim aşağıda yaptım:

    public static int getResourceIdByName(String packageName, String className, String name) {
        Class r = null;
        int id = 0;
        try {
            r = Class.forName(packageName   ".R");
    
            Class[] classes = r.getClasses();
            Class desireClass = null;
    
            for (int i = 0; i < classes.length; i  ) {
                if (classes[i].getName().split("\\$")[1].equals(className)) {
                    desireClass = classes[i];
    
                    break;
                }
            }
    
            if (desireClass != null) {
                id = desireClass.getField(name).getInt(desireClass);
            }
    
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
    
        return id;
    }
    

    Eğer bir düzen main.xml adında varsa, örneğin, yöntemini çağırarak:

    int id = getResourceIdByName(context.getPackageName(), "layout", "main");
    

    "Aradığınız yöntem . bunu alabilirsiniz" Metin1 olan bir dize varsa

    int id = getResourceIdByName(context.getPackageName(), "string", "text1");
    

    Bu yöntem, zamanında kaynak kimliğini verir. Yansıma API çalışma zamanında R durumu elde etmek için kullanır.

    Bu yöntemi kullanarak R değişken kullanarak önleyebilirsiniz.

  2. Hedef proje için res dosyaları kopyalamak.

  3. İnşa.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • ShotgunSandwichENT

    ShotgunSandw

    3 EKİM 2012