我想在我的项目中使用RecyclerViewLib并为此我下载并将其作为模块导入我空的"hello world"Android项目.我正在使用android studio v1.0.1使用sdk manager v24,这是我的app/build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion "19.1.0"
defaultConfig {
applicationId "com.example.mk.dragdrop4"
minSdkVersion 14
targetSdkVersion 17
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
Run Code Online (Sandbox Code Playgroud)
这是我的library/build.gradle
apply plugin: 'com.android.library'
android {
compileSdkVersion 17
buildToolsVersion "19.1.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 17
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
buildTypes { …Run Code Online (Sandbox Code Playgroud) android gradle import-module android-studio android-gradle-plugin
当我开发Android应用程序时,我有一个我作为单独的Android Studio项目创建的库,可以通过将其插入到新项目中来使用它.我通过选择"文件|新建|导入模块..."选项插入库.
问题是,导入后,Gradle会创建我的库的硬拷贝.如果我更改主外部项目中的库代码,则使用该库的项目内的代码将不会更新.
我如何拥有一个图书馆并在众多项目中分享?我需要在一个地方更改库,然后所有其他使用它的项目都会获得更新.
我发现这篇文章也没有答案:
Powershell有两种方法可以将其他cmdlet导入会话,即Add-PsSnapIn和Import-Module.关于何时选择一个而不是另一个,文档并不清楚.有人知道这些之间的区别吗?
ConfigParser是Python 备受争议的 vanilla配置解析器.
但是你可以简单地import config在哪里config.py有python代码来设置配置参数.
这两种配置方法的优点是什么?我什么时候应该选择?
如果我想从我的主要PowerShell脚本中分离出我的一些功能,我可以将其作为.ps1文件和点源编写相同,或者我可以创建它作为a .psm1并导入相同的使用Import-Module.
哪一个更好,为什么?
在导入我的powershell模块之前(MyModule.psm1),我已经写了一个函数:
Function T1()
{
Write-Host "T1 is just called" -ForegroundColor red
}
Run Code Online (Sandbox Code Playgroud)
在我的MyModule.psd1:
@{
PowerShellVersion = '2.0'
PowerShellHostName = ''
PowerShellHostVersion = '2.0'
RequiredModules = @()
ScriptsToProcess = @()
NestedModules = @()
FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
ModuleList = @()
FileList = @()
}
Run Code Online (Sandbox Code Playgroud)
这是导入正常,当我复制两个文件时:
C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule
我可以T1在我的PowerShell会话中运行.但现在我想在同一个模块中添加一个新功能,即:
Function T2()
{
Write-Host "Its now T2.." -ForegroundColor red
}
Run Code Online (Sandbox Code Playgroud)
即使在重新启动我的PowerShell会话后,它仍然无法识别T2,但T1仍然可以正常工作.如何编辑已导入的模块,以便立即进行更改.
早上!
我创建了一个小型NDK项目,它允许通过JNI在Java和C++之间动态序列化对象.逻辑的工作原理如下:
Bean - > JavaCInterface.Java - > JavaCInterface.cpp - > JavaCInterface.java - > Bean
问题是我想在其他项目中使用此功能.我从项目中分离出测试代码并创建了一个"Tester"项目.测试人员项目将Java对象发送到C++,然后将其回送到Java层.
我认为链接非常简单 - (NDK/JNI的"简单"通常是令人沮丧的一天)我将JNIBridge项目添加为源项目,并将以下行添加到Android.mk:
NDK_MODULE_PATH=.../JNIBridge/jni/"
JNIBridge/JNI/JavaCInterface/Android.mk:
...
include $(BUILD_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
JNITester/JNI/Android.mk:
...
include $(BUILD_SHARED_LIBRARY)
$(call import-module, JavaCInterface)
Run Code Online (Sandbox Code Playgroud)
一切正常.依赖JavaCInterface模块头文件的C++文件工作正常.此外,Java类可以愉快地使用JNIBridge项目中的接口.所有的链接都很开心.
不幸的是,包含本机方法调用的JavaCInterface.java无法看到位于静态库中的JNI方法.(从逻辑上讲,它们位于同一个项目中,但都通过上述机制导入到您希望使用它们的项目中).
我目前的解决方案如下.我希望有人可以建议一些能够保持我正在努力实现的模块性的东西:
我目前的解决方案是在调用项目中包含JavaCInterface cpp文件,如下所示:
LOCAL_SRC_FILES := FunctionTable.cpp $(PATH_TO_SHARED_PROJECT)/JavaCInterface.cpp
Run Code Online (Sandbox Code Playgroud)
但我宁愿不这样做,因为如果我改变了JavaCInterface架构,我会需要更新每个依赖项目.
我可以在每个本地项目中创建一组新的JNI方法签名,然后链接到导入的模块.同样,这会严格限制实现.
以前使用PowerShell 3.升级到PowerShell 4并在面临错误时将其卸载.
Import-Module : The specified module 'SQLPS' was not loaded because no valid module file was found in any module directory.但是所有与SQL相关的东西都没有错误.PowerShell控制台中出现此错误的根本原因是什么?
我一直在尝试使用ShouldProcess方法编写支持-whatif的安全代码,这样我的用户就可以了解cmdlet在真正运行之前应该做什么.
但是我遇到了一些障碍.如果我用-whatif作为参数调用脚本,$ pscmdlet.ShouldProcess将返回false.一切都很好.如果我调用在同一文件中定义的cmdlet(具有SupportsShouldProcess = $ true),它也将返回false.
但是,如果我调用另一个模块中定义的cmdlet,我已使用Import-Module加载,它将返回true.-whatif上下文似乎没有传递给另一个模块中的调用.
我不想手动将标志传递给每个cmdlet.有没有人有更好的解决方案?
这个问题似乎与这个问题有关.但是,他们并没有谈论跨模块问题.
示例脚本:
#whatiftest.ps1
[CmdletBinding(SupportsShouldProcess=$true)]
param()
Import-Module -name .\whatiftest_module -Force
function Outer
{
[CmdletBinding(SupportsShouldProcess=$true)]
param()
if( $pscmdlet.ShouldProcess("Outer"))
{
Write-Host "Outer ShouldProcess"
}
else
{
Write-Host "Outer Should not Process"
}
Write-Host "Calling Inner"
Inner
Write-Host "Calling InnerModule"
InnerModule
}
function Inner
{
[CmdletBinding(SupportsShouldProcess=$true)]
param()
if( $pscmdlet.ShouldProcess("Inner"))
{
Write-Host "Inner ShouldProcess"
}
else
{
Write-Host "Inner Should not Process"
}
}
Write-Host "--Normal--"
Outer
Write-Host "--WhatIf--"
Outer -WhatIf
Run Code Online (Sandbox Code Playgroud)
模块:
#whatiftest_module.psm1
function InnerModule …Run Code Online (Sandbox Code Playgroud) 我在使用Powershell调用Import-Module时遇到了问题,并且会对一些建议表示感谢.
根据之前的问题和答案,在尝试使用PowerShell导入模块时收到以下错误,可以忽略:
文件被跳过,因为它已经存在于"Microsoft.PowerShell"中.
问题是如果import命令在try/catch语句中,它将被捕获.
我已经阅读了很多关于此的帖子(SCOM上的PowerShell示例无法导入模块),并且有人提到尝试在Import-Module命令中添加"-ErrorAction SilentlyContinue",但不幸的是,这没有任何区别.
下面是我目前用来测试问题的代码,它可以让你更好地理解我想要实现的目标.
有没有人设法在模块导入时成功忽略这些警告,同时包装在try/catch之前?
谢谢你的时间,
安德鲁
function load_module($name)
{
if (-not(Get-Module -Name $name))
{
if (Get-Module -ListAvailable | Where-Object { $_.name -eq $name })
{
Import-Module $name
return $true
}
else
{
return $false
}
}
else
{
return $true
}
}
$moduleName = "ActiveDirectory"
try
{
if (load_module $moduleName)
{
Write-Host "Loaded $moduleName"
}
else
{
Write-Host "Failed to load $moduleName"
}
}
catch
{
Write-Host "Exception caught: $_"
}
Run Code Online (Sandbox Code Playgroud) import-module ×10
powershell ×6
android ×2
android-ndk ×1
configparser ×1
gradle ×1
module ×1
python ×1
sqlps ×1