标签: android-maven-plugin

包装android facebook sdk作为apklib与maven

我已经使用maven-android-plugin 3.0.0-alpha-7将facebook android sdk打包为apklib.它看起来像这样:

    $ unzip sdk-1.0-SNAPSHOT.apklib
    Archive:  sdk-1.0-SNAPSHOT.apklib
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF    
  inflating: AndroidManifest.xml     
   creating: assets/
   creating: res/
   creating: res/drawable/
   creating: res/drawable-hdpi/
   creating: res/drawable-ldpi/
  inflating: res/drawable/facebook_icon.png  
  inflating: res/drawable-hdpi/facebook_icon.png  
  inflating: res/drawable-ldpi/facebook_icon.png  
   creating: src/
   creating: src/com/
   creating: src/com/facebook/
   creating: src/com/facebook/android/
  inflating: src/com/facebook/android/AsyncFacebookRunner.java  
  inflating: src/com/facebook/android/DialogError.java  
  inflating: src/com/facebook/android/Facebook.java  
  inflating: src/com/facebook/android/FacebookError.java  
  inflating: src/com/facebook/android/FbDialog.java  
  inflating: src/com/facebook/android/Util.java  
Run Code Online (Sandbox Code Playgroud)

然后我将它安装到我的项目的本地仓库并将其作为maven dep包含...并运行构建我得到这个:

$ mvn clean package android:deploy
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 2.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ myproject-android ---
[INFO] …
Run Code Online (Sandbox Code Playgroud)

android maven facebook-android-sdk android-maven-plugin

8
推荐指数
1
解决办法
3134
查看次数

我如何更改我的AndroidManifest,因为它是由maven打包的

我有maven目标update-manifest在我的项目中工作,并根据我打包的配置文件更新我想要更改的属性; 不幸的是,它会更改源代码管理中的清单.我希望它能够更改打包的清单,但只保留主版本.我没有看到AndroidManifest的一个版本目标/我可以指向它.我正在使用android-maven插件版本3.2

android maven android-manifest android-maven-plugin

8
推荐指数
2
解决办法
1万
查看次数

在Android maven项目中使用Guice验证错误

所以我试图让Guice在我的android maven项目中运行并捆绑在第三方模块中.它在执行测试注入的正常junittest中运行良好,但在VM上失败并且下面附带了logcat消息.

我无法理解的是,有很多关于Guice在android上工作正常的报道.尽管如此,我的代码似乎在从Guice注入器调用getBeanInfo()时失败了.看来我不是唯一一个有这个错误的人.

有没有解决Android错误"无法解析虚拟方法java/beans/PropertyDescriptor"?

所以我有几个问题.是Guice不适合我的原因,因为我的第三方模块正在调用某些功能,这些功能会在任何地方失败但不常见?有没有办法从Guice获得更多信息,具体是什么触发了违规的getBeanInfo()?有工作吗?有什么途径可供我进一步调试.

该解决方案必须与maven兼容,因为针对类似问题调整eclipse设置的类似问题的答案不适用.得到"引起:java.lang.VerifyError:" (不是说我在这里得到了很多里程).

我认为所有相关文件都是由android maven插件由dx处理的,因为依赖:tree显示范围为"compile"的所有相关项目,但我不是这里的专家.

03-05 00:57:34.529: I/dalvikvm(2295): threadid=3: reacting to signal 3
03-05 00:57:34.568: I/dalvikvm(2295): Wrote stack traces to '/data/anr/traces.txt'
03-05 00:57:35.059: I/dalvikvm(2295): threadid=3: reacting to signal 3
03-05 00:57:35.098: W/nalizableReferenceQueue(2295): Could not load Finalizer in its own class loader. Loading Finalizer in the current class loader instead. As a result, you will not be able to garbage collect this class loader. To support reclaiming this class loader, either resolve the underlying issue, or …

android guice maven android-maven-plugin

8
推荐指数
1
解决办法
2414
查看次数

Maven:在装有retrolambda-maven-plugin的应用程序和使用android-maven-plugin的DEX-ed中使用Java 8库

我已经为我的内部使用写了一小组minilibraries.这是使用Maven构建的.这些库的目标是"常规"Java,GWT和Android.其中一些是用Java 8编写的,因为我没有打算在GWT或Android上运行它们,因此其他库是用旧的Java 6编写的,以支持这两个库.我有一个将我的libs完全迁移到Java 8的计划(在语言特性方面),我成功地在尚未发布的GWT 2.8.0上运行Java 8重写库.但是,我不能让Java 8重写的libs为Android应用程序编译.问题是,Retrolambda(retrolambda-maven-plugin插件)似乎只能处理当前的Maven模块类,并完全忽略依赖类.因此,android-maven-plugin打破目标应用程序构建:

[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
[INFO]  at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
[INFO]  at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
[INFO]  at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
[INFO]  at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
[INFO]  at com.android.dx.command.dexer.Main.processClass(Main.java:665)
[INFO]  at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
[INFO]  at com.android.dx.command.dexer.Main.access$600(Main.java:78)
[INFO]  at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
[INFO]  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO]  at com.android.dx.command.dexer.Main.processOne(Main.java:596)
[INFO]  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
[INFO]  at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
[INFO]  at com.android.dx.command.dexer.Main.run(Main.java:230)
[INFO]  at com.android.dx.command.dexer.Main.main(Main.java:199)
[INFO]  at com.android.dx.command.Main.main(Main.java:103)
[INFO] ...while parsing foo/bar/FooBar.class …
Run Code Online (Sandbox Code Playgroud)

android maven java-8 android-maven-plugin retrolambda

8
推荐指数
1
解决办法
1578
查看次数

maven build android项目:指定aidl文件的位置

我的android项目只有aidl文件,项目结构如下:

MyProject/
  src/
     main/
         com.my.aidl/
               IMyService.aidl
  pom.xml
Run Code Online (Sandbox Code Playgroud)

我用maven构建我的android项目.我的pom使用dexguard-maven-plugin,它是android-maven-plugin的扩展.

在插件配置中,我明确指定了source aidl文件的目录和生成的java文件的目录.

<build>
    <plugins>
        <plugin>
           <groupId>com.saikoa.dexguard.maven</groupId>
           <artifactId>dexguard-maven-plugin</artifactId>
           <configuration>
               <aidlSourceDirectory>
                   ${project.basedir}/src/main/com/my/aidl
               </aidlSourceDirectory>

               <genDirectoryAidl>
                    ${project.build.directory}/generated-sources/aidl/main/com/my/aidl
               </genDirectoryAidl>
            </configuration>
            <extensions>true</extensions>
         </plugin>
     </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

但在我运行后,mvn clean install -e我得到以下错误跟踪:

[ERROR] Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources (default-generate-sources) on project MyProject: Execution default-generate-sources of goal com.saikoa.dexguard.maven:dexguard-maven-plugin:6.1.18:generate-sources failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:224)
    at …
Run Code Online (Sandbox Code Playgroud)

android maven aidl android-maven-plugin

8
推荐指数
1
解决办法
765
查看次数

在构建应用程序时,Android-Maven-Plugin v3.4.0无法找到可绘制的资源

最近我开始对我的Android应用程序进行整理.我的方法之一是以下障碍:在构建过程中,maven插件无法找到res目录中布局中使用的drawable.我首先使用android快速启动原型进行了mavenizing:

mvn archetype:generate -DarchetypeArtifactId = android-quickstart -DarchetypeGroupId = de.akquinet.android.archetypes -DarchetypeVersion = 1.0.8

然后我将所有资源复制到archetype生成的res目录.恕我直言这应该足够了.但这是我在mvn clean install之后得到的:

[信息] --- Android的Maven的插件:3.4.0:APK(默认APK)@ missnanny-Android平台的应用程序--- [INFO]复制本地资产文件合并资产目录.[INFO] D:\ Environments\AndroidSDK\android-sdk\platform-tools\aapt.exe [package,-f,-M,D:\ Programming\myproj.com\myproj\myproj-android-app\MyprojManifest.xml ,-S,D:\ Programming\myproj.com\myproj\myproj-android-app\res, - auto-add-overlay,-A,D:\ Programming\myproj.com\myproj\myproj-android-app\target\generated-sources\combined-assets\assets,-I,D:\ Environments\AndroidSDK\android-sdk\platforms\android-7\android.jar,-F,D:\ Programming\myproj.com\myproj \的Myproj-机器人应用内\目标\的Myproj-机器人-APP-0.0.1-SNAPSHOT.ap_]

