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

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011

İLGİLİ SORU / CEVAPLAR