Zadání projektu Android závislostí (Eclipse)

hlasů
21

Mám dvě Android projekty ‚projekt knihovny‘, obsahující vlastní rozložení, a ‚projektových žádostí‘ obsahuje aplikaci, která používá rozložení.

Vše se zdá vytvářet a spouštět v pořádku, kromě toho, že vizuální layout editor hodí ClassNotFoundException (což předpokládám, je chyba v plug-in), ale když se snažím začít využívat atributy I definovaných pro volbu vlastního vzhledu v xML, mohu již stavět. To je; to funguje:

<?xml version=1.0 encoding=utf-8?>
<se.fnord.android.layout.PredicateLayout
    xmlns:android=http://schemas.android.com/apk/res/android
    android:layout_width=fill_parent 
    android:layout_height=fill_parent> 
  <TextView
    android:layout_width=wrap_content 
    android:layout_height=wrap_content 
    android:text=asdfasdf
    />
</se.fnord.android.layout.PredicateLayout>

Zatímco toto není:

<?xml version=1.0 encoding=utf-8?>
<se.fnord.android.layout.PredicateLayout
    xmlns:android=http://schemas.android.com/apk/res/android
    xmlns:fnord=http://schemas.android.com/apk/res/se.fnord.android
    android:layout_width=fill_parent 
    android:layout_height=fill_parent> 
  <TextView
    fnord:layout_horizontalSpacing=1px
    android:layout_width=wrap_content 
    android:layout_height=wrap_content 
    android:text=asdfasdf
    />
</se.fnord.android.layout.PredicateLayout>

Sestavení selže se zprávou od AAPT:

ERROR No identifikátor zdroje nalezeny pro atribut ‚layout_horizontalSpacing‘ v balíku ‚se.fnord.android‘

Identifikátor zdroj neexistuje v R-soubor a attrs.xml obsahoval projekt knihovny, a když jsem dal rozložení kód a zdroje přímo v projektu aplikace vše funguje. Atribut layout_horizontalSpacing (a layout_verticalSpacing) je vlastní atribut použit ve třídě PredicateLayout.LayoutParam určit vzdálenost k další widget.

Zatím jsem se snažil standardních zatmění způsoby, zadáním odkazy projektu a stavět cesty projektu závislostí. Také mi bylo řečeno, vyzkoušet tag v manifestu aplikace, které nepomohlo.

Takže, co musím udělat pro odkazy v jazyce XML souboru do práce?

Nevím, jestli je to důležité, ale ‚knihovna‘ manifest vypadá takto:

<?xml version=1.0 encoding=utf-8?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
      package=se.fnord.android
      android:versionCode=1 android:versionName=1.0.0>
</manifest>

Dále jen ‚žádost‘ manifestu takhle:

<?xml version=1.0 encoding=utf-8?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
      package=se.fnord.appname
      android:versionCode=1 android:versionName=1.0.0>
    <application android:icon=@drawable/icon android:label=@string/app_name>
        <activity android:name=.AppName
                  android:label=@string/app_name>
            <intent-filter>
                <action android:name=android.intent.action.MAIN />
                <category android:name=android.intent.category.LAUNCHER />
            </intent-filter>
        </activity>
    </application>
</manifest>

(Dále jen 'PredicateLayout' btw, je vyčištěn-up verze této ).

Položena 21/02/2009 v 20:11
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
19

Nejčasnější verze SDK pro Android nepodporoval sdílení na úrovni zdrojového kódu v příjemném způsobem. Dalo by se jar vaše .class soubory a pak dodal, že do lib / složky, ale toto řešení neumožňovala přímou sdílení zdrojového kódu a stejně důležité je nepodporoval sdílení zdrojů nebo aidl souborů.

Pak v květnu 2010, Android zaveden mechanismus Library Project. Knihovnu Projekt je strukturován velmi podobný normální projektu Android, ale spíše než aby byla použita k výrobě APK, slouží pouze k zajištění kód a prostředky na jiné projekty. Jako obyčejný projektu Project Knihovna obvykle obsahuje src a res složek, spolu se souborem AndroidManifest.xml; Nicméně manifestu by mělo být většinou prázdné, s výjimkou zjevně prvku a atributu balíček (již není pravdivé - nyní můžete prohlásit Aktivity a další komponenty v manifestu vaší knihovny projektu). Kromě toho je soubor project.properties o Projektu knihovna musí obsahovat vlastnost:

"android.library=true"

Chcete-li odkaz z obyčejného (apk-produkovat) projekt k projektu knihovny, je třeba přidat řádek „android.library.reference.N“ do souboru project.properties řádného projektu. Například, pokud chce můj hlavní projekt upozornit na dva projekty knihovny, spis mé project.properties pro hlavní projekt bude zahrnovat následující:

android.library.reference.1=../LibraryA
android.library.reference.2=../../LibraryB

