0

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

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

我的项目设置有一个父 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 的包名与主应用程序不同,可以吗?

4

1 回答 1

0

就我而言,我这样做并让它工作。(我正在使用 Eclipse IDE)

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

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

    (如果您在第一步之前执行此操作,并且您 在清单中声明的.YourActivity​​不是整个包名(com.project.package.name.YourActivity),则可能会导致错误)

  3. 再次选择项目并进行文件搜索。这一次它会显示带注释的文件,如果你正在使用AndroidAnnotations并且在这里用新的包名替换将替换它的导入。

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

希望这可以帮助..!:) 快乐编码..!

于 2013-04-19T05:38:27.230 回答