Я создал проект основной библиотеки для Android, в котором я создал собственный класс представления:
package com.my.android.library.layout;
public class CustomView extends View {
...
Я также определил styleable для своего CustomView
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomView">
<attr name="title_text" format="string" />
</declare-styleable>
</resources>
Поскольку я не хочу делиться своим исходным кодом с другими, кто использует мой библиотечный проект, я создал распределенный библиотечный проект, в который я добавил банку указанного выше основного библиотечного проекта< /strong> в папку libs/
проекта распределенной библиотеки и скопировал все ресурсы из проекта основной библиотеки в проект распределенной библиотеки.
ДАЛЕЕ я создал проект приложения для Android, в котором используется проект распределенной библиотеки. В основном файле макета проекта приложения я определил следующее:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.my.android.library.layout.CustomView
custom:title_text = "THIS IS TITLE"
/>
<RelativeLayout>
Когда я запускаю свое приложение, я получаю следующее исключение:
E/AndroidRuntime(30993): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.android.app/com.my.android.app.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class com.my.android.library.layout.CustomView
E/AndroidRuntime(30993): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2071)
E/AndroidRuntime(30993): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2096)
...
Caused by: java.lang.ClassNotFoundException: com.my.android.library.layout.CustomView
E/AndroidRuntime( 2947): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
E/AndroidRuntime( 2947): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
E/AndroidRuntime( 2947): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
E/AndroidRuntime( 2947): at android.view.LayoutInflater.createView(LayoutInflater.java:552)
E/AndroidRuntime( 2947): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
Кажется, он не может раздуть мой CustomView
в макете xml. Почему? Как избавиться от этого?
(Я проверил основной jar-файл библиотеки, там есть класс CustomView
. Пожалуйста, не кидайте мне ссылку на сайт Android без объяснения причин.)
android private library
иandroid depedencies
в пути сборки Java - person Rod_Algonquin   schedule 11.08.2014android:layout_width
иandroid:layout_height
к вашемуCustomView
и сообщите мне результат. после этого еслиClassNotFoundException
выкинет скажите. - person mmlooloo   schedule 16.08.2014