kde ../ a ../../ jsou příslušné trasy z hlavního projektu na projekty knihovny (je to jen příklad). Poznámka: Tento seznam odkazů je 1-based a neměl by obsahovat mezery nebo duplikáty. Google si je dobře vědom toho, že to není dokonalý systém, ale bylo to rozumné řešení, které je slučitelné s Ant a Eclipse. Obecně řečeno, bude váš IDE pokusí udržet tyto soubory pro vás, ale někdy možná budete muset upravit ručně.

Zprvu Projekty Knihovna nepodporoval následující:

  1. Knihovna projekty směřující do jiných projektů a knihovnictví
  2. Knihovna Projekty, které obsahují soubory aidl
  3. Knihovna Projekty, které obsahují složky majetku

Nicméně následné SDK vydání vyřešit všechny tyto problémy.

Další informace o knihovny projektů, viz oficiální dokumentace .

Odpovězeno 21/05/2010 v 01:26
zdroj uživatelem

hlasů
12

Projekt exportovat jako JAR není ten správný způsob, jak propojit projektu knihovny do své aplikace projektu prostřednictvím Vlastnosti -> Java Build Path -> Knihovna. Ani to je propojit projekt jako požadovanou projektu prostřednictvím Vlastnosti -> Java Build Path -> Projekty.

Za prvé, přečtěte si téma projektů Library na vývojáře Android -> Vývoj -> Správa projektů: http://developer.android.com/guide/developing/projects/index.html#LibraryProjects Poté, přečtěte si o zřízení knihovny projekt a odkazování na téma projekt knihovna opět Android Developers -> Vývoj -> Správa projektů -> Z Eclipse s ADT

Takže ... kroky jsou:

  1. Vytvořte si svůj projekt knihovny obvykle jako projekt Android;
  2. Set „je knihovna“ ve vlastnostech projektu -> Android vytvořit svůj projekt App normálně;
  3. Přidat odkaz do knihovny ve vlastnostech projektu -> Android -> Přidat.

Poté můžete použít všechny třídy, komponenty (aktivity, služby, zdroje, přijímače), zdroje atd

Př .: odkazovat žádné prostředky v rozvržení xml, například, měli byste použít @mylib: id / my_id nebo @mylib: layout / my_lib_layout

Obs .: Používáte-li součástí vaší knihovně v aplikaci projektu, musíte je replikovat ve svém manifestu aplikace.

Odpovězeno 26/09/2011 v 21:20
zdroj uživatelem

hlasů
8

Také jsem dostal atributy funguje, ale ne tak, jak by to mělo fungovat, myslím.

Musíte použít jako názvů v prvku, který používá své vlastní atributy, jmenný prostor své hlavní aplikace, a to, že projektu knihovny. Takže, v příkladu, pokud zadáte pro hodnotu „xmlns: Fnord“ jmenný prostor vaší aplikace projektu, to funguje.

Také při čtení vlastní atributy ve své vlastní PredicateLayout(Context,AttributeSet)konstruktor, je nutné zadat názvů dané aplikace i na volání attributes.getAttributeValue().

Což je bolest, protože tento kód je ve vaší knihovně aplikace, která není / neměli vědět o aplikace projektu, který se používá v. I obejít, že tím, že má app volat statickou metodu ViewUtil.setAttributeNamespace (appNamespace) v onCreate moje aplikace je () a vlastní zobrazení knihovnu využívají tento namespace k načtení vlastní atributy. Soubor attrs.xml pak může zůstat v projektu knihovny stejně. Teď jen ošklivá věc je, že rozložení XML musí používat názvů dané aplikace na vlastní zobrazení, takže není možné, aby takové rozvržení XML v rámci projektu knihovny.

Odpovězeno 26/10/2010 v 08:28
zdroj uživatelem

hlasů
3

„Exportní knihovnu jako jar“ řešení“funguje pouze tehdy, pokud vaše knihovna projekt obsahuje pouze zdrojový kód. V takovém případě OP otázka uvádí, že jeho knihovna projekt obsahuje věci ui účely.

Máme přesně stejný problém v mém týmu, kteří chtějí mít knihovny projektů, které drží zdroje a zdroje ui účely. Skončili jsme reorganizaci našeho Ant build systému s cílem mít aplikace pohltí projekty knihovny během jeho sestavování. Bohužel se zdá není řešením tohoto druhu, aby byl kompatibilní s Eclipse, což je hlavním zdrojem frustrace pro vývojáře. Jsme stále schopni používat Eclipse, ale musíme proskočit obručí, aby si to pracovat a musí se smířit se sníženou produktivitou.

Odpovězeno 20/05/2010 v 23:43
zdroj uživatelem

hlasů
3

Exportovat knihovny projekt jako JAR a odkazovat jej v aplikaci projektu „Java Build Path“ jako JAR.

Odpovězeno 18/03/2010 v 07:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more