Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven和Android Facebook SDK apklib_Android_Maven_Facebook Android Sdk_Pom.xml_Android Maven Plugin - Fatal编程技术网

Maven和Android Facebook SDK apklib

Maven和Android Facebook SDK apklib,android,maven,facebook-android-sdk,pom.xml,android-maven-plugin,Android,Maven,Facebook Android Sdk,Pom.xml,Android Maven Plugin,因此,我正在开发facebook android sdk,以将其包含在我们的CI流程中 facebook/pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/

因此,我正在开发facebook android sdk,以将其包含在我们的CI流程中

facebook/pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.facebook.android</groupId>
<artifactId>facebook-android-sdk</artifactId>
<version>3.0.0-SNAPSHOT</version>
<name>facebook-android-sdk</name>
<packaging>apklib</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>4.1.1.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>support-v4</artifactId>
        <version>r7</version>
        <type>jar</type>
    </dependency>
</dependencies>

<build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>src</sourceDirectory>

    <plugins>
        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>3.4.1</version>
            <configuration>
                <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
                <assetsDirectory>ignored</assetsDirectory>
                <resourceDirectory>${project.basedir}/res</resourceDirectory>
                <nativeLibrariesDirectory>ignored</nativeLibrariesDirectory>
                <sdk>
                    <platform>16</platform>
                </sdk>
            </configuration>
            <extensions>true</extensions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.google.code.maven-replacer-plugin</groupId>
            <artifactId>maven-replacer-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <phase>process-sources</phase>
                    <goals>
                        <goal>replace</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <ignoreMissingFile>false</ignoreMissingFile>
                <file>target/generated-sources/r/com/facebook/android/R.java</file>
                <outputFile>target/generated-sources/r/com/facebook/android/R.java</outputFile>
                <regex>false</regex>
                <token>static final int</token>
                <value>static int</value>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>attach-artifact</goal>
                    </goals>
                    <configuration>
                        <artifacts>
                            <artifact>
                                <type>jar</type>
                                <file>${project.build.directory}/${project.build.finalName}.jar</file>
                            </artifact>
                        </artifacts>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>
在Intellij中构建和运行效果很好,没有问题,它会提取依赖项并添加到正确的位置


问题

当我通过Maven Travis CI命令运行时,这些命令是:

mvn install -DskipTests=true
然后:

由于缺少类(即facebook类),测试将失败。似乎在尝试通过maven进行安装和测试时,它没有正确地引入facebook android sdk

那么,在构建依赖关系时是否存在问题,或者在它尝试运行
mvn测试之前是否需要运行另一个magic maven命令

facebook fork在此处可用:

只需运行即可

mvn clean install
这样,它将运行测试,一切正常

顺便说一句,我的github帐户上有一个完全专业化的facebook sdk,网址是


看来我的apklib pom.xml很好!不好的是我的APK pom.xml。从旧编译器版本到新编译器版本似乎存在向后兼容性问题。 只是我改变了:

<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <sdk>
            <platform>${android.platform}</platform>
        </sdk>
    </configuration>
</plugin>

com.jayway.maven.plugins.android.generation2
安卓maven插件
3.3
${android.platform}
致:


com.jayway.maven.plugins.android.generation2
安卓maven插件
3.4.1
${android.platform}
它神奇地开始工作了!
经验教训:dep/插件管理非常方便

您可以使用创建的可用Maven存储库来托管最新facebook android api的Maven端口:


最初的项目布局非常糟糕,TestApp/和tests/这两个测试项目被放在库项目facebook/下,是的,这是开发指南推荐的,但不是Maven式的。如果你真的需要它们,你也需要将这两个测试项目变为mavenize,并将它们重新组织为一个多模块项目,也就是说,将它们拉出来,使它们与库项目处于同一级别,都在父项目下。是的,我真的不需要它们。只需要sdk部分。然后您可以简单地删除或保留它们,请注意,Mavenized Android项目中的测试阶段是专门设计的,绑定到测试项目,一般来说,在纯应用程序或库项目上运行
mvn test
,除了编译之外可能什么都不做。是的,我已经删除了它们,是的,我不希望它在lib上运行测试,只希望它包含在我的应用程序测试阶段。虽然编译/安装似乎已经完成,但它似乎还是失败了。这很奇怪。当maven再次开始为我提供文件时,我会添加错误。@yorkw看到我的答案了,似乎与我的apk pom有关,而不是apklib。尝试过了,你的SDK也过时了,Facebook SDK更新到了版本3。我知道。。我现在不需要更新它,也没有时间推动facebook将工件实际推送到中央存储库中。我试着认为它们是非常无用的,糟糕的代码和项目设置+不了解资源,不管怎样,都是离题的。还有其他建议吗?或者你能试试看是否能帮你编译吗?我甚至有
rm-rf存储库/
我的本地存储库都不走运。谢谢你这么做!我有点麻烦-它没有生成BuildConfig.java文件,给了我[ERROR]类实用工具[ERROR]target/unpack/apklibs/com.github.avianey_facebook-android-api_apklib_3.0.1/src/com/facebook/Settings.java:[145,19]错误:找不到符号。我必须手动将生成的BuildConfig.java文件添加到源代码中,然后重新打包apklib。有点不靠谱,但它奏效了。facebook现在正在推动Maven Central的官方LIB:伟大的解决方案!谢谢我得到这个错误:“找不到工具aapt。请提供正确的Android SDK目录路径作为配置参数”。通过将插件版本更改为3.6.0修复了此问题,建议如下:
mvn clean install
<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <sdk>
            <platform>${android.platform}</platform>
        </sdk>
    </configuration>
</plugin>
<plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>android-maven-plugin</artifactId>
    <version>3.4.1</version>
    <configuration>
        <sdk>
            <platform>${android.platform}</platform>
        </sdk>
    </configuration>
</plugin>