我有一个项目" CustomViews"我想在另一个项目中使用它作为一个图书馆"图书馆依赖"。我的一个观点是,ToolbarITI在我在ToolbarITI类中处理的文件中定义了一些自定义属性:
attrs.xml
<resources>
<declare-styleable name="ToolbarITI">
<attr name="rightIconSrc" format="integer"/>
<attr name="leftIconSrc" format="integer"/>
<attr name="titleText" format="string"/>
<attr name="iconPadding" format="dimension"/>
<attr name="fontName" format="string"/>
</declare-styleable>
</resources>
当我将自定义视图添加到Library Dependent项目中的布局时,我可以在xml文件中添加这些自定义属性,并应用属性。但是, Android Studio在自动填充时无法识别自定义:与ToolbarITI相关的属性,这会使进程变得烦人。我在布局文件的顶部声明了xmlns:custom。
我根本不明白这些属性是如何与库项目捆绑在一起并由Android studio引用的。如果有人能解释如何做到这一点,请提供解释!
答案 0 :(得分:1)
我需要有人确认这是问题的根源,但这就是我找到的。
我正在将我的.aar上传到com.tommcfarlin.lib,其中包含&#34; lib&#34;导致资源被忽略(根据Android Studio)。虽然我不确定这是否会导致任何事情发生,并且打破了#34;在打包时,它肯定会通过不为自动填充添加资源ID来降低Android Studio的功能。更安全,不要这样做。
我采取的这些步骤导致Android Studio识别自定义属性。
1)我将CustomViews项目中的build.gradle更改为: 请注意com.tommcfarlin.customviews
def aarFile = file("build/${archivesBaseName}-${project.version}.aar")
artifacts {
archives aarFile
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file:///C:/Users/tmcfarlin/AndroidProjects/myrepo")
pom.groupId = 'com.tommcfarlin.customviews'
pom.artifactId = 'CustomViews'
pom.version = '0.1.0'
}
}
}
2)我跑了#34; gradle uploadArchives&#34;来自终端
3)在我的Library Dependent项目中,我在build.gradle中有以下几行:
repositories {
maven { url 'file:///C:/Users/tmcfarlin/AndroidProjects/myrepo' }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.tommcfarlin.customviews:CustomViews:0.1.0@aar'
}
4)我用gradle文件同步了项目。在此之后,我仍然无法看到属性。我关闭了图书馆依赖项目并重新开放瞧!我现在可以使用以下块,当我键入&#34; custom:&#34;时,我的自定义视图的属性已填入我的位置。并按下Ctrl + Space
<com.tommcfarlin.customviews.ToolbarITI
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:fontName="helvetica.ttf">
</com.tommcfarlin.customviews.ToolbarITI>
在学习如何设置本地存储库时,此网页对我非常有用。请务必不要使用&#34; lib&#34;目录!!! http://blog.glassdiary.com/post/67134169807/how-to-share-android-archive-library-aar-across