我正在为我的项目进行构建过程。本质上,我想从同一来源构建 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 的包名与主应用程序不同,可以吗?