[INFO] D:\ Programming\myproj.com\myproj\myproj-android-app\res\layout\layout_1.xml:8:错误:错误:找不到与给定名称匹配的资源(在'src'处有值' @可绘制/图像").

我收到很多这样的错误.所有人都说没有资源可以找到某些layout.xml文件.我在上面的日志中更改了项目和资源的名称.真实姓名与myproj不同.但那应该不重要.在mavenizing期间,我只将资源复制到由archetype生成的res目录中.在res文件夹中我:

RES /抽拉RES /抽拉-HDPI RES /抽拉-MDPI RES /抽拉-LDPI RES /布局RES /原始RES /值RES /值-PL

我想提一下,在AndroidManifest.xml中为应用程序图标加载drawable是没有问题的.所有问题都与drawable.xml中的布局和选择器有关

我的pom:

<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>
<parent>
    <groupId>pl.comapny.groupid</groupId>
    <artifactId>projectid</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>appname-android-app</artifactId>
<packaging>apk</packaging>
<name>appname-android-app</name>

<properties>
    <platform.version> 2.1.2 </platform.version>
</properties>

<dependencies>

    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>${platform.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>pl.company.groupid</groupId>
        <artifactId>artifact</artifactId> …
Run Code Online (Sandbox Code Playgroud)

android android-maven-plugin

7
推荐指数
1
解决办法
2542
查看次数

使用Maven构建Android项目时出错:平台/ API级别16不可用

我实际上正在使用maven编译一个android项目:mvn clean install我得到了这个错误,但不明白为什么会发生这种情况

无法在项目helloflashlight上执行目标com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.6.0:generate-sources(default-generate-sources):目标com的执行default-generate-sources. jayway.maven.plugins.android.generation2:android-maven-plugin:3.6.0:generate-sources failed:无效的SDK:平台/ API级别16不可用.

我该怎么办?

android maven android-maven-plugin

7
推荐指数
1
解决办法
4024
查看次数

在Maven Android版本中使用指定的debug.keystore

我知道如何在Android Maven构建中指定发布密钥库,但是在调试版本中没有运气.

可以在此处找到发布版本方法 - https://code.google.com/p/maven-android-plugin/wiki/SigningAPKWithMavenJarsigner.

在进行调试构建时,android-maven-plugin的sign-> debug配置必须为true,并且发布配置必须为false,但是当debug设置为true时,maven-jarsigner-plugin的配置似乎被忽略.

使用时(android-maven-plugin):

<sign>
   <debug>true</debug>
</sign>
Run Code Online (Sandbox Code Playgroud)

并指定一个键(maven-jarsigner-plugin):

<goals>
    <goal>sign</goal>
</goals>
<phase>package</phase>
<inherited>true</inherited>
<configuration>
    <archiveDirectory></archiveDirectory>
    <includes>
        <include>${basedir}/someFolder/target/*.apk</include>
    </includes>
    <keystore>${basedir}/someFolder/debug.keystore</keystore>
    <storepass>android</storepass>
    <keypass>android</keypass>
    <alias>androiddebugkey</alias>
</configuration>
Run Code Online (Sandbox Code Playgroud)

构建将默认使用我的.android目录中的debug.keystore .如果我删除/重命名那里的debug.keystore,它只会创建一个新的.

我想指定debug.keystore的原因是我在一个由几个人组成的团队,我们正在使用Google Maps v2.我们希望在Maps v2 API中使用一个访问令牌而不是每个团队成员一个.

谢谢

编辑:

我目前的解决方法是使用我的repo打包脚本来替换他们的debug.keystore:

cp -r someFolder/debug.keystore ~/.android/debug.keystore
Run Code Online (Sandbox Code Playgroud)

android maven android-maven-plugin

7
推荐指数
0
解决办法
740
查看次数

Android Maven插件 - 如何在部署后自动启动应用程序

我想知道是否有办法启动mvn install android:deploy自动部署的应用程序.如果这在某种程度上可能会加速发展.

android maven android-maven-plugin

6
推荐指数
2
解决办法
2524
查看次数

如何为非maven项目创建apklib

我的android应用程序依赖于来自第三方的android库项目.我正在将我的构建环境切换到maven并且跟随样本已经相当顺利,但最后一步是这个.我不明白我真正需要做什么.我在这里阅读了apklib页面.我从来没有看过一篇关于你实际做得比这篇文章更好的文章.它包含1个你如何引用apklib的片段,但没有关于你如何实际生成它的信息?

此外,我的项目结构如下所示

/projectroot/app   (main application android project source code)
/projectroot/shared/lib1  
/projectroot/shared/lib2 (3rd party lib i don't want to create pom.xml for)
Run Code Online (Sandbox Code Playgroud)

我有projectroot/pom.xml和模块部分,如下所示:

<modules>
    <module>shared/lib1</module>
    <module>shared/lib2</module>
    <module>app</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

这是对的吗?在所有模块示例中,我看到它们引用了直接子项的文件夹,而我的是嵌套的.

我正在寻找的主要内容是如何使lib2成为一个apklib来引用app/pom.xml.

android maven android-library android-maven-plugin

6
推荐指数
1
解决办法
2662
查看次数