使用Lib文件夹Android / Maven更改包装名称

时间:2013-03-21 23:12:04

标签: android maven

我正在为我的项目构建流程。基本上我想从同一个源构建2个应用程序。我使用不同的配置文件来执行此操作。

我已设法配置maven更改应用内的名称和网址。我还需要更改包装,以便两个应用程序可以同时在设备上。

我的项目设置了父POM和2个子POM

第一个子POM是一个包装为APKlib的库。打包是com.companylib

第二个子POM是创建实际的APK并引用apklib。这打包为com.company。

目前我正在使用此配置更改清单中的打包。

               <plugin>
                   <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                   <artifactId>android-maven-plugin</artifactId>
                   <inherited>true</inherited>
                   <configuration>
                       <renameManifestPackage>${manifest_pakage}</renameManifestPackage>
                       <sign>
                           <debug>false</debug>
                       </sign>
                       <zipalign>
                           <verbose>true</verbose>
                           <inputApk>${project.build.directory}/${project.artifactId}.apk</inputApk>
                           <outputApk>${project.build.directory}/${project.artifactId}-signed-aligned.apk
                           </outputApk>
                       </zipalign>
                       <manifest>
                           <debuggable>true</debuggable>
                           <versionCodeAutoIncrement>true</versionCodeAutoIncrement>
                       </manifest>
                       <proguard>
                           <skip>true</skip>
                       </proguard>

                   </configuration>
                   <executions>
                       <execution>
                           <id>manifestUpdate</id>
                           <phase>process-resources</phase>
                           <goals>
                               <goal>manifest-update</goal>
                           </goals>
                       </execution>
                       <execution>
                           <id>alignApk</id>
                           <phase>package</phase>
                           <goals>
                               <goal>zipalign</goal>
                           </goals>
                       </execution>
                   </executions>
               </plugin>

我在我使用的不同配置文件中定义了manifest_pakage。这是在第一个孩子POM中定义的。

两个配置文件都很好,我可以在同一台设备上安装。但是当roboguice尝试引用APKLIB时,我在登台应用程序上遇到了问题。我收到以下错误...

 FATAL EXCEPTION: main
 com.google.inject.ConfigurationException: Guice configuration errors:
 1) No implementation for com.companylib.ServerComms.Senders.StringSenderImp annotated with @com.google.inject.name.Named(value=json) was bound.
   while locating com.companylib.ServerComms.Senders.StringSenderImp annotated with @com.google.inject.name.Named(value=json)

所以似乎apklib上的包装没有改变。奇怪的是,我在生产中更换包装并且工作正常(我用相同的包装替换它)。

在设置这样的构建时,我是否应该期望构建更改lib的包装?

如果lib与主应用程序的包名称不同,可以吗?

1 个答案:

答案 0 :(得分:0)

就我而言,我是这样做的并且让它运转起来。 (我正在使用Eclipse IDE)

  1. 选择项目并为旧包名执行file search并替换为新包名称。 (这将替换项目文件中的所有旧包名称)

  2. 右键点击package --> Refactor --> Rename。替换为新的包名称。这将取代包配置。

    (如果你在第一步之前这样做,如果你有 .YourActivity而不是整个包名 (com.project.package.name.YourActivity)在你的清单中声明, 它可能会导致错误)

  3. 再次选择项目并进行文件搜索。这次,如果您使用AndroidAnnotations,它将显示带注释的文件,并在此替换新的包名称将替换其导入。

  4. 注意:如果您使用自己的插件或具有旧包名称的库,则可能必须确保它在子pom.xml中是相同的,因为它也将被替换

    希望这会有所帮助..! :)快乐的编码